雲主機新增網路卡配置多網路卡策略路由

記憶流年發表於2021-05-08

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

相關文章