Networking

為每個 NIC 分配一個 IP 範圍或子網

  • July 2, 2021

我有一個 manjaro linux 伺服器,至少有兩個網路介面控制器 (NIC),並且希望將所有流量路由到某個 IP 地址範圍或子網,通過一個路由,其他所有流量路由到另一個。

到目前為止,我已經通過 配置了網路nmcli,但我對這個主題的了解很有限。

理想情況下,該解決方案將通過命令行工作,持久且不強烈依賴於使用的發行版。

編輯:根據使用 nmcli / Centos 7的路由 IP 流量,類似於

nmcli connection modify "Wired connection 1" +ipv4.routes "10.0.0.0/16"

應該可以工作,但是這些包似乎沒有通過正確的網路路由。

關於此答案的一般預先資訊

我假設我的答案通常基於我基於 Debian 系統的知識,但是在這一部分中我跳過了網路管理器部分,因為我無論如何都沒有使用它,而且我個人認為它只會變得複雜。

您問過,並且在評論中似乎幾乎很清楚,您希望將 10.0.0.0/16 路由到另一個網卡。

您提供了“有線連接 1”+ipv4.routes “10.0.0.0/16”

– 哪個設備名稱應該是正確的,可以通過ip addressor找到ifconfig – 通常你不確定它,拔下卡電纜並查看dmesg/var/log/syslog

因此,在我的範例中,假設以下內容:

  • “有線連接 1” = eth0
  • 應將“10.0.0.0/16”或 10.0.0.0/255.255.0.0(或 10.0.0.0-10.0.255.255)路由到 eth0

測試或預設的快捷方式,而不是持久性:

ip route add 10.0.0.0/16 dev eth0

現在的棘手部分是,讓它持久化。

在 RHEL/CentOS/Fedora/基於科學的系統上,

  • 編輯 /etc/sysconfig/network-scripts/route-eth0

在此處添加

10.0.0.0/16 via 10.0.0.1

其中第一個是您要匹配的網路,第二個是路由器的 IP。在我的範例中, 10.0.0.1

使用 Debian 方式。(Debian 基礎系統,如 Ubuntu)

在某些系統上,/etc/network/interfaces 可能看起來是空的。在這種情況下,您必須查看 vi /etc/network/interfaces.d,但我們假設要使用基本的 /etc/network/interfaces 文件。

  • 編輯 /etc/network/interfaces

尋找你的介面 eth0

iface eth0 inet static
       address  10.0.0.2
       netmask  255.0.0.0

修改,看起來像

iface eth0 inet static
       address  10.0.0.2
       netmask  255.0.0.0
###EITHER with Gateway
#post-up route add -net 10.0.0.0 netmask 255.255.0.0 gw 10.0.0.1 dev eth0
#post-down route del -net 10.0.0.0 netmask 255.255.0.0 gw 10.0.0.1 dev eth0

###or without Gateway
#post-up route add -net 10.0.0.0 netmask 255.255.0.0 dev eth0
#post-down route del -net 10.0.0.0 netmask 255.255.0.0 dev eth0

通用的、靜態的方式(在啟用 Systemd 的系統上可能已經過時)

編輯 /etc/rc.d/rc.local 或 /etc/rc.local

添加

  • ip route add 10.0.0.0/16 dev eth0

這個答案是為了解決它。

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