- 论坛徽章:
- 0
|
有幸看到coolend的关于双线策略路由的三种实现方式总结+端口映射[完结]的帖子
原文帖子链接如下
http://bbs.chinaunix.net/thread-2042243-1-1.html
其中第三种方式实现如下
3. iptables打标记+iproute2 fwmark
1)使用 CONNMARK 对连接进行标记
外网进来数据
iptables -t mangle -A PREROUTING -i eth1 -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x100
iptables -t mangle -A PREROUTING -i eth2 -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x200
转发出去的数据
iptables -t mangle -A POSTROUTING -o eth1 -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x100
iptables -t mangle -A POSTROUTING -o eth2 -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x200
局域网进来数据
iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j CONNMARK --restore-mark
本地出去数据
iptables -t mangle -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j CONNMARK --restore-mark
2)在 IPROUTE2 中做基于 fwmark 的策略路由
ip rule add fwmark 0x100 table ctc prio 40
ip rule add fwmark 0x200 table cnc prio 40
3)添加原路返回路由
ip route add table ctc to $CTC_NET dev eth1 scope link
ip route add table ctc to $CNC_NET dev eth2 scope link
ip route add table ctc to 192.168.0.0/24 dev eth0 scope link
ip route add default via 电信网关 dev eth1 table ctc
ip route add table cnc to $CTC_NET dev eth1 scope link
ip route add table cnc to $CNC_NET dev eth2 scope link
ip route add table cnc to 192.168.0.0/24 dev eth0 scope link
ip route add default via 网通网关 dev eth2 table cnc
通过上面的iptables规则我只能理解到的意思是从eth1 eth2进来的数据包给打上标记,还有就是通过eth1 eth2做NAT得数据包也给打上标记,
然后就是局域网进来的数据包和本地数据的ESTABLISHED,RELATED也给打上链接的标记
我现在理解为如果从eth1 eth2进来的数据包首先给打上标记,然后返回也是根据标记从相应的eth1 eth2返回。通过外面访问然后原路返回我是理解一点了,
但是那要是我现在局域网内的一台电脑访问外网的话,他还能打上标记然后根据标记路由么,他该根据那条规则打上路由标记,从不通的eth1 eth2接口出去呢,谢谢
|
|