LINUX主机的策略路由配置,多网卡一样可以指哪走哪

背景

因《网工必备技能!Windows网卡1访问外网,网卡2访问内网!》受到粉丝的关注,就有粉丝提出,想给一台拥有多个网卡的linux主机,想配置不同的网卡走不通的路由,怎么操作呢?阿祥今天就介绍这种需求的配置方法,希望对粉丝有帮助!

环境准备

我用云主机作为操作演示,主要展示的是Linux操作系统的策略路由配置方法。而阿祥操作实现目标为双网卡都通公网,大家可以根据自身实际需求配置!

适用场景

下面两种场景均适合这种操作,都需要添加策略路由解决:

1、主机绑定同网段多块网卡,只有主网卡地址通,其他地址不通

2、主机多块网卡绑定多个公网IP后,只有绑定主网卡的公网IP可以通信

操作演示

操作系统:CentOS系统7.6

假设公有云主机已经增加了两张网卡,IP地址分别为192.168.100.103、192.168.200.41:

1、ifconfig    查看eth0、eth1 的IP是否一致。

2、确认是否没有eth1的配置文件(如有跳过此步)

cd /etc/sysconfig/network-scripts/
ll
如缺eth1,增加eth1的配置文件,注意HWADDR和GATEWAY:
cp ifcfg-eth0 ifcfg-eth1


vim ifcfg-eth1

eth0配置:

c952d9c69d212373810ba04d5d05b63b.png

d8d77ab80bc93740144f549f2c920c74.png

eth1配置:

2c1a63bffe206d84fe1e22f0d248cedb.png

7de699d1c871843b5791d089d201dc7a.png

按ESC退出,并输入:wq!保存配置
增加完重启网络:systemctl restart NetworkManager

3、执行以下命令,在“/etc/iproute2/rt_tables”文件中增加两张路由表名称(route1和route2,可自定义名称)和路由表优先级(252和251,优先级数值越小表示优先级越高)。

①vi /etc/iproute2/rt_tables
251 route1 
252 route2 
255 local         #默认存在,不要动
254 main          #默认存在,不要动
253 default         #默认存在,不要动

或者 直接在root执行:

echo "251 route1" >> /etc/iproute2/rt_tables
echo "252 route2" >> /etc/iproute2/rt_tables

4、配置永久路由:

vi /etc/rc.local
在文件末尾添加以下配置:


# wait for nics up
sleep 10
# Add v4 routes for eth0
ip route flush table route1
ip route add default via 192.168.100.1 dev eth0 table route1
ip route add 192.168.100.0/24 dev eth0 table route1
ip rule add from 192.168.100.103 table route1


# Add v4 routes for eth1
ip route flush table route2
ip route add default via 192.168.200.1 dev eth1 table route2
ip route add 192.168.200.0/24 dev eth1 table route2
ip rule add from 192.168.200.41 table route2


参数说明:wait for nics up:文件启动时间,建议和本示例中的配置保持一致
按ESC退出,并输入:wq!保存配置

主网卡

ip route add default via 子网网关 dev 网卡名称 table 路由表名称

ip route add 子网网段 dev 网卡名称 table 路由表名称

ip rule add from 网卡地址 table 路由表名称

扩展网卡

ip route add default via 子网网关 dev 网卡名称 table 路由表名称

ip route add 子网网段 dev 网卡名称 table 路由表名称

ip rule add from 网卡地址 table 路由表名称

参数说明如下:

网卡名称:填写实际名称。

路由表名称:自定义路由表名称,此处请使用数字命名路由表。

其他网络信息:填写实际收集的地址。

5、注意检查rc.local是否有执行权限,在centos7或者以上的版本,rc.local是没有执行权限的,主机重启之后,不执行该文件配置,导致当前配置不生效,所以需要赋予执行权限:

chmod +x /etc/rc.local

6、重启reboot

“/etc/rc.local”文件中添加的策略路由,需要重启云服务器后才会生效,此处请确保不影响业务再重启云服务器操作。

7、依次执行以下命令,确认策略路由是否添加成功

ip rule
ip route show tableroute1
ip route show tableroute2
回显类似如下信息,表示策略路由添加成功


[root@ecs-resource ~]# ip rule
0:  from all lookup local 
32764:  from 192.168.200.41 lookup route2 
32765:  from 192.168.100.103 lookup route1 
32766:  from all lookup main 
32767:  from all lookup default 


[root@ecs-resource ~]# ip route show table 251
default via 192.168.100.1 dev eth0
192.168.100.0/24 dev eth0 scope link


[root@ecs-resource ~]# ip route show table 252
default via 192.168.200.1 dev eth1
192.168.200.0/24 dev eth1 scope link

可通过本地windows机器进cmd,确认是否能ping通云主机EIP

ping eth0

0b7bc417b9c69691abbaddbe60ded600.png

ping eth1

0df86e7449eaf70c1b131665f2f43db7.png

注意:

注意1 :做完以上策略路由后,可以保证用ip作为源去通信是正常的,但是如果以eth0、eth1的网卡名称作为源访问还是不通的,因为策略路由是根据from后面的ip来匹配的。

ip rule add from 192.168.0.x table route1

如果要以eth0、eth1的网卡名称作为源去通信,需要在路由表中添加针对 dev 的路由,如果是双网卡,一般eth0已经存在默认路由了,则为eth1增加一条默认路由即可:

route add default gw 192.168.0.1 dev eth1 metric 100 #注意要加metic,否则会导致主网卡eth0的默认路由失效

注意2:两个网卡的安全组都要放通ICMP才可ping通IP

注意3:公有云主机网卡要放通本地windows机器ip ping测

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ICT系统集成阿祥

感谢大佬!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值