多網路卡路由出口配置

SangriaChant發表於2024-05-07

背景

Windows 建立的虛擬機器只能透過 NAT 上網(橋接需要過認證),但需要橋接到內網供外部訪問。

此場景使用的兩張網路卡會同時被設定為預設閘道器,出口流量有機率從橋接網路卡出口導致無法訪問。

路由表基礎操作

檢視路由策略

[root@localhost ~]# ip rule

0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

檢視路由表

[root@localhost ~]# ip route list

default via 172.21.208.1 dev eth0 proto dhcp metric 101
10.60.20.0/24 dev eth1 proto kernel scope link src 10.60.20.12 metric 100
172.21.208.0/20 dev eth0 proto kernel scope link src 172.21.219.71 metric 101

新增預設路由

[root@localhost ~]# ip route add default via 10.60.20.254 dev eth1

刪除預設路由

[root@localhost ~]# ip route del default via 10.60.20.254 dev eth1

多網口出口配置

一般配置多網路卡時,兩張網路卡都會被配置為預設路由,使用 ip route list 檢視能看到類似如下配置

[root@localhost ~]# ip route list

default via 10.60.20.254 dev eth1 proto dhcp metric 100
default via 172.21.208.1 dev eth0 proto dhcp metric 101
10.60.20.0/24 dev eth1 proto kernel scope link src 10.60.20.12 metric 100
172.21.208.0/20 dev eth0 proto kernel scope link src 172.21.219.71 metric 101

對於 default via 10.60.20.254 dev eth1 proto dhcp metric 100

  • default 表示預設路由
  • via 10.60.20.254 表示資料包將發往 10.60.20.254 這個目標 IP 地址
  • dev eth1 指定資料包將從 eth1 介面傳送
  • proto dhcp 表示該路由規則是透過 DHCP 協議動態分配的
  • metric 100 表示優先順序度量值(越小優先順序越高)

對於 10.60.20.0/24 dev eth1 proto kernel scope link src 10.60.20.12 metric 100

  • 這是一個具體的子網路由規則,用於指定資料包如何到達 10.60.20.0/24 子網。
  • 10.60.20.0/24 表示目標子網地址範圍
  • dev eth1 指定資料包將從 eth1 介面傳送
  • proto kernel 表示該路由規則由核心自動生成
  • scope link 表示這是一個本地連結,即目標 IP 地址與本機直接相連
  • src 10.60.20.12 表示源 IP 地址,即從 10.60.20.12 傳送到目標子網
  • metric 100 表示優先順序度量值(越小優先順序越高)

如果不希望訪問外網時透過 10.60.20.254 閘道器,只需將第一條路由刪除即可,執行

[root@localhost ~]# ip route del default via 10.60.20.254 dev eth1

驗證除了 10.60.20.0/24 的地址,都會走 eth0 網路卡

[root@localhost ~]# ip route get 10.60.20.10
10.60.20.10 dev eth1 src 10.60.20.12
    cache

[root@localhost ~]# ip route get 1.1.1.1
1.1.1.1 via 172.21.208.1 dev eth0 src 172.21.219.71
    cache

[root@localhost ~]# ip route get 8.8.8.8
8.8.8.8 via 172.21.208.1 dev eth0 src 172.21.219.71
    cache

儲存設定

以上路由會在重啟後被清理,應使用 ip route save 儲存資訊

sudo ip route save table main > /var/opt/route-main.rules

使用 ip route restore 恢復

sudo ip route flush table main
sudo ip route restore table main < /var/opt/route-main.rules

也可以將其寫為 systemd 指令碼,當網路卡準備完成後執行

相關文章