centos7使用rt_tables巧妙配置多网卡多路由实现策略路由,


 路由表和策略路由的区别

  通常我们维护静态路由表会手工填写所有IP地址段的路由规则,使用命令或者写入配置文件永久生效,以常见的操作系统Windows/Linux/AIX为例

#Windows静态路由
--键入 route -p add [目标] [mask <网络掩码>] [网关] [metric <度量值>] [if <接口>]
route print
route delete
route -p add 172.16.19.0 mask 255.255.255.0 198.15.0.1

#RHEL静态路由
vi /etc/sysconfig/network
default via 192.168.3.1 dev eth0
10.211.6.0/24 via 192.168.3.1 dev eth0
10.0.0.0/8 via 10.212.52.1 dev eth1

#SuSE静态路由
vi /etc/sysconfig/network/routes
default 192.168.3.1 - -
10.211.6.0 192.168.3.1 255.255.255.0 eth0
10.0.0.0 10.212.52.1 255.0.0.0 eth1

#AIX静态路由
smitty mkroute
172.20.14.0/24 gw 172.23.14.254
这种办法针对少量的规则还可以轻松应对,但规则一旦增加麻烦也就接踵而至,网段地址不断变化就必须及时更新路由表,否则其他用户就无法访问。如果可以根据用户访问进来的路径设定策略路由就会方便很多,而rt_tables就是为此而生

rt_tables

rt_tables简单来说就是通过给表的命名使得管理简单化

    大部分人习惯直接将路由表优先级号码直接作为表的名称来使用,这样做的好处是非常直观和简明的表达了表所在优先级的位置,但是当表的优先级结构出现变动时,我们对巨大的路由表的修改就显得很烦琐和费事了。

在/etc/iproute2/目录下,有这么一个文件rt_tables,只要对它进行改动,我们将很容易的完成路由表优先级结构的变动。(数值越小优先级别越高)

当路由表的优先级发生变化的时候,我们只需要编辑/etc/iproute2/rt_tables这个文件就可以直接改变路由表的优先级次序。

[root@peter-host ~]# vim /etc/iproute2/rt_tables 
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep

Linux最多可以支持255张路由表,其中有3张表是内置的:

表255 本地路由表(Local table) 本地接口地址,广播地址,已及NAT地址都放在这个表。该路由表由系统自动维护,管理员不能直接修改。

表254 主路由表(Main table) 如果没有指明路由所属的表,所有的路由都默认都放在这个表里,一般来说,旧的路由工具(如route)所添加的路由都会加到这个表。一般是普通的路由。

表253 默认路由表 (Default table) 一般来说默认的路由都放在这张表,但是如果特别指明放的也可以是所有的网关路由。

表 0 保留

因为VPC网络没有其他网段,所以此处就以同网段的示例:

原有网卡eth0

[root@peter-host network-scripts]# cat ifcfg-eth0 
BOOTPROTO=dhcp
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPV6INIT=yes
DHCPV6C=yes

 新增网卡eth1,ip为自动获取的

 从其他机器ping这两个ip,只有eth0网卡可以通信,eth1不可以

 1、编辑路由策略

 #编辑rt_tables
  echo "251 net_251" >> /etc/iproute2/rt_tables
  echo "252 net_252" >> /etc/iproute2/rt_tables

# 查看
[root@peter-host ~]# vim /etc/iproute2/rt_tables # reserved values # 255 local 254 main 253 default 0 unspec

 #
 # local
 #
 #1 inr.ruhep

#################添加下面两行(数值越小优先级别越高)
251     net_251
252     net_252

 2、添加路由规则

#清空net_251的路由表
ip route flush table net_251
# 添加一个路由规则到 net_251 表,这条规则是 net_251 这个路由表中数据包默认使用源 IP 192.168.0.33 通过 eth0 走网关 192.168.0.1
ip route add default via 192.168.0.1 dev eth0 src 192.168.0.33 table net_251
#来自 192.168.0.33 的数据包,使用 net_251 路由表的路由规则
ip rule add from 192.168.0.1 table net_251

 #清空net_252的路由表
  ip route flush table net_252
 # 添加一个路由规则到 net_252 表,这条规则是 net_252 这个路由表中数据包默认使用源 IP 192.168.0.207 通过 eth1 走网关 192.168.0.1
  ip route add default via 192.168.0.1 dev eth0 src 192.168.0.207 table net_252
 #来自 192.168.0.207 的数据包,使用 net_252 路由表的路由规则
  ip rule add from 192.168.0.1 table net_252

#添加默认网关
route add default gw 192.168.0.1

 3、如果需要自启动生效可以写进配置文件也可以加入rc.local

vim /etc/rc.local
ip route flush table net_251
ip route add default via 192.168.0.1 dev eth0 src 192.168.0.33 table net_251
ip rule add from 192.168.0.33 table net_251

ip route flush table net_252
ip route add default via 192.168.0.1 dev eth1 src 192.168.0.207 table net_252
ip rule add from 192.168.0.207 table net_252

route add default gw 192.168.0.1

 4、给文件添加 执行权限使其开机执行

chmod u+x /etc/rc.d/rc.local

 5、重启系统

6、在其他主机上测试ping这两个ip是否可以通信,此时就可以正常使用了

查看路由表:

 网关

 

相关内容

    暂无相关文章