Chinaunix首页 | 论坛 | 博客
  • 博客访问: 181381
  • 博文数量: 16
  • 博客积分: 170
  • 博客等级: 入伍新兵
  • 技术积分: 753
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-11 10:57
文章分类

全部博文(16)

文章存档

2017年(3)

2016年(2)

2015年(3)

2014年(1)

2013年(2)

2012年(5)

我的朋友

分类: 系统运维

2016-09-06 10:07:50



如图所示,
在双线路上发布同一台服务器的同一个服务。采用CentOS中的iptables/iproute做。
当时我遇到的难点是:回包处理。
由于发布的服务器要在两个线路上同时发布服务,在FW的内网接口中的返回包的源端口和源IP都是一样的,无法区别具体是返回到哪个线路上的数据包,数据包在iptables打过mark后进入内网时mark消失而无法捕捉返回包的mark.

最后的解决思路是参照了如下两个技术贴而得已解决。
http://blog.csdn.net/maotianwang/article/details/8490050

感谢两位贴主分享。

具体解决办法是进包打mark,该包将路由到内网时将mark保存起来链接状态中,当返回包到达时,再将mark恢复出来,然后根据mark来决定返回包的路由。

详细配置如下:

#进包打mark
$ipt -t mangle -A PREROUTING  -i $Dev_WAN_ISP_1 -d 2.2.2.2 -p tcp --dport 80 -j MARK --set-mark 1
$ipt -t mangle -A PREROUTING  -i $Dev_WAN_ISP_2 -d 3.3.3.3  -p tcp --dport 80 -j MARK --set-mark 2
#进包即将路由到内网前,将mark保存到连接状态中。
$ipt -t mangle -A POSTROUTING -o $Dev_LAN -m mark --mark 1  -j CONNMARK --save-mark
$ipt -t mangle -A POSTROUTING -o $Dev_LAN -m mark --mark 2  -j CONNMARK --save-mark
#从连接状态将mark恢复到每个返回包,供iproute选路由
$ipt -t mangle -A PREROUTING  -i $Dev_LAN  -s 10.1.8.8 -p tcp --sport 80 -j CONNMARK --restore-mark
#配置DNAT
$ipt -t nat    -A PREROUTING -i $Dev_WAN_ISP_1 -d 2.2.2.2 -p tcp --dport 80 -j DNAT --to-destination 10.1.8.8:80
$ipt -t nat    -A PREROUTING -i $Dev_WAN_ISP_2 -d 3.3.3.3  -p tcp --dport 80 -j DNAT --to-destination 10.1.8.8:80

#定义路由表名称
echo "110 CT" >> /etc/iproute2/rt_tables
echo "120 CMC" >> /etc/iproute2/rt_tables

#定义线路CT的路由规则。
ip rule add from 2.2.2.2 table CT
ip rule add fwmark 1 table CT
ip route add 10.0.0.0/8 dev eth0 via 10.1.64.17 table CT
ip route add 0/0 via 2.2.2.1 dev eth1 table CT

#定义线路CNC的路由规则。
ip rule add from 3.3.3.3 table CMC
ip rule add fwmark 2 table CMC
ip route add 10.0.0.0/8 dev eth0 via 10.1.64.17 table CMC
ip route add 0/0 via 3.3.3.1 dev eth2 table CMC

#定义默认路由
ip route add 10.0.0.0/8 dev eth0 via 10.1.64.17
ip route add default equalize nexthop via 2.2.2.1 dev eth1 nexthop via 3.3.3.1 dev eth2

 



 

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