Linux多网卡多IP设置

在实际业务系统中,一个服务器可能会用到多个IP地址,而设置好IP地址后,只有默认地址可以访问,另外一个地址无法访问。

一、增加路由表

Linux 中的路由由路由规则和路由表组成。路由规则指定当数据包满足规则时,应转交到哪个路由表;路由表根据数据包的信息,选择下一跳。

可通过 ip rule 看当前的路由策略,如:

win-0lq3628fuqd:/dev # ip rule
0:      from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default 

从这里也可以看出在内核中最多支持 32768 条路由规则。这里的 main 表是系统主要的路由表,所有的路由规则都写在这个表中。

查看 main 表

win-0lq3628fuqd:/dev # ip route list table main
 default via 172.16.91.254 dev eth1 
 172.16.91.0/24 dev eth1  proto kernel  scope link  src 172.16.91.51 
 172.16.110.0/24 dev eth0  proto kernel  scope link  src 172.16.110.23 

Linux 中支持 256 张路由表,编号为 0 到 255,可直接使用编号操作,也可使用编号的别名操作,编号和其别名的对应关系在 /etc/iproute2/rt_tables 文件中。

默认有 local,main,default 三个路由表,这三个路由表的名称命名就来自 /etc/iproute2/rt_tables。

win-0lq3628fuqd:/dev # cat /etc/iproute2/rt_tables 
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep

注:数字范围为0-255,但0、255、254、253是保留的,不能使用。

增加两条路由,如有多个,按格式添加。此处增加vlan110、vlan91两个路由表。

win-0lq3628fuqd:/dev # cat /etc/iproute2/rt_tables 
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
1       vlan110
2       vlan91

二、建立路由网关

win-0lq3628fuqd:/dev # ip route add default via 172.16.110.254 dev eth0 table vlan110
win-0lq3628fuqd:/dev # ip route add default via 172.16.91.254 dev eth1 table vlan91

四、 增加路由原路返回规则,使来自不同的口的走不同的路由表。

win-0lq3628fuqd:/dev # ip rule add from 172.16.91.51 table vlan91
win-0lq3628fuqd:/dev # ip rule add from 172.16.110.23 table vlan110 

五、命令汇总

# 清空路由表vlan110
$ ip route flush table vlan110
# 为路由表 vlan110 添加默认路由 172.16.110.254
$ ip route add default via  172.16.110.254  dev eth0 table vlan110
# 根据源 IP 决定路由表
$ ip rule add from 172.16.110.23 table vlan110
# 查看路由表vlan110
$ ip route list table 110
# 删除某个默认路由vlan110
$ ip rule del prio 32765

点赞