无法从不同的子网到达多宿主的Ubuntu

我有一个多宿主的Ubuntu 12.04服务器。 我有两个networking接口连接到两个不同的IP范围。

2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 inet 190.113.XX/29 brd 190.113.98.183 scope global eth1 (...) 3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 inet 10.100.100.21/24 brd 10.100.100.255 scope global eth0 (...) 

每当我尝试从另一个不属于10.100.100.Xnetworking的子网访问eth0链路上的服务器时,我都没有得到任何回应。 我有iptables在服务器上运行(因为它在eth1中有一个公共的IP),但我允许来自eth0链路上的专用networking的所有stream量。

如果我在服务器的接口上做一个tcpdump我有这个(我的电脑是10.100.102.22 ):

 18:30:23.813889 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.100.102.22 tell 10.100.100.21, length 28 18:30:24.810691 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.100.102.22 tell 10.100.100.21, length 28 18:30:25.810718 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.100.102.22 tell 10.100.100.21, length 28 

我可以从服务器ping到我的电脑:

 PING 10.100.102.22 (10.100.102.22) 56(84) bytes of data. 64 bytes from 10.100.102.22: icmp_req=1 ttl=63 time=0.273 ms 64 bytes from 10.100.102.22: icmp_req=2 ttl=63 time=0.324 ms 

路由表如下:表1:

 default via 10.100.100.1 dev eth0 10.0.0.0/8 dev eth0 scope link src 10.100.100.21 

表2:

 default via 190.113.XX dev eth1 190.113.XX/29 dev eth1 scope link src 190.113.XX 

默认:

 default via 10.100.100.1 dev eth0 metric 100 10.100.100.0/24 dev eth0 proto kernel scope link src 10.100.100.21 190.113.XX/29 dev eth1 proto kernel scope link src 190.113.XX 

客户端也需要知道到10.100.100.0/24networking的路由。

所以你需要在客户端添加一个路由

 ip ra 10.100.100.0/24 via 10.100.100.1 dev eth0 

或者您需要在客户端使用的默认网关上添加路由。

你可以这样想:客户端需要知道如何到达10.100.100.21,如果没有,它会尝试默认的网关,如果网关不知道,你是不走运的。