全部產品
Search
文件中心

Elastic Compute Service:配置網卡路由

更新時間:Feb 20, 2025

在VPC內部以及與其他網路之間傳輸資料時,需要使用路由表來指導資料包的直接選取。對於彈性網卡來說,正確的路由配置是保證其能夠正確發送和接收資料的關鍵。ECS在附加網卡時,通常情況下會自動為附加的網卡配置預設路由。如果現有的路由不滿足您的需求,您可以按照本章節的指引通過配置路由表和規則來自行配置路由。

為網卡配置策略路由

策略路由是一種網路技術,允許根據特定的規則來決定資料包的傳輸路徑,而不是僅僅依賴於路由表中的預設路由。通過配置路由表和規則,您可以實現不同的路由策略,將特定的網路流量通過指定的網卡進行轉寄,以便更加精確地控制和管理網路流量的轉寄路徑。

適用情境

  • 多網卡網路通訊問題:在使用輔助彈性網卡配合Elastic IP Address或NAT Gateway時,由於其預設路由優先順序低於主網卡,出站流量預設優先通過主網卡發送,可能導致流量經輔助網卡流入後由主網卡返回,引發Elastic IP Address通訊異常。此時可以通過配置策略路由,強制流量從接收資料的網卡原路返回,確保進出路徑一致。

  • 流量負載平衡:多網卡環境下,每個網路介面可能串連到不同的網路或者服務於不同的目的,使用預設路由可能無法滿足所有的需求。例如,您可以將出站流量按照一定規則分配給不同的網路介面,從而實現流量的負載平衡。

  • 存取控制:基於源地址、目的地址或其他參數定義路由規則,限制某些類型的流量只能通過指定的介面或路徑傳輸,實現一定程度上的網路隔離。

前提條件

操作樣本

以下以輔助彈性網卡為例,您需要根據實際情況替換命令中的網卡標識、IP地址等資訊:

Linux執行個體
  1. 執行如下命令,為網卡添加路由表並配置路由策略。

    ip -4 route add default via <eth1的網關地址> dev eth1 table 1001
    ip -4 rule add from <eth1的IP地址> lookup 1001

    本樣本中以eth1為例,建立一張eth1使用的路由表1001和一條關聯至該路由表的路由策略,表示來自172.16.20.193的資料包由路由表1001決定其路徑,即將資料包發送至eth1出口。配置如下所示:

    ip -4 route add default via 172.16.20.253 dev eth1 table 1001
    ip -4 rule add from 172.16.20.193 lookup 1001
  2. 配置開機時自動更新路由,使配置永久生效。

    為eth1配置路由後,需要將上一步執行的命令寫入檔案,以便在開機時自動更新路由,否則重啟執行個體後該路由配置會失效。如果您是臨時測試,可忽略此步驟。

    1. 執行如下命令,開啟/etc/rc.local檔案。

      vim /etc/rc.local
    2. i鍵進入編輯模式,將您上一步實際執行的命令寫入檔案,然後按Esc鍵退出編輯模式,輸入:wq儲存退出。

      說明

      注意替換命令中的網卡標識、網關地址等資訊。

    3. 執行如下命令,為/etc/rc.local檔案添加執行許可權。

      sudo chmod +x /etc/rc.local
  3. 執行如下命令,查看建立的路由表和策略路由。

    ip route list table 1001 && \
    ip rule list

    系統返回查詢結果如下圖,表示建立的路由表和策略路由成功。

    image

Windows執行個體

  1. 執行如下命令,為網卡配置策略路由。

    route add -p <目標網路> mask <子網路遮罩> <網關> if <介面索引> metric <路由優先順序>

    本樣本中以乙太網路2為例,設定一條路由,讓所有來自172.16.12.76的資料包都通過172.16.12.253這個網關轉寄。配置如下所示:

    route add -p 0.0.0.0 mask 0.0.0.0 172.16.12.253 if 6 metric 1

    參數說明:

    • -p:使該路由成為永久性路由,重啟後仍然有效。預設不加-p為臨時生效。

    • 目標網路:使用0.0.0.0通常代表預設路由,即當沒有更具體的路由匹配時將使用的路由。

    • 子網路遮罩和預設閘道:網卡的子網路遮罩和預設閘道,您可以通過ipconfig命令查看:

      image

    • 介面索引:網路介面的索引值。您可以通過netsh interface ipv4 show interfaces命令查看:

      image

    • 路由優先順序:metric n,數字越小優先順序越高。

  2. 執行route print,查看新增加的路由是否已經出現在列表中。

    image

情境樣本

本樣本以Alibaba Cloud Linux 3.2為例,說明多網卡情境下,資料包從eth1進入,從eth0離開的情境。如果您對資料流向有嚴格要求,比如在安全性原則中設定了源IP白名單,僅授權特定網路介面對應的IP地址,但由於未正確繫結資料流量路徑,可能導致合法請求因源IP與介面不匹配而被拒絕,引髮網絡不通。您可以通過配置策略路由解決。

  1. 環境準備。

    1. 購買一台ECS執行個體。

      具體操作,請參見自訂購買執行個體

    2. 為ECS執行個體綁定一張輔助彈性網卡。

      具體操作,請參見綁定輔助彈性網卡

    3. 申請EIP,並以普通模式綁定到輔助彈性網卡eth1。

      具體操作,請參見將EIP綁定至輔助彈性網卡

      image

    4. 準備測試端。

      您可以以另一台開通了公網的ECS執行個體作為測試端,或者以您本地機器作為用戶端進行測試。

    5. 執行個體所在安全性群組添加入方向的允許訪問規則,源IP指定為測試端的公網IP,以允許通過ping EIP訪問ECS執行個體。

      image

      具體操作,請參見案例4:只允許特定協議的業務訪問

  2. 在測試端執行以下命令,向ECS執行個體發送資料包。

    ping 47.xx.xx.109

    注意替換IP地址為您為輔助網卡綁定的EIP的地址。

  3. 在ECS執行個體上執行以下命令對兩個網路介面eth0、eth1分別進行ICMP資料包監測。

    • 執行以下命令,在網路介面 eth0 上捕獲 ICMP協議的資料包。

      tcpdump -i eth0 icmp
    • 重新開啟一個視窗,執行以下命令,在網路介面 eth1 上捕獲 ICMP協議的資料包。

      tcpdump -i eth1 icmp
  4. 查看結果。

    未配置策略路由

    可以看到,預設情況下,資料包從eth1介面進入,即eth1收到請求(request),但是從eth0返回(reply)。

    image

    通過查看ECS執行個體的預設路由,可以看到eth0的預設路由優先順序為100(數值越小,優先順序越高),高於eth1的優先順序,因此資料包預設從eth0發出。

    image

    配置策略路由之後
    1. 參照為網卡配置策略路由的操作樣本,為ECS執行個體配置策略路由。

      ip -4 route add default via 172.16.20.253 dev eth1 table 1001
      ip -4 rule add from 172.16.20.177 lookup 1001
    2. 再次在測試端執行ping EIP

    3. 再次在ECS執行個體上監測不同網卡的ICMP資料包。

      可以看到,資料包從eth1介面進入,收到請求(request)。之後,依然從網路介面eth1回複(reply),保持了源進源出的特性。

      image

為網卡配置預設路由

目前ECS在附加網卡時,通常情況下會自動為附加的網卡配置預設路由。部分作業系統如Ubuntu 16不會為輔助彈性網卡配置預設路由(Ubuntu 18及以上會自動設定),預設路由的缺失可能導致您在指定網卡進行外部通訊時,出現網路連通問題。您可以參考如下步驟為網卡配置預設路由。

以下以Ubuntu16為例,為輔助彈性網卡eth1配置預設路由:

  1. 執行如下命令,查看網卡資訊。

    ip a

    image

    可以看到,輔助彈性網卡eth1已經在執行個體內部生效。

  2. 執行如下命令,查看路由資訊。

    route -n

    可以看到,系統只為eth1配置了用於內部通訊的路由,沒有配置處理外部通訊的路由,即從eth1網路介面出去的路由。

    image

    可能的異常情況樣本

    這可能會導致您在指定eth1通訊時候的異常,比如您為eth1網卡綁定了EIP,希望在執行個體內部指定通過eth1的EIP訪問外部公網,可能會發現網路不通,如圖所示:

    image

  3. 執行如下命令,為網卡配置預設路由。

    ip -4 route add default via 172.16.20.253 dev eth1 metric 200
    • -4:表示只處理IPv4地址

    • 172.16.20.253:eth1的網關地址

    • metric 200:設定了此路由的度量值(優先順序)為200。較低的度量值表示更高的優先順序。如果存在多條到達同一目的地的不同路由,則會選擇度量值最低的一條。

  4. 配置開機時自動更新路由,使配置永久生效。

    為eth1配置路由後,需要將上一步執行的命令寫入檔案,以便在開機時自動更新路由,否則重啟執行個體後該路由配置會失效。如果您是臨時測試,可忽略此步驟。

    1. 執行如下命令,開啟/etc/rc.local檔案。

      vim /etc/rc.local
    2. i鍵進入編輯模式,將您上一步實際執行的命令寫入檔案,然後按Esc鍵退出編輯模式,輸入:wq儲存退出。

      說明

      注意替換命令中的網卡標識、網關地址等資訊。

    3. 執行如下命令,為/etc/rc.local檔案添加執行許可權。

      sudo chmod +x /etc/rc.local
  5. 再次執行如下命令,可以看到為eth1添加的路由。

    route -n

    image

    驗證異常情況樣本

    再次指定eth1網卡訪問外部公網,可以正常通訊:

    image