我有几个网关,希望根据目的地将一些流量从不同的网关路由出去。我猜我需要结合使用 iproute2 和 iptables 规则,但不知道从哪里开始。
有人可以举个例子吗?
答案1
你也许可以做你想做的事ip route
:
ip route add 8.8.8.8 via 10.0.0.1 dev enp3s8
ip route add 10.0.0.0/24 dev eth0
第一个ip route add
显示单个 IP 地址,将给定的以太网接口 (ep3s8) 发送到下一跳路由器 10.0.0.1
第二条路由针对整个网络 10.xyz,发送给定的以太网卡 eth0。这就是“本地网络”,它没有下一跳路由器,它们都位于同一条逻辑线路上。
不过,在做任何事情之前你都想阅读man ip-route
。另外,请做好重新启动的准备,并且不要远程执行此操作。您可以很容易地创建错误的路由来终止您的远程访问。我是最后一条建议中的经验之声。
答案2
答案3
阅读源基础路由的好地方是Linux 高级路由和流量控制。
您还可以从命令行阅读手册:
man ip rule
man ip route
注意:在某些系统上,您可能需要执行man ip-rule
和man ip-route
。或者您可以在线阅读: 规则 和 路线。警告:在线版本可能不完全相同的
到您系统上的版本。
一般来说,您应该添加一条规则。我在示例中指定了一个接口 (eth1)。这是可选的并且可以省略。
# ip rule add dev eth1 to 170.10.0.10 table 2 priority 20000
分解:
dev eth1
– 将用于发送数据包的设备to 170.10.0.10
– 目的地table 2
– 您应该在其中添加路线的表priority 20000
– 规则的优先级
您可以通过运行以下命令来查看您的规则:
# ip ru sh
0: from all lookup local
20000: from all to 170.10.0.10 iif eth1 lookup 2
32766: from all lookup main
32767: from all lookup default
接下来,您应该添加路由,并指定将添加它们的表。在这种情况下,它将是表 2。
# ip route add table 2 via 170.10.0.1 default
为了查看您的路线,您应该运行:
# ip route show ta 2