iptables -t mangle -A OUTPUT -m set --match-set vpn dst -j MARK --set-mark 0x88
iptables -t mangle -A PREROUTING -m set --match-set vpn dst -j MARK --set-mark 0x88
ip route add default dev vpn table 88
ip rule fwmark 0x88 lookup 88
一直以来都是用如上方式在路由器上部署 vpn 科学上网,本机产生的流量也都能正确分流。 今天突然想到这样做了两次 NAT,于是在路由器上去掉了 vpn 接口的 NAT 规则,然后在 vps 上配置到 lan 侧的路由后,在 lan 上的设备就能正常通过 vpn 访问外网了,但是路由器本身的流量却出现了异常,在 vpn 接口上能看到发包,但是源地址却是 pppoe-wan 的,这样自然回程就不通了。但是
ip rule to 8.8.8.8 lookup 88
或者
ip route add 8.8.8.8 dev vpn
又都能让本机到 8.8.8.8 的流量正常走 vpn 接口。
所以这个的原理是什么?该如何让本机流量根据 MARK 分流呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.