最近研究智能路由,在路由器上连接pptp,然后在路由器中执行了以下脚本:
ipset -N vpn iphash
ipset -A vpn 8.8.8.8 #这个是需要走pptp的ip
接着在mangle表中添加了以下规则:
iptables -t mangle -A PREROUTING -m set --match-set vpn dst -j MARK --set-mark 8
最后添加:
ip rule add fwmark 8 table vpn_rt
智能路由匹配工作妥妥的。
但是:
如果我使用以下脚本:
ipset -N whitelist nethash
ipset -A whitelist 150.121.0.0/16 #这个是国内白名单的net
接着在mangle表中添加了以下规则:
iptables -t mangle -A PREROUTING -m set ! --match-set whitelist dst -j MARK --set-mark 8
最后添加:
ip rule add fwmark 8 table vpn_rt #vpn_rt为vpn的路由表
智能路由就工作不成功了。
现在就是不知道是不是应该第一种情况使用的是ipset的iphash,而第二种情况使用的是nethash的原因;也不知道是不是 ! --macth-set的原因。
ipset -N vpn iphash
ipset -A vpn 8.8.8.8 #这个是需要走pptp的ip
接着在mangle表中添加了以下规则:
iptables -t mangle -A PREROUTING -m set --match-set vpn dst -j MARK --set-mark 8
最后添加:
ip rule add fwmark 8 table vpn_rt
智能路由匹配工作妥妥的。
但是:
如果我使用以下脚本:
ipset -N whitelist nethash
ipset -A whitelist 150.121.0.0/16 #这个是国内白名单的net
接着在mangle表中添加了以下规则:
iptables -t mangle -A PREROUTING -m set ! --match-set whitelist dst -j MARK --set-mark 8
最后添加:
ip rule add fwmark 8 table vpn_rt #vpn_rt为vpn的路由表
智能路由就工作不成功了。
现在就是不知道是不是应该第一种情况使用的是ipset的iphash,而第二种情况使用的是nethash的原因;也不知道是不是 ! --macth-set的原因。