linux - 在网络之间设置 Linux 路由表

标签 linux routes

我有以下拓扑:

                     VM A                         VM C
                 192.168.56.102               192.168.57.102
                      |                            |
                      |                            |
          (eth0) 192.168.56.103 --[ VM B ] -- 192.168.57.101 (eth1)

我试图让 B 充当两个网络之间的路由器。在尝试从 A 向 C 发送数据报时,我可以看到 192.168.56.103 端的数据包(使用 tcpdump),但看不到数据包在 192.168.57.1​​01 端出站。

我已经验证数据报的目标地址是192.168.57.1​​02,B中的转发表如下:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.56.0    *               255.255.255.0   U     1      0        0 eth0
192.168.57.0    *               255.255.255.0   U     1      0        0 eth1

我也尝试添加此转发规则:

route add -net 192.168.57.0 netmask 255.255.255.0 gw 192.168.57.102 dev eth1

这会产生这个路由表:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.56.0    *               255.255.255.0   U     1      0        0 eth0
192.168.57.0    C.local         255.255.255.0   UG    0      0        0 eth1
192.168.57.0    *               255.255.255.0   U     1      0        0 eth1

我很确定这条规则只是多余的,并且我没有得到任何更好的结果。

如果有帮助的话,这是来自 B 的 ARP 表:

C.local (192.168.57.102) at 08:00:27:12:6b:c9 [ether] PERM on eth1
A.local (192.168.56.102) at 08:00:27:0a:86:a2 [ether] PERM on eth0

我是否缺少可以连接这两个网络的步骤?感谢您的帮助!

最佳答案

您通常需要在计算机上启用 ipv4 路由。

您可以通过发出以下命令来执行此操作:

sysctl -w net.ipv4.ip_forward=1

或者:

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

关于linux - 在网络之间设置 Linux 路由表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23334335/

相关文章:

c++ - 如何阅读整个命令行?

javascript - 使用具有多个 url 和可选参数的 express.Router()

ruby-on-rails-3 - 没有路由匹配 [DELETE] "/models.id"错误

asp.net-mvc-2 - ASP.NET MVC2 和路由

linux - 如何使用rsync对大文件(100GB)进行增量备份?

linux - 在加载期间将参数传递给依赖的内核模块

java - 两台机器上运行的进程之间的通信

linux - 用 awk 解析列

laravel - 如何设置 Laravel 路由重定向到 https?

ruby-on-rails - 如何覆盖 spree 用户api