For a driver test I'm working on, I need to connect 2 Linux machines through a third Linux machine which acts as a router. Each machine has a proprietary network device with 2 ports so that one port is under subnet 11.x.x.x, and the second under subnet 12.x.x.x. The service port through which I remotely connect is under 10.x.x.x subnet. The test is done only on the proprietary devices in the 11 and 12 subnets.
An illusatration of the machines configuration:
A(22.214.171.124) <-> B(126.96.36.199) ||- C(188.8.131.52)
A(184.108.40.206) -|| B(220.127.116.11) <-> C(18.104.22.168)
(Literal description of the illustration: A's fist port is connected to B's first port, B's second port is connected to C's second port, and A's second port, and C's first port are disconnected.)
I've configured B (the routing machine) to forward IP requests. Then I configured A and C using the
ip route shell command like so:
ip route add "22.214.171.124/16" via 126.96.36.199
ip route add "188.8.131.52/16" via 184.108.40.206
This works. I ping 220.127.116.11 from A with any packet size and it works, and vice versa. The problem is that my TCP code doesn't work properly between A and C. It only works with adjacent machines like A+B and B+C.
A simple python script that sends an
"Hello World!" string over TCP works, but when the same script sends message larger than 1450 bytes, nothing goes through. The connection is established between the 2 hosts, but the information doesn't come through. It's important to mention here again that ping with packets larger than 1450 bytes works.
I think I'm probably doing something wrong here with the configuration of the routing machine or incomplete configuration in the
What could cause such a problem?