使用具有两个NIC的Linux机箱在两个子网之间进行路由

我有一个有两个NIC的Linux盒子,每个都连接到不同的LAN:

  • networkingA: 192.168.1.0 255.255.255.0
  • networkingB: 192.168.2.0 255.255.255.0

路由器是:

  • 192.168.1.1
  • 192.168.2.1

Linux网卡是:

  • 192.168.1.2
  • 192.168.2.2

我希望networkingA中的所有主机能够ping通networkingB中的所有主机,反之亦然。

到目前为止我所做的是:

在Linux上sudo sysctl -w net.ipv4.ip_forward=1

在192.168.1.1上route add 192.168.2.0 255.255.255.0 gw 192.168.1.2

在192.168.2.1上route add 192.168.1.0 255.255.255.0 gw 192.168.2.2

我尝试了两个不同的Linux发行版(Zentyal和Ubuntu),没有任何工作。

networkingA中的主机只能ping 192.168.2.2 ,但不能ping任何networkingB中的其他主机,反之亦然。 我究竟做错了什么?

您应该设置以下静态路由:

192.168.1.1路由器上:

 192.168.2.0/24 next hop 192.168.1.2 

192.168.2.1路由器上:

 192.168.1.0/24 next hop 192.168.2.2 

这样,这些networking中的其他计算机将数据包发送到其默认网关(.1),然后使用其静态路由表条目将数据包转发到Linux机箱,然后将数据包转发到其他networking。

如果我做对了,你有这个networking:

 +-------+ +----------+ +-----------+ +----------+ +-------+ | LAN A | <---> | Router A | <---> | Linux Box | <---> | Router B | <---> | LAN B | +-------+ +----------+ +-----------+ +----------+ +-------+ 

所以,这是真的:

  • 局域网A中的所有主机都将其默认网关configuration为192.168.1.1;
  • 局域网B中的所有主机都将其默认网关configuration为192.168.2.1;

事实上,局域网A中的主机和局域网B中的主机都不知道其他networking的存在,所以他们会把数据包发送到默认网关。 如果默认网关知道它,并有一个路线进入那里,他们会使用它。 所以,基本上,你必须做的是在你的路由器上创build这些路由,或者把主机的默认网关改为Linux Box。 如果您的路由器没有创build静态路由的选项,或者您根本无法访问它们,则应该转到第二个选项。

如果我弄错了,请澄清一点

氰!

您必须在其他networking的个别框中设定路线。 所以例如在192.168.1.14,你必须route add 192.168.2.0 255.255.255.0 gw 192.168.1.2

如果您的2个networking直接连接到Linux Box,则应在每个主机中添加路由(并根据需要configuration默认网关)。

如果networking连接到通过Linux Box连接的路由器,则应为每个主机configuration正确的网关(路由器1或2)并在每个路由器中configuration路由。

您应该validationLinux Box是否阻止了ICMPstream量。