linux多线网络策略路由配置
转载自 http://www.sunjianhe.com/?p=1289&ckattempt=1
网络环境:网关服务器有三块网卡,一块接电信网络,一块接联通网络,一块接内网。
实现目的:网关服务器要把外网的访问转到内网真正的应用服务器上,要实现客户端从电信网络访问走电信线路返回,从联通网络访问走联通线路返回。
网关服务器:
eth0 内网IP 10.35.0.107
eth1 电信IP
eth2 联通IP
内部web服务器:10.35.0.1
具体配置步骤:
1,增加两条策略路由自定义表名:
echo 1 >/proc/sys/net/ipv4/ip_forward
vi /etc/iproute2/rt_tables:
#
# reserved values
#
255 local
254 main
253 default
0 unspec
200 dianxin
201 liantong
2,增加策略路由:
gw_dianxin表示电信线路网关,gw_liantong表示联通线路网关
ip_dianxin表示电信线路配置的ip,ip_liantong表示联通线路配置的ip,
#对ip route表dianxin和liantong分别设置默认网关
ip route add 0/0 via gw_dianxin table dianxin
ip route add 0/0 via gw_liantong table liantong
#电信IP走电信网关,联通IP走联通网关
ip rule add from ip_dianxin table dianxin
ip rule add from ip_liantong table liantong
ip route flush cache
(如果代理服务器是直接提供服务,应用访问不转到内网的情况,只需如上二条即可)
3,iptables打标记和fwmark设置
#对通过电信IP进来的数据在链接跟踪记录上打标记100,通过联通IP进来的数据在链接跟踪记录上打上标记200
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
#转发到内网的数据包从链接跟踪记录还原标记到数据包中的mark字段
iptables -t mangle -A PREROUTING -i eth0 -m conntrack –ctstate ESTABLISHED,RELATED -j CONNMARK –restore-mark
#本地出去的数据包从链接跟踪记录还原标记到数据包中的mark字段
iptables -t mangle -A OUTPUT -m conntrack –ctstate ESTABLISHED,RELATED -j CONNMARK –restore-mark
#关键,策略路由发现标识为100的数据包走电信网关,标识为200的数据包走联通网关
ip rule add fwmark 0x100 table dianxin
ip rule add fwmark 0x200 table liantong
4,端口映射
iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to 10.35.0.1:80
iptables -t nat -I POSTROUTING -s 10.35.0.0/24 -o eth1 -j MASQUERADE
iptables -t nat -I POSTROUTING -s 10.35.0.0/24 -o eth2 -j MASQUERADE