我不熟悉 CentOS,我需要帮助来完成路由。我有一个带有 3 个 NIC 的 CentOS 盒子。
eth0 Link encap:Ethernet
inet addr:10.50.121.16 Bcast:10.50.121.255 Mask:255.255.255.0
eth1 Link encap:Ethernet
inet addr:10.50.128.134 Bcast:10.50.128.255 Mask:255.255.255.0
eth2 Link encap:Ethernet
inet addr:10.50.140.97 Bcast:10.50.140.255 Mask:255.255.255.0
eth0 是一个现有接口,它具有默认路由,我添加了 eth1 和 eth2。eth1 和 eth2 段上有网关(两者上的 .1 地址)。我需要在 eth1 和 eth2 NIC 之间建立一些网络流(通过它们各自的网关)来进行一些测试。所以我想我需要为此设置策略路由?
编辑:抱歉,我并没有说我试图在两个新接口之间路由数据包。我需要通过一些基础设施将一些数据包从 eth1 的 IP 发送到 eth2 的 IP(从而模拟 eth1 的 vlan 和 eth2 的 vlan 之间的对话)。所以我想这样做 eth1 -> eth1-vlan-router -> ??? -> eth2-vlan-router->eth2,然后能够使用反向路由进行回复。我的错,这里没有完全说清楚。
答案1
修改/etc/sysctl.conf
并启用ipv4路由。
net.ipv4.ip_forward = 1
然后运行sysctl -p
以应用设置。
要显示 的当前值net.ipv4.ip_forward
,请使用:
sysctl net.ipv4.ip_forward
答案2
您将无法使用标准网络 API 来执行此操作。
Linux 网络堆栈使用所谓的弱宿主模型,这特别意味着分配给本地接口的任何地址都被视为本地地址。如果您尝试将数据包发送到本地接口,它将在本地循环,并且永远不会到达网络。
虽然您可能可以使用原始套接字来解决一些问题,但最好的解决方案很可能是使用第二台主机,或许可以作为虚拟机实现。