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

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: