Linux

使用配置文件而不是 ip 命令將靜態路由添加到虛擬介面

  • October 31, 2018

我們使用 /etc/sysconfig/network-scripts/route-ethx 文件靜態分配我們的路由。這使得管理它們變得相當容易,因為我們在啟動過程中添加了路由(通過後置腳本)。它們很少更改,如果需要更新,我們只需推出更改並更新建構腳本以包含新路由。

最近,我們有一位客戶要求使用具有唯一 IP 的虛擬介面 (eth0:0)。它需要專門連接到一個網路。eth0 上分配的第一個 IP 將處理所有其他流量。

我所看到的一切都說明瞭如何使用 添加路由ip route add,但是我無法弄清楚如何指定任何進入特定 IP 或網路的東西都可以設置源 IP。如果我使用 ip 命令,它會更新路由文件還是儲存在其他地方以便在重新啟動後保持持久性?如果我必須將條目添加到 eth0:0 的路由文件中,該行應該是什麼樣的?

所以基本上:

如果它轉到 10.0.0.2,則使用 IP 10.0.1.3 作為源。如果它轉到其他任何地方,請使用 IP 10.0.1.2 作為源。

這可能嗎?我該如何完成它?

如果我清楚地理解您的問題,您可以嘗試以下方法

# ip route add 10.0.0.2 via xxx.xxx.xxx.xxx src 10.0.1.3
# ip route add default via yyy.yyy.yyy.yyy src 10.0.2.2

我需要研究另一種方法嗎?

你可以嘗試使用 iptables

# iptables -t nat -I PREROUTING -d 10.0.0.2 -j SNAT --to-source 10.0.1.3

一位最近做過同樣事情的同事澄清了這一點。

要輸入到 route-eth0:0 文件中的一個路由的格式是:

10.0.0.2/32 via 10.0.1.1 dev eth0:0 src 10.0.1.3

預設情況下,通過 eth0 的所有其他流量將被標記為來自 10.0.1.2。10.0.1.1 是預設路由,但數據包將具有正確標記的源 IP。

引用自:https://serverfault.com/questions/534901