強製本地網路流量通過交換機

強製本地網路流量通過交換機

我有一台有三塊網卡的機器。一張卡連接到 WAN,另外兩張卡連接到具有相同子網路 (192.168.1.0/24) 的相同交換器。我想要做的是在兩個卡之間發送數據,但要確保數據實際上是通過交換機,而不是保留在 Linux 網路堆疊內部。

當我正常設定兩張卡並嘗試從另一張卡中 ping 一張卡時,它可以工作,但 Wireshark 不會顯示任何流量,因此它不會連接到網路。

我嘗試設定到交換器的靜態路由,試圖強制所有流量都必須通過交換器。當我執行此操作時,ping 會得到網路回應,並且我會收到大量未回覆的 ARP 請求,試圖查找其他位址。但是任一位址都可以 ping 通子網路上的另一台計算機,而該計算機也可以 ping 通任一位址。

我嘗試過更改 Linux 核心上的 arp 過濾器設置,但沒有成功。

有什麼建議麼?謝謝!

此外,透過設定一個帶有 IP 別名的 NIC 來完成相同的事情還有額外的好處。

答案1

我是新來的,但我可能知道這個問題的答案。

作業系統將嘗試識別另一個網卡是本機開發者。我認為你可以使用'開發者'選項'ip路由' 強制退出其他網卡。

例如,我有一個IP位址:

45.32.160.129

此子網路的路由顯示裝置 dev ens3

45.32.160.0/24 dev ens3 proto kernel scope link src 45.32.160.129

但假設我有另一個網卡,ens4,位址為 45.32.161.4/24:

45.32.161.0/24 dev ens4 proto kernel scope link src 45.32.161.4

那你可以使用 '開發者'選項'ip路由' 指定使用的設備。這樣,當您嘗試從本地電腦存取它時,您可以指定另一個網路卡使用其自身作為 ens3 ip,而不是使用 ens3(本身)。這樣做的技巧是您還必須使用策略路由。因為您不能讓網卡嘗試存取自身並退出其他卡接口,因為它永遠找不到自己。因此,您必須使用策略/來源路由指定,當該卡嘗試存取它時,它應該只跳過另一張卡。這就是您必須指定來源匹配的地方。更進一步,您必須確保在您嘗試使用或測試的網路軟體中綁定到正確的 IP 來源位址。這應該會強制它透過交換機存取另一個網卡。當然,您也會對另一張卡執行相同的操作,但方向相反。

這可能會解決您的問題。看著那(這 'ip路由' 路由優先權和 ' 的手冊頁開發者' 範圍。然後看規則比對來做策略部分。它應該看起來像這樣:

ip rule add from 45.32.161.4 lookup from1
ip rule add from 45.32.160.129 lookup from2

然後添加相反的路線:

ip route add 45.32.160.129 via 45.32.161.4 dev ens4 table from1
ip route add 45.32.161.4 via 45.32.160.129 dev ens3 table from2

您需要在 /etc/iproute2 中建立這些表

相關內容