多个子网之间的路由


10

假设我要创建一个包含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,f​​tp等) 。

Answers:


8

好了,你有五个网络10.0.1.0/2410.0.2.0/2410.0.3.0/2410.0.4.0/24192.168.0.0/24,和四盒它们之间的路由。比方说,路由框有地址10.0.1.1/192.168.0.110.0.2.1/192.168.0.210.0.3.1/192.168.0.3,和10.0.4.1/192.168.0.4

您将需要10.0.x.0/24使用以下命令将静态路由添加到每个路由器盒上的其他网络:(EDITED!):

# 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上面的命令不会使设置持久化,具体操作取决于发行版。

就像我说的,我还没有测试过,可能忘记了一些东西。


感谢您的协助。当我将路由器ping到路由器(从10.0.1.1到10.0.2.1)时,您建议的方法起作用,但是当我对其他主机执行ping操作时,则不能。例如,从10.0.1.1 ping到10.0.2.2将导致没有流量路由到10.0.2.2主机。您是否建议以某种方式进行一些iptables操作?我已经尝试了几天,但无济于事。
greyline's

标准的路由技术应该足够了。这是一份清单:1.所有地址都应在主机上设置(例如ip addr add 10.0.2.2/24 dev eth0),2.路由应在上述四个路由器盒上设置,3.默认路由应将非路由器上的路由器设置为指向网络上的路由盒(例如ip route通过10.0.1.1添加默认值),4.在四个路由器上的cat / proc / sys / net / ipv4 / ip_forward打印“ 1”。
约翰·迈伦(JohanMyréen)

我更正了上面的ip route命令中的一个错误。我实际上也测试了此设置,尽管只有四台机器:10.0.x.0侧的两个路由盒和两个主机。有用!
约翰·迈伦(JohanMyréen)2016年

约翰,谢谢您的额外投入。此设置可以正常工作。原来我使用的Linux映像具有存在问题的默认iptables规则。感谢您帮助我学习这一点。
greyline's
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.