Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1673502
  • 博文数量: 782
  • 博客积分: 2455
  • 博客等级: 大尉
  • 技术积分: 4140
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-06 21:37
个人简介

Linux ,c/c++, web,前端,php,js

文章分类

全部博文(782)

文章存档

2015年(8)

2014年(28)

2013年(110)

2012年(307)

2011年(329)

分类: LINUX

2013-01-21 18:14:09

双线策略路由的三种实现方式总结+端口映射  

2013-01-10 17:20:13|  分类: 安全-rhel_iptabl |  标签: |字号 

双线策略的实现

1. 静态路由方式(这种方式是最简单的)

1) 设置默认路由,比如电信
ip route replace default via 电信网关 dev eth1

2) 设置策略路由,对另外一条线路

ip route add 网通路由表1 via 网通网关 dev eth2 metric 1
ip route add 网通路由表2 via 网通网关 dev eth2 metric 1
....

3) 添加原路返回路由

    策略路由规则设置完后,还要为每条线路加入相应的 “原路返回路由”(从哪条线进来的数据,最终还是从这条线出去),不然就会出现这样的问题:
电信用户通过网通的IP访问不到服务器,网通用户也不能通过电信IP访问到服务器

ip route flush table 100
ip route add default via 电信网关 dev eth1 src 电信IP table 100 prio 50
ip rule add from 电信IP table 100

ip route flush table 200
ip route add default via 网通网关 dev eth2 src 网通IP table 200 prio 50
ip rule add from 网通IP table 200

出来加入本身的原路返回路由之外,还应加入局域网接口的,不然通过端口映射后,内网无法通过外网IP访问到映射后的服务器
ip route add 192.168.0.0/24 dev eth0  scope link  src 192.168.0.1 table 100
ip route add 192.168.0.0/24 dev eth0  scope link  src 192.168.0.1 table 200


2. 策略路由方式

为了方便,我们增加2个策略路由表,电信 => 100,网通 => 200,这样再添加规则时,就可以直接用自定义的名称来替代数字

echo "100 ctc" >>  /etc/iproute2/rt_tables
echo "200 cnc"  >> /etc/iproute2/rt_tables

1)设置默认路由(电信)
ip route replace default via 电信网关 dev eth1

2)对网通进行基于目的地址的策略路由
ip rule add to 网通路由表1 table cnc prio 100
ip rule add to 网通路由表2 table cnc prio 100
....

3)添加原路返回路由

ip route flush table ctc
ip route add default via 电信网关 dev eth1 src 电信IP table ctc
ip route add 192.168.0.0/24 dev eth0  scope link  src 192.168.0.1 table ctc
ip rule add from 电信IP table ctc

ip route flush table cnc
ip route add default via 网通网关 dev eth2 src 网通IP table cnc
ip route add 192.168.0.0/24 dev eth0  scope link  src 192.168.0.1 table ctc
ip rule add from 网通IP table cnc

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

阅读(667) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~