routing issue

Ok. I feel a little retarded and maybe its just me… but I’m having problems with routing that I just can’t wrap my head around. I took it back to basics and here the lowdown. I have two opensuse 11.1 boxes with text installs, console tools and firewall options select. They are patched current up to today. They are both configured with two nics. eth0 on each box faces a local network segment. eth1 on each box faces each other.

box 1

eth0 - 172.16.0.3/24
eth1 - 10.4.0.1/24

box 2

eth0 - 192.168.0.31/24
eth1 - 10.4.0.2/24

There are two more workstations, 172.16.0.82, and 192.168.0.21. I have configured all the relevant routes and I am able to ping back and forth to anything in the path. I have completely turned off the firewall on each machine in order to verify that it isn’t interfering. What is baffling me is this. I can’t seem to establish any kind of connection other than an ICMP ping through this link. There is a web server on 192.168.0.21 and it just times out on me. What am I missing here?

Any help would be much appreciated.

OK, this is what I see:

box 0

eth0 - 172.16.0.82

box 1

eth0 - 172.16.0.3/24
eth1 - 10.4.0.1/24

box 2

eth0 - 192.168.0.31/24
eth1 - 10.4.0.2/24

box 3

eth0 - 192.168.0.21

Just to eliminate some issues, I suggest you ping from box 0 to box 3 and ensure that this works, as you have done already. Then disconnect box 3 and ensure that ping is now broken. That should conclusively eliminate routing and addressing issues.

Then try the web server from boxes 3, 2, 1 and 0 in turn. On box 3, browse to 127.0.0.1.

Beyond that I have no idea, but at least it should drag up some facts which will localise the problem somewhere

Try traceroute from one of the end boxes, to the other end, that will show you the route your packets are taking and if the route entries are correctly set up on all the boxes.

Ping works from 0 to 3. Disconnecting 3 breaks the ping. Incidentally, it appears to be pretty much anything that uses tcp. Since this was easier (quicker), here’s the results using ssh.

Box 0 can ssh to box 1, but no further.
Box 1 can ssh to box 0 and 2, but no further.
Box 2 can ssh to box 1 and 3, but no further.
Box 3 can ssh to box 2 but no further.

I haven’t done a lot of multiple interface and routing work with linux, so I’m even a bit at a loss as to how to troubleshoot this thing. I would think routes weren’t in place, but like I say, they can all ping each other without incident. I’m so confused its not funny.

No, don’t be lazy, use traceroute, it’s a just one package to install on Linux.

I suspect you haven’t set up the routing correctly at the end boxes. Routing is stateless and you have to consider both the forward and return paths.

As with the successful ping tests, traceroute is fine. I only have problems when I step up to TCP. That’s what I can’t figure out.

You have turned on IP forwarding boxes 1 and 2? [ping works, which suggests you have done this or there is an interesting observation to be made]

The boxes not only know the routes to their neighbours, but also to other nodes. Box 0 must know that box 3 is reached via box 1. If Box 0 only routes via box 2 but addresses no services hosted on box 2, box 0 need only know that box 2 is reached via box 1, provided box 1 knows the route to box 2 - and the right interface.

Using traceroute should pinpoint where it is going wrong, the above might help pinpoint why.

Traceroute has a -T option to trace using TCP instead of UDP. Have you tried that?

This would look like the source of the problem.

Any chance you could issue:

route -n

on each box and print the results here ?

cheers
J

www.tuxit.co.uk