如果有一台 Linux 主機在兩個不同的網路(主網路和帶外管理網絡,稱它們為「主」和「管理」)上有兩個接口,則返回流量如何透過同一介面路由回它從哪裡來?
換句話說:從我坐的地方,我透過路由器存取機器的主介面或管理介面。當我 ssh 到主介面時,沒有問題。當我 ssh 到 mgmt 介面時,我的資料包到達伺服器,但伺服器透過主介面上的預設閘道傳回其回應。因此,我的連接沒有建立。如何使伺服器透過 mgmt 網路回應在 mgmt 網路上收到的入站請求?
答案1
我在這裡找到了大部分答案:https://unix.stackexchange.com/questions/4420/reply-on-same-interface-as-incoming
更多資訊請點這裡:http://linux-ip.net/html/routing-tables.html
另外,感謝 Tom Yan,提供了包含大部分所需部分的答案。但我發布這個答案是因為其他答案都不是真正完整、完全準確或易於理解的。
以下過程適用於 Centos 7 /etc/sysconfig/network-scripts/rule-*
。如果有人有這樣的命令,請分享。因此,第一個必要步驟是停用 NetworkManager:route-*
nmcli
systemctl disable NetworkManager
systemctl enable network
systemctl stop NetworkManager
systemctl start network
Linux核心2.2和2.4支援多個路由表,每個路由表編號為0到255 local
。main
這些都列在 中/etc/iproute2/rt_tables
。您可以透過選擇未使用的號碼(檢視/etc/iproute2/rt_tables
)並將其新增至 來建立新的路由表/etc/iproute2/rt_tables
。
在我的例子中,「主」介面是eth0
192.168.20.20,網關為 192.168.20.1,「管理」介面為eth1
192.168.5.5,網關為 192.168.5.1。
我選擇新的路由表編號 200 和新的路由表名稱mgmt
。
echo "200 mgmt" >> /etc/iproute2/rt_tables
接下來,您需要建立一條規則,以便對 mgmt 介面上接收的流量使用新的路由表。互聯網上的其他資源說您只需要對一個接口執行此操作,但實際上您需要在兩個接口上執行此操作,原因如下:注意,如果您僅啟動一個接口,則該接口能夠響應 ping,但是,如果您同時啟動兩個接口,則第一個啟動的接口會回應ping,而第二個接口則不會回應。這意味著,如果您先打開mgmt
接口,然後打開主接口,則主接口將不會響應。因此,最好在兩個介面上定義規則。
這可以一次性完成(非持久),如下所示:
ip rule add from 192.168.20.20 table main
ip route add default via 192.168.20.1 dev eth0 table main
ip rule add from 192.168.5.5 table mgmt
ip route add default via 192.168.5.1 dev eth1 table mgmt
此時,兩個介面都應該響應。現在,為了使其持久化,請注意,如果您閱讀/etc/sysconfig/network-scripts/ifup-routes
,它將解析所有rule-*
和route-*
文件,並將每一行作為參數傳遞給ip rule add
or ip route add
。因此創建四個新文件,如下:
echo "from 192.168.20.20 table main" > /etc/sysconfig/network-scripts/rule-eth0
echo "default via 192.168.20.1 dev eth0 table main" > /etc/sysconfig/network-scripts/route-eth0
echo "from 192.168.5.5 table mgmt" > /etc/sysconfig/network-scripts/rule-eth1
echo "default via 192.168.5.1 dev eth1 table mgmt" > /etc/sysconfig/network-scripts/route-eth1
重啟後,您應該會發現兩個介面都預設工作。
答案2
基於來源的路由 / ip rule
.
假設primary
has1.2.3.4
和mgmt
has 2.3.4.5
(它們的預設閘道分別是1.2.3.1
和2.3.4.1
):
ip rule add from 1.2.3.4 table 234
ip route add default via 1.2.3.1 dev primary table 234
(以上為選填項)
ip rule add from 2.3.4.5 table 345
ip route add default via 2.3.4.1 dev mgmt table 345