我有一个盒子 (192.168.1.2),它连接到 VPN 并创建了隧道。此盒子有一个 192.168.1.1 默认网关,这是我的路由器的内部地址。我的网络的其余部分将 192.168.1.2(上述 Linux 盒子)作为其默认网关(通过 DHCP)。我按如下方式设置了我的 iptables:
sudo iptables -A FORWARD -i any -o tun+ -s 192.168.1.0/24 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE
这个想法是,当隧道开启时,所有网络流量都会经过 Linux 机器,而当隧道关闭时,流量就不会流动。
我曾在我之前的盒子上运行过它,但现在似乎配置中缺少了一些东西。
当隧道启动时,一切都正常,但是当隧道关闭时,我可以看到所有的流量都尝试 192.168.1.2,然后尝试 192.168.1.1,尽管它没有在任何客户端中配置。
tcpdump 显示,对于 ICMP 流量,192.168.1.2 正在发送 REDIRECT 消息。
我禁用了 icmp 重定向,除此之外它仅适用于 ICMP 并且不会影响其余协议(AFAIU),但当隧道关闭时,流量(正如我预期的那样)仍然流经 192.168.1.1。
我禁用了 accept_source_route 但什么都没有改变。
经过几个小时的研究,我还是不知道该查找什么。为什么我的流量被转发到客户端中未配置的网关?