我有一个带有两个网络接口的 Linux 系统(xxx0 中的 eth0 和 xxy0 中的 eth1)。是否可以添加一些路由策略将所有流量发送到网络 xxy0。我甚至希望将来自 eth0 的流量发送到 eth1 的网络。
我无法从路由表中删除直接连接的网络,因此来自 xxx0 网络的所有流量都会发送到 eth0。我想将所有流量发送到 eth1。
答案1
您需要设置一个仅包含默认路由的备用路由表,标记想要离开默认路由的数据包,然后将标记的数据包转移到备用路由表。
1)创建备用路由表:
echo '1 DEFGW' >> /etc/iproute2/rt_tables
ip route add default via 192.168.0.1 dev eth1 table DEFGW
这将创建一个名为的路由表DEFGW
,其中仅包含默认路由。根据您的配置调整 IP 和接口。
2)安排标记的数据包进入备用表:
ip rule add fwmark 1 table DEFGW
3)标记应遵守我们规则的数据包。
iptables -t mangle -A PREROUTING -d x.x.x.0/255.255.255.0 -j MARK --set-mark 1
这将获取发往x.x.x.0/24
地址的数据包,并对其加上标记 1,该标记会将其转移到表中DEFGW
。根据您的配置调整 IP。我们在路由数据包之前对其进行标记,以便路由引擎知道使用备用表。