多个子网之间的路由

多个子网之间的路由

假设我想创建一个具有 4 个子网的内部网络。没有中央路由器或交换机。我有一个“管理子网”可用于链接所有四个子网上的网关(192.168.0.0/24)。一般图如下所示:

10.0.1.0/24 <-> 10.0.2.0/24 <-> 10.0.3.0/24 <-> 10.0.4.0/24

换句话说,我在每个子网上配置了一个 linux 盒子,有 2 个接口:10.0.x.1 和 192.168.0.x。它们充当每个子网的网关设备。每个 10.x/24 子网将有多个主机。其他主机将只有 1 个接口可用作 10.0.xx

我希望每个主机都能够 ping 任何其他子网上的其他主机。我的问题是:这可能吗?其次,如果是这样,我需要一些配置 iptables 和/或路由的帮助。我一直在尝试这一点,但只能提出一种允许单向 ping 的解决方案(icmp 数据包只是一个示例,我最终希望主机之间具有完整的网络功能,例如 ssh、telnet、ftp 等) 。

答案1

好的,所以您有五个网络10.0.1.0/2410.0.2.0/2410.0.3.0/24和,以及四个在它们之间路由的盒子。假设路由盒的地址为、、和。10.0.4.0/24192.168.0.0/2410.0.1.1/192.168.0.110.0.2.1/192.168.0.210.0.3.1/192.168.0.310.0.4.1/192.168.0.4

您将需要10.0.x.0/24在每个路由器盒上添加至其他网络的静态路由,使用如下命令(已编辑!):

# on the 10.0.1.1 box
ip route add 10.0.2.0/24 via 192.168.0.2
ip route add 10.0.3.0/24 via 192.168.0.3
ip route add 10.0.4.0/24 via 192.168.0.4

以及其他路由器盒上的相应路由。在只有一个接口的非路由盒上,将默认路由设置为指向10.0.x.1。当然,您还必须在所有接口上添加静态地址和网络掩码。

另请注意,Linux 默认情况下不充当路由器,您需要使用以下命令启用数据包转发:

echo 1 > /proc/sys/net/ipv4/ip_forward

上面的命令ip不会使设置持久化,如何做到这一点取决于发行版。

正如我所说,我还没有测试过这个,可能忘记了一些东西。

答案2

之前接受的答案忽略了这样一个事实:如果四台主机中的每一台只有两个接口,那么如果没有中央路由器或交换机,它只能直接连接到两个网络。

如果它使用这两个接口之一连接到自己子网上的客户端,那么它只有一个接口连接到其他三台主机。

因此,您需要一个中央路由器或交换机在这四台主机之间运行,或者每台主机上需要更多接口。

相关内容