无法从不同子网访问多宿主 Ubuntu

无法从不同子网访问多宿主 Ubuntu

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

2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 190.113.X.X/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.X网络的另一个子网访问 eth0 链路上的服务器时,我都得不到任何响应。我已经iptables在服务器中运行(假设它在 eth1 中有一个公共 IP),但我允许 eth0 链路上来自私有网络的所有流量。

如果我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.X.X dev eth1 
190.113.X.X/29 dev eth1  scope link  src 190.113.X.X

默认:

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.X.X/29 dev eth1  proto kernel  scope link  src 190.113.X.X 

答案1

客户端还需要知道到 10.100.100.0/24 网络的路由。

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

ip r a 10.100.100.0/24 via 10.100.100.1 dev eth0

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

您可以这样想:客户端需要知道如何到达 10.100.100.21,如果不知道,它将尝试默认网关,如果网关不知道,那么您就倒霉了。

相关内容