现在的位置: 首页 > 综合 > 正文

ip route + ip rule实现双ISP接入网络配置

2013年12月03日 ⁄ 综合 ⁄ 共 6418字 ⁄ 字号 评论关闭
文章目录

转自:http://zhumeng8337797.blog.163.com/blog/static/10076891420130911446531/

本文所述仅为解决方案之一,欢迎留言探讨其他解决方案。

公司新增一条ISP接入,直接光电转换成以太口接入,现有Cisco 3750和若干Cisco 2960,另外有PC机一台做NAT+Router,DHCP/DNS等功能均不用Cisco 3750干,其实我也不知道为啥,曹某人说不用就不用了,哈哈~

OK,既然新增一条线路,而原先的NAT主机网卡也不够了,于是新增一台NAT2,功能还是地址转换和软路由,Linux实现,这些都很容易

线路很容易调通,后来遇到了两个难点,一个是两台NAT不能互通(这不胡扯么?),其实是我自己白痴了,NAT上没有做静态路由将192.168.0.0/16的地址都指向3750,默认网关是指向Internet的,当然不通啦~后面一个问题,其实也跟这个也有一点点关系,就是策略路由本地不同Vlan使用不同的ISP出口。经过曹某人指点使用ip rule就可以搞定。

具体配置如下:

NAT1:  eth2 192.168.254.1/24 LINK TO Cisco 3750 VLAN 2,eth1配置ISP1的互联IP

NAT2: eth0配置ISP2的互联IP,eth1配置192.168.254.11/24 LINK TO Cisco 3750 VLAN 2

两台NAT均做好静态路由保证互通,NAT1作为主NAT,使用ip route + ip rule做策略路由,默认走本机网关即采用ISP,特殊VLAN/IP通过策略路由到NAT2,走ISP2

ip route add 192.168.20.0/24 dev eth2 src 192.168.254.1 table cnc
ip route add default via 192.168.254.11 table cnc

ip rule add from 192.168.20.0/24 pref 10000 table cnc

其他配置都相对很容易,主要是静态路由需要多配置几个,反正静态路由也不耗费什么系统资源:D

1:添加多个路由表(其中系统默认的为main表) 
可以通过 
ip route add xxx.xxx.xxx.xxx via xxx table adsl 
ip route add xxx.xxx.xxx.xxx via xxx table ddn 
来向不同的路由表中添加路由 
可以通过 
ip route list table main 
ip route list table adsl 
ip route list table ddn 
可以分别查看不同策略的路由表 
2:为不同的ip分配不同的路由表及规则 
可以通过 
ip rule add from xx.xx.xx.xxx(内网) table adsl 
ip rule add from xx.xx.xx.xxx(内网) table ddn 
ip rule list 
未加入规则的ip则使用默认的路由策略(main) 


 这个问题一直困扰我,看到这个帖子可以设置下,还是没有问题的。特此贴出来,留备以后查看

  两个不在一段的IP看成一个电信一个网通来设置 就可以了。centos无问题

  1. vi /etc/iproute2/rt_tables,增加网通和电信两个路由表

  251 tel   电信路由表

  252 cnc 网通路由表

  2. 给网卡绑定两个地址用于电信和网通两个线路

  ip addr add 192.168.0.2/24 dev eth0

  ip addr add 10.0.0.2/24 dev eth1

  3、分别设置电信和网通的路由表

  电信路由表:

  #确保找到本地子网

  ip route add 192.168.0..0/24 via 192.168.0.2 dev eth0 table tel

  #内部回环网络

  ip route add 127.0.0.0/8 dev lo table tel

  #192.168.0.1为电信网络默认网关地址

  ip route add default via 192.168.0.1 dev eth0 table tel

  网通线路路由表:

  #确保找到本地子网

  ip route add 10.0.0.0/24 via 10.0.0.2 dev eth1 table cnc

  #内部回环网络

  ip route add 127.0.0.0/8 dev lo table cnc

  #10.0.0.1是网通的默认网关

  ip route add default via 10.0.0.1 dev eth1 table cnc

  4、电信和网通各有自己的路由表,制定策略,让192.168.0.2的回应数据包走电信的路由表路由,10.0.0.2的回应数据包走网通的路由表路由

  ip rule add from 192.168.0.1 table tel

  ip rule add from 10.0.0.1 table cnc

  最后考虑特殊情况的网管需要批量添加IP到路由才能过,简化一下

  ip rule del from 192.168.0.0/24 table tel

  ip rule del from 10.0.0.0/24 table cnc

添加删除主机路由:

windows:
主机:route add/delete 192.168.6.6 mask 255.255.255.255 192.168.6.254 -p (-p代表永久)
网段:route add/delete 192.168.6.0 mask 255.255.255.0 192.168.6.254
默认网关:route add/delete 0.0.0.0 mask 0 0.0.0.0 192.168.6.254

linux:
命令添加,重启后会消失
主机:route add/del -host 192.168.6.6 gw 192.168.6.254 dev eth1
网段:route add/del -net 192.168.6.0/24 gw 192.168.6.254
默认网关:route add/del default gw 192.168.0.61 dev eth0

写入到配置文件,永久生效
/etc/sysconfig/network-scripts/route-eth1
192.168.6.6/32 via 192.168.6.254
192.168.6.0/24 via 192.168.6.254

定义一个网卡别名
ifconfig eth1:2 192.168.6.19 up

绑定和删除IP
ip addr add 192.168.6.8/22 dev eth1
ip addr del 192.168.6.8/22 dev eth1
查看:ip addr

添加一个策略表
echo -e "100\tf5" >> /etc/iproute2/rt_tables;

查看策略路由:ip rule

添加删除策略路由:

命令:
/sbin/ip rule add from 192.168.6.6 table f5 pre 1000(pre 后面的数字1000是优先级别,越小优先级别越高)
/sbin/ip rule del from 192.168.6.6 table f5

写入到开机启动文件中:echo "/sbin/ip rule add from 192.168.6.6 table f5 pre 1000">>/etc/rc.local

查看路由信息
看配置文件:/etc/sysconfig/network-scripts/route-eth1
命令:ip route ls table f5

命令添加和删除table 表里面的配置:
ip route add 192.168.6.0/24 table f5 dev eth1
ip route add default via 192.168.6.254 table f5 dev eth1

ip route del 192.168.6.0/24 table f5 dev eth1
ip route del default via 192.168.6.254 table f5 dev eth1

直接写到文件里面:
echo "192.168.6/24 dev eth1 table f5
default via 192.168.6.3 table f5">/etc/sysconfig/network-scripts/route-eth1

------------------------------------------------------

linux的路由表与路由策略

环境:双线IDC机房,服务器在天津

网通:ip:11.22.33.44 gw:11.22.33.1 eth1

电信:ip:55.66.77.88 gw:55.66.77.1 eth1:1

私网:ip:10.10.10.10 gw:10.10.10.1 eth0

1.设置服务器默认网关,因为服务器在北方,属于网通的势力范围,所以我们选择网通作为默认的网关

[root@xxx ~]# ip route replace table main default via 11.22.33.1 dev eth1

2.设置从外面访问服务器的流量如何走

添加内网,电信,网通3个路由表

[root@xxx ~]# cat /etc/iproute2/rt_tables
50 private
100 tel
200 cnc

分别为eth0,eth1,eth1:1设置路由条目

##############
# add routing for private route table
ip route add table private 10.10.10.0/24 dev eth0 proto kernel scope link src 10.10.10.10
ip route add table private default via 10.10.10.1 dev eth0 src 10.10.10.10

# using private table ,if the package src ip is 10.10.10.10
ip rule add from 10.10.10.10 table private prio 500

##############
# add routing for telcom route table
ip route add table tel 11.22.33.0/24 dev eth1 proto kernel scope link src 11.22.33.44
ip route add table tel default via 11.22.33.1 dev eth1 src 11.22.33.44

# using tel table ,if the package src ip is 11.22.33.44
ip rule add from 11.22.33.44 table tel prio 1000

##############
# add routing for netcom route table
ip route add table cnc 55.66.77.0/24 dev eth1:1 proto kernel scope link src 55.66.77.88
ip route add table cnc default via 55.66.77.1 dev eth1:1 src 55.66.77.88

# using cnc table ,if the package src ip is 55.66.77.88
ip rule add from 55.66.77.88 table cnc prio 500

测试:我们可以在服务器上用tcpdump来测试我们设置是否正确

3.设置从外面访问服务器的流量如何走

首先你要有一份完整的电信网段ip,你自己可以去收集或者花钱买都可以

比如说我把所有电信的ip都放在了/opt/scripts/telecom_ip_list里面,写个简单的脚步去批量添加这些路由规则

for subnet in `cat /opt/scripts/telecom_ip_list`; do
if ip rule | grep "from $subnet lookup tel" >/dev/null; then
:
else
ip rule add to $subnet table tel prio 5000
fi
done

测试:

ip route get xxx.xxx.xxx.xxx(电信)

ip route get xxx.xxx.xxx.xxx(网通)

查看返回的信息是否正确

-------------------------------------------------------

centos双线双ip服务器路由设置方法

为了能够让联通和电信用户都可以快速的访问网站,公司服务器托管到了双线双ip机房。服务器使用双线双ip需要对路由表做一些特殊的配置,IDC提供的解决方案是填写静态路由表。方法是使用电信网关做默认的路由,然后自己手工填写所有网通IP地址段的路由规则。

此方法弊端较大:

1、添加规则太多太麻烦,如果漏掉一些网段,那这些网段的用户就访问不了网站。
2、dns智能解析的来路与填写的静态路由网段不同时,用户就会访问不了我们的网站。
3、网段地址的分布总是在不断变化的,必须定期更新路由表。

解决方法:

使用动态路由,服根据用户访问进来的路径设定动态路由,如果用户是通过电信IP地址访问过来的话,那么使用电信网关做路由,返回内容走电信网关;如果用户通过联通IP地址访问过来的话,那么使用联通网关做路由,返回内容走联通的网关。

经过在网站备份服务器上的测试,使用动态路由表的方法可以解决静态路由表的弊病。

具体方法如下:

假如服务器分配的ip地址如下

电信网关:59.83.100.1 ;电信ip:59.83.100.10。

联通网关:221.214.100.1;联通ip:221.214.100.10 。

1、编辑rt_tables文件,添加电信联通路由表

1
# vi /etc/iproute2/rt_tables # (增加电信和联通两个路由表)

添加电信联通路由表
252 tel
251 cnc

2、编辑rc.local文件,设置电信和网通路由表内容。

# vi /etc/rc.d/rc.local #(设置电信和网通路由表内容)

添加如下内容

ip route replace default via 59.83.100.1 dev eth0 #默认路由线路

ip route flush table tel #刷新tel路由表
ip route add default via 59.83.100.1 dev eth0 src 59.83.100.10 table tel
#添加回环地址
ip rule add from 59.83.100.10 table tel #从59.83.100.10过来的,走tel路由

ip route flush table cnc #刷新cnc路由表
ip route add default via 221.214.100.1 dev eth1 src 221.214.100.10 table cnc
ip rule add from 221.214.100.10 table cnc #从221.214.100.10过来的走cnc路由

reboot服务器测试下效果吧!

One thought on “centos双线双ip服务器路由设置方法”

Linux网络安全技术与实现(第2版):http://book.51cto.com/art/201204/330944.htm 第10章 基于策略的路由及多路带宽合并

linux多ISP的策略路由:http://kerry.blog.51cto.com/172631/385578

抱歉!评论已关闭.