linux多网卡多ip多网关同时在线的设置方法20130509

来源:互联网 发布:捷通人才系统源码 编辑:程序博客网 时间:2024/05/17 22:48

linux多网卡多ip多网关同时在线的设置方法20130509

因之前对linux的策略路由不了解,且受linux只有一条默认路由的深刻影响,导致在多线多ip的情况下,采用手工修改默认路由的方式同时只有一个ip可用,操作十分不方便。经google,发现可以通过 配置原线路返回的策略路由可以实现多线多ip同时在线,如下:

一、一台4网卡的服务器
# ifconfig |grep -E "Link|inet"
em1       Link encap:Ethernet  HWaddr 90:B1:1C:37:A9:15 
          inet addr:192.168.0.30  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::92b1:1cff:fe37:a915/64 Scope:Link
em1:0     Link encap:Ethernet  HWaddr 90:B1:1C:37:A9:15 
          inet addr:192.168.0.6  Bcast:192.168.0.255  Mask:255.255.255.0
em2       Link encap:Ethernet  HWaddr 90:B1:1C:37:A9:16 
          inet addr:1.1.1.105  Bcast:1.1.1.127  Mask:255.255.255.224
          inet6 addr: fe80::92b1:1cff:fe37:a916/64 Scope:Link
lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
p2p1      Link encap:Ethernet  HWaddr 00:0A:F7:0F:4A:E8 
          inet addr:2.2.2.247  Bcast:2.2.2.255  Mask:255.255.255.240
          inet6 addr: fe80::20a:f7ff:fe0f:4ae8/64 Scope:Link
p2p2      Link encap:Ethernet  HWaddr 00:0A:F7:0F:4A:EA 
          inet addr:3.3.3.10  Bcast:3.3.3.15  Mask:255.255.255.240
          inet6 addr: fe80::20a:f7ff:fe0f:4aea/64 Scope:Link


二、新增加策略路由表
# more /etc/iproute2/rt_tables(最后增加3行,数字范围0-255,但0、255、254、253是保留的,不能用)
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
#
#
####定义策略路由,保证多公网IP同时在线
100  em2
101  em3


三、配置原线路返回策略路由规则(实现让从电信IP过来的请求按照电信路由返回,从联通IP过来的请求从联通路由返回。)
##配置主网卡em2的策略路由
/sbin/ip route flush table 100
/sbin/ip route add default via 1.1.1.97 dev em2 src 1.1.1.105 table 100
/sbin/ip rule add from 1.1.1.105 table 100
##配置备网卡p2p1的策略路由
/sbin/ip route flush table 101
/sbin/ip route add default via  2.2.2.241 dev p2p1 src 2.2.2.247 table 101
/sbin/ip rule add from 2.2.2.247 table 101

四、查看上述设置的策略路由规则
# ip route list table em2
default via 1.1.1.97 dev em2  src 1.1.1.105
# ip route list table 100
default via 1.1.1.97 dev em2  src 1.1.1.105
# ip route list table em3
default via 2.2.2.241 dev p2p1  src 2.2.2.247
# ip route list table 101
default via 2.2.2.241 dev p2p1  src 2.2.2.247

五、删除策略路由表
# ip route flush table em2
# ip route flush table em3

删除路由缓存
# ip route flush cache

六、为保证在重启服务器或者重启网络或者重启特定网卡后策略路由仍然在线,需要将上述第三步内容加入到开机启动rc.local和network启动脚本
# more /etc/rc.local
####配置原线路返回路由
##配置主网卡em2的策略路由
/sbin/ip route flush table 100
/sbin/ip route add default via 1.1.1.97   dev em2 src 1.1.1.105 table 100
/sbin/ip rule add from 1.1.1.105 table 100
##配置备网卡p2p1的策略路由
/sbin/ip route flush table 101
/sbin/ip route add default via 2.2.2.241 dev p2p1 src 2.2.2.247 table 101
/sbin/ip rule add from 2.2.2.247 table 101
#多线路负载均衡默认路由这样就不需要在网卡的配置文件设置网关了,并且挺智能的,如果一块网卡故障后,经过该网卡的路由北标记为dead:
/sbin/ip route add default scope global nexthop via 1.1.1.97 dev em2 weight 1 nexthop via 2.2.2.241 dev p2p1 weight 1

# more /etc/rc.d/init.d/network

七、测试
本机测试,从这个2块网卡ping外网也都通
# ping -I em2 8.8.8.8
# ping -I p2p1 8.8.8.8
外部测试,这2个网卡的ip也都通
# ping  1.1.1.105
# ping  2.2.2.247


采用以上方法,默认网关都可以不写,写上也无妨,还是写上吧

参考:
http://www.gaojinbo.com/%e5%8f%8c%e7%ba%bflinux%e6%9c%8d%e5%8a%a1%e5%99%a8%e9%85%8d%e7%bd%ae%e6%9c%80%e4%bd%b3%e6%96%b9%e6%a1%88.html
http://longwind.blog.51cto.com/419072/806302


八、多线路负载均衡默认路由:
# ip route add default scope global nexthop via 1.1.1.97 dev em2 weight 1 nexthop via 2.2.2.241 dev p2p1 weight 1

挺智能的,如果一块网卡故障后,经过该网卡的路由北标记为dead
# ip rout
3.3.3.0/28 dev p2p2  proto kernel  scope link  src 3.3.3.10
2.2.2.240/28 dev p2p1  proto kernel  scope link  src 2.2.2.247
192.168.0.0/24 dev em1  proto kernel  scope link  src 192.168.0.30
169.254.0.0/16 dev p2p1  scope link  metric 1002
169.254.0.0/16 dev p2p2  scope link  metric 1003
169.254.0.0/16 dev em1  scope link  metric 1004
default
        nexthop via 1.1.1.97  dev em2 weight 1 dead
        nexthop via 2.2.2.241  dev p2p1 weight 1


九、VIP在主备机飘移时,要保证对客户端和server端的透明,比如不需要在mysql server重新针对备机IP进行授权;不需要程序修改连接IP等。

主要思想是给内网配置第二个IP,即VIP,因为数据包缺省不会从VIP出去的,故需要增加到后端代理机的静态路由,已保证数据包从VIP出去。
##控制到mysql从库、主库的通信走VIP,这样的话对db而言是透明的,不需要从新授权,仅在切换haproxy时用到
#route add 192.168.0.8/32  dev em1:0 
#route add 192.168.0.9/32  dev em1:0
#route add 192.168.0.10/32 dev em1:0

注:因本文描述的是在主出问题时VIP手动飘移到备机,故可以采取如上方式,如果是自动故障转移的话,就需要提前做好对主备机IP分别作同样的授权。


 

 

原创粉丝点击