策略路由 iproute2+纯 ip 和 iptables+ipset 有区别?

2015-01-11 18:50:38 +08:00
 Creed
tomato的路由器上用iptables+dnsmasq自动给指定域名解析得到的IP打上fwmark,然后配合ip rule 匹配相应的路由表,但是问题来了:

VPN客户端拨号后建立了MASQUERADE

1:这个方案是纯手动操作的:成功。
VPN拨号后,
ip rule add to xxx.xxx.xxx.xxx table 100
ip route add default dev $vpn_dev table 100
ip route flush cache

xxx换成twitter的ip,访问成功。

2:这个方案不管手动还是自动都失败:
VPN拨号时候自动添加路由规则
ip route add default dev $vpn_dev table 100

ip rule,iptables和ipset命令都是路由开机就自动执行。

dnsmasq里面设置ipset=/twitter.com/vpn和server=/twitter.com/127.0.0.1#dnscrypt_port

tracert twitter.com的结果从vpn客户端IP节点之后全部无响应,直到30跳结束。
ping twitter.com无响应。
twitter页面无法访问。


两种方案对比了iptables 规则除了后者多了MARK,其余无差别。但是后者估计被路由丢包了,但是想不通为啥会这样。

求指教。
7029 次点击
所在节点    问与答
2 条回复
efi
2015-01-11 19:12:01 +08:00
iptables不用设计用来做路由的,路由的问题不要往这方面想。
squallvivi
2015-02-28 11:27:46 +08:00
前些日子也用openwrt倒腾策略路由,一开始也碰到同样的问题,后来发现IP打fwmark分流的命令要放在ip route,ip rule规则之后才奏效

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/161176

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX