我想听听您对我的 Linux 路由器设置的意见。假设我有默认 ISP(主路由表)和一个特定的 ISP(路由表custom
)。默认 ISP 开启eth0
,自定义 ISP 开启eth2
。对于默认路由,它是 DHCP 和闪亮的自动路由,自定义路由如下所示:
# echo "4999 custom" >> /etc/iproute2/rt_tables
# ip addr eth2 10.x.y.z netmask 255.255.255.0
# ip -4 route add 0.0.0.0/0 via 10.20.30.40 table custom
# iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
所以现在,任何路由到的内容eth2
都将通过自定义 ISP 进行。效果很好。我想要的是创建一个具有特定 IP 的虚拟接口(VETH?TAP?我不知道),这样我就可以将其提供给我的 LAN 客户端并通过此自定义 ISP 路由它们。我还希望它在跟踪路由期间可见。
局域网有172.16.1.0/24
网络。我尝试过的:
# ip tuntap add name tap0 mode tap
# ip addr add 172.16.1.128 dev tap0
# ip rule add iif tap0 lookup custom
然而,这不起作用。如果我将其指定172.16.1.128
为客户端的默认网关,则 ping 不会通过它。我究竟做错了什么?
更新:
至于初始路由规则:LAN 位于 eth1,我用它来测试自定义 ISP 连接:
ip rule add iif eth1 lookup custom
我知道我可以添加类似基于 fwmark 的规则之类的内容,但随后又回到了 iptbles 来完成所有艰苦的工作(src nat),这又慢又低效。