在实际业务系统中,一个服务器可能会用到多个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
评论区