编辑:我刚写完这篇超长的帖子就解决了我的问题。我只是没有在 Windows 防火墙中启用 ping 回复,这就是为什么我无法从网络 1 或 2 ping 网络 0 上的计算机(见下文)。当然,当我尝试 ping 网络 0 上的互联网路由器时,它没有工作,因为我忘记像设置我的 Windows 那样设置非默认网关。
因此,我向您提供“正确”的方法来设置 Linux 机器作为子网之间的简单网关。只需记住正确设置客户端上的所有网关(简单规则:默认网关应该是通向互联网的路由,然后为连接到子网中其他网关的每个子网设置 1 个网关。
我正在使用 Ubuntu Linux 机器创建一个连接 3 个子网的测试网络。这是我的拓扑:
***********************
* Internet Router *
* 192.168.2.1 *
***********************
* ***************
* * Client 0 *
*************** *192.168.2.117*
* Switch * * * * * * * Windows *
*************** ***************
*
* 192.168.2.0/24 = Network 0
*
Network 1 *************** Network 2
192.168.1.0/24 * eth0 * 10.25.0.0/16
* * * * * * * * * * * * * *
* *eth1 eth2* *
* * * *
* * * *
************* * Ubuntu Srvr * *************
*192.168.1.5* *************** * 10.25.0.5 *
* * * *
* client 1 * * client 2 *
* * * *
************* *************
我的 ubuntu 服务器的 /etc/network/interfaces 文件是:
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.2.192
network 192.168.2.0
netmask 255.255.255.0
broadcast 192.168.2.255
gateway 192.168.2.1
# Subnet 1
auto eth1
iface eth1 inet static
address 192.168.1.1
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
auto eth2
iface eth2 inet static
address 10.25.0.1
network 10.25.0.0
netmask 255.255.0.0
broadcast 10.25.255.255
我已net.ipv4.ip_forward=1
在 /etc/sysctl.conf 中取消注释
我还运行了命令echo 1 > /proc/sys/net/ipv4/ip_forward
客户端 1 的默认网关是 192.168.1.1
客户端 2 的默认网关是 10.25.0.1
网络 0 上的客户端 0 有 3 个网关:
- 默认值:192.168.2.1(互联网路由器)
- 192.168.1.0/24:192.168.2.192(ubuntu eth0)
- 10.25.0.0/16:192.168.2.192(ubuntu eth0)
我正在使用 ping 测试此设置。
- 我可以从网络 0 ping 任意网络上的任意计算机。
- 我可以从网络 1 或 2 ping 网络 1 或 2 上的任何计算机。
- 问题是我无法 ping网络 1 或 2 上的网络 0 上的任何计算机
使用 iptraf,我看到 ping 请求来自 eth1 上的 192.168.1.5 到 192.168.2.117
然而,我没有看到回复。
... 刚刚搞明白了(参见开头的编辑)。如果你读到这里,很抱歉让你失望了。
答案1
就在我完成这篇超长的帖子时,我解决了这个问题。我只是没有在 Windows 防火墙中启用 ping 回复,这就是为什么我无法从网络 1 或 2 ping 网络 0 上的计算机(见下文)。当然,当我尝试 ping 网络 0 上的互联网路由器时,它没有工作,因为我忘记像设置 Windows 那样设置非默认网关。
因此,我向您提供“正确”的方法来设置 Linux 机器作为子网之间的简单网关。只需记住正确设置客户端上的所有网关(简单规则:默认网关应该是通向互联网的路由,然后为连接到子网中其他网关的每个子网设置 1 个网关。