我想将两个网络互连。
每个网络都应该通过运行 Ubuntu 的 PC 连接到另一个网络。
因此,我有三个网络:NW1:192.168.1.x NW2:192.168.2.x 和 MgmtNW:192.168.3.x,连接方式如下:
NW1--Ubuntu1---MgmtNW---Ubuntu2--NW2
现在,通过我所设置的设置,我可以从路由器“Ubuntu1”上“看到” NW2 中的一台计算机,但令人惊讶的是,我无法从路由器 Ubuntu2 上看到 NW1 中的另一台计算机。我无法从 NW1 中的客户端上看到 NW2 中的客户端。
我的设置如下:
每个 Ubuntu 服务器在 MgmtNW(192.168.3.x)中配置了一个网络接口,在 NW1 和 NW2 中分别配置了另一个网络接口。
Ubuntu1 的接口设置如下:192.168.1.10 192.168.3.10
Ubuntu2 的接口设置如下:192.168.2.20 192.168.2.20
我net.ipv4.ip_forward=1
在两个路由器上都设置过了。
此外我还配置了以下路线:
在 Ubuntu1 中:
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.3.20 #20 is the Ubuntu2 interface into mgmt NW
在 Ubuntu2 中:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.3.10 #10 is the Ubuntu1 interface into mgmt NW
192.168.1.x 中机器的默认 GW 是 192.168.1.10(Ubuntu1),192.168.2.x 中机器的默认 GW 是 192.168.2.20(ubuntu2)。
我遗漏了什么?我必须添加 iptables 规则吗?
提前致谢。
答案1
默认情况下,您不需要设置防火墙规则 - 每个数据包都会被接受。
请避免在现代 Linux 发行版中使用 net-tools 集合中的实用程序(route
在您的示例中)-其中大多数都是过时的现在iproute2 实用程序。有ip route
一个工具可满足您的需要,请查看手册页:man ip-route
。
如果ip address
命令显示 ip 是正确的,ip route
表明您有到所有子网的路由(本地子网也是如此,具有正确的掩码)并且 ip 转发已启用 - 一切都必须正常工作。
您可以使用tcpdump
它来查找丢失数据包的接口。顺便说一句,Windows 机器默认情况下可能不响应 ping 请求。