為每個 NIC 分配一個 IP 範圍或子網
我有一個 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 address
or找到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
這個答案是為了解決它。