云主机新增网卡配置多网卡策略路由

1 配置多网卡策略路由:

1.1 场景描述:

因一些服务的需要,一块网卡不能满足于当前的需求,这时就需要为服务器新添加一块或多块网卡。当新增网卡后,新网卡默认是不能通信的,需要做一些配置

操作前须知: 1、默认绑定多网卡的情况下,虚机只连接主网卡
2、查看虚机内网卡与控制台内网IP的对应关系

1.2 可能出现的故障现象及说明:

1、新增网卡后在主机内查看网卡情况,网卡会显示为未识别的网络,因为新增的网卡在系统内是没有路由条目的,需要手动为网卡添加路由信息才可以

2、配置网卡文件指定某个静态IP后network服务无法启动,检查一下自己所配置的静态ip是否和vpc内给主机分配的ip是否相同,如果不同是不能使用的,在平台内修改vpc给此主机分配的ip地址或修改配置文件中的静态ip,此ip需要和平台vpc下发分配的ip保持一致才可以

系统版本:windows和Linux

1.3 windos系统

1.3.1 操作环境:

本机环境为: Windows2016系统(windows系统其他版本配置方法相同)
Windows推荐使用修改配置文件方法达到添加路由的目的

1.3.2 操作步骤:

1、先在控制台里查看一下主机的网卡情况,两个子网是不同的网段:192.168.0.0/24和192.168.20.0网段并在vpc内查看一下自己的网段的网关是多少(如果新增网卡的网段和源网卡网段相同则只需要在主机内的网卡文件中配置静态ip/子网掩码/网关 即可,如果是不同网段也可以按此方法配置静态ip)
image

2、进入主机查看,选择桌面上的网络-右键-属性-左侧选择-更改适配器设置,在这里可以看到有两个网卡,新增加的一个网卡“以太网4”,提示未识别的网络,所以此网卡肯定是不能通信的,下面使用命令窗口查看一下
image

1.3.3 通过配置静态ip方法生成路由

配置为静态ip,配置方法如下

image

根据自己的网段进行配置ip,dns配置根据自己的情况配置,网关必须配置,否则等于没配置
image

1.3.4 通过cmd命令行进行配置路由

配置路由方法如下

1、键盘 ”win + r键 ” 打开运行窗口输入cmd 回车(或在开始菜单中的搜索框中输入cmd)打开命令窗口

2、输入route print查看系统路由,可以查看到目前只有192.168.0.0/24网段的默认路由,没有第二块网卡20.0网段的默认路由,因此第二块新增的网卡根本不知道自己出口路由是哪个,所以提示未识别,下面添加路由条目
image

3、输入命令:

# (20.1此处写的是第二块网卡所在网段的网关ip,-p的意思是永久添加,重启也不丢失)
route add 0.0.0.0 mask 0.0.0.0 192.168.20.1 –p

4、提示操作完成后再次查看一下路由表,此时就有两个默认路由了
image

添加完成后再次查看网卡的状态,第二块网卡就会被自动识别了,此时第二块新增网卡就可以正常使用了
image

下面通过第二块网卡的弹性IP远程登录,看是否正常
image

1.4 Linux系统

1.4.1 环境说明:

本机环境为Linux系统
版本为:Centos7.6系统Ip地址:eth0: 192.168.0.181/24
eth1: 192.168.20.113/24

1.4.2 操作步骤:

1.4.3 网卡路由策略配置

1、先在控制台中查看一下新增网卡的网段,这两个网卡是不同的网段,第一块网卡(主网卡)是0.0网段,第二块网卡是20.0网段,并在vpc内查看一下自己的网段的网关是多少(默认都是 .1)
image

进入主机内查看一下当前网卡的情况
image
先查看当前的路由条目
image
可以使用ping命令指定网卡的内网ip进行ping外网的域名测试,可以看到目前只有eth0网卡可以访问外网,新增的eth1网卡不能访问外网,因为目前还没有配置路由条目,新增网卡默认是不能通信的
image

下面进行配置路由条目

1、创建两个路由表分别为 route-table1,route-table2

echo "10 route-table1" >> /etc/iproute2/rt_tables
echo "20 route-table2" >> /etc/iproute2/rt_tables

2、创建路由规则

每个网卡添加两条设置: 格式说明如下
ip route add default via 默认网关 dev 网卡名 table 路由表名称
ip rule add from 网卡的ip table 路由表名称

# 示例:via指定eth0的网关ip(根据自己的网段设置,可在控制台--VPC内查看)
# 先添加第一个网卡的路由策略,网关是0.1
ip route add default via  192.168.0.1 dev eth0 table route-table1
ip rule add from 192.168.0.181 table route-table1
# 再添加第二块网卡的路由,网关是20.1
ip route add default via  192.168.20.1 dev eth1 table route-table2
ip rule add from 192.168.20.113  table route-table2

此时配置的只是临时生效,如果重启机器后就会丢失,先测试一下是否可以通过下面这种方式ping通外网,如果可以再配置成永久的

添加好后,使用ping –I + ip(第二块网卡的内网ip) + 外网域名或ip

如果可以ping通说明配置正确,ping不通则说明配置有误请重新检查刚刚的配置

image

3、把刚刚执行的路由策略添加命令添加至开机启动文件/etc/rc.local文件中(把下面的ip和路由表名替换成自己的)

echo "ip route add default via  192.168.0.1 dev eth0 table route-table1 " >> /etc/rc.local
echo "ip route add default via  192.168.20.1 dev eth1 table route-table2 " >> /etc/rc.local
echo "ip rule add from 192.168.0.181 table route-table1" >> /etc/rc.local
echo "ip rule add from 192.168.20.113 table route-table2" >> /etc/rc.local

4、开机后执行的文件/etc/rc.local需要有执行权限,给文件赋予x执行权限

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

如配置后不生效请参考文件启动不生效处理方法

1.4.3 配置完成后检查:

# 检查方法,使用ping命令指定内网网卡 ping外网地址进行测试
ping –I (新网卡内网ip) 8.8.8.8
ping –I (新网卡内网ip)  www.baidu.com

如果ping不通百度的域名请检查下面的文件,nameserver 后ip为DNS地址,可配置为114的dns

cat  /etc/resolv.conf
...
nameserver 114.114.114.114
...

如果都可以ping则没问题,如果修改后仍不通

image

1.5 Centos系统/etc/rc.local开机启动脚本不生效怎么办?

1.5.1 问题现象

CentOS 7、EulerOS操作系统云服务器中,/etc/rc.local开机启动脚本不生效。

本节操作以CentOS 7操作系统为例分析根因,并介绍解决方法。

1.5.2 根因分析

出现该问题的可能原因如下:
CentOS 7中/etc/rc.d/rc.local文件没有执行权限。解决方案请参考处理方法1

说明: /etc/rc.local文件为/etc/rc.d/rc.local的软链接

/etc/rc.local配置路由重启不生效的场景,是由于添加路由依赖网络服务,而在CentOS 7系统启动过程中内核读取rc.local时网络服务尚未启动,导致添加路由失败。解决方案请参考 处理方法2

1.5.3 处理方法1

针对/etc/rc.d/rc.local文件没有执行权限导致开机启动脚本执行失败的场景,解决方案如下。

说明:

CentOS7中该文件默认没有可执行权限

1、查看/etc/rc.d/rc.local是否有执行权限

  ls -l /etc/rc.d/rc.local -rw-r--r-- 1 root root 473 Sep 14 02:19 /etc/rc.d/rc.local

如回显信息所示该文件没有执行权限,需要为/etc/rc.d/rc.local添加可执行权限。

2、执行以下命令为/etc/rc.d/rc.local添加可执行权限

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

1.5.4 处理方法2

方法二:/etc/rc.d/rc.local开机启动脚本由rc-local服务引导执行,可以修改在network-online.target后启动该服务。

1、rc-local服务配置路径为/usr/lib/systemd/system/rc-local.service。

执行以下命令,在[Unit]模块中添加或修改Requires和After项值为network-online.target

修改内容如下加红字体:

  # cat /usr/lib/systemd/system/rc-local.service |grep -v "^#"
  [Unit] Description=/etc/rc.d/rc.local Compatibility
  ConditionFileIsExecutable=/etc/rc.d/rc.local
  Requires=network-online.target   # 修改或添加此行
  After=network-online.target      # 修改或添加此行
  [Service] Type=forking 
  ExecStart=/etc/rc.d/rc.local start
  TimeoutSec=0
  RemainAfterExit=yes

说明:
network-online.target是主动等待直到网络“启动”的target,其中“启动”的定义由网络管理软件定义。通常,它表示某种已配置的、可路由的IP地址。其主要目的是主动延迟服务的激活,直到建立网络为止。

2、执行以下命令,确认/etc/rc.d/rc.local有执行权限。

  ls -l /etc/rc.d/rc.local

如果显示没有可执行权限,请参考 处理方法1

3、通知systemd重新加载配置文件。

  systemctl daemon-reload

4、重启rc-local.service,使/etc/rc.d/rc.local脚本立即生效。

  systemctl restart rc-local.service
Tags: