如何使用 systemd-networkd 在同一網關上設置附加路由
由於涉及 VPN 和 IP 範圍衝突的一些網路特性,我有兩個子網路由到兩個不同的介面。我想讓一個子網中的一個 IP 地址通過不同的網關出去。
我可以通過執行:
$ route add -host 1.2.3.4 gw 5.6.7.8 $ ip route show 1.2.3.4 via 5.6.7.8 dev eth0 scope link
我想讓這個改變永久化。當我使用 systemd-networkd 時,我試圖通過更新現有的來做到這一點
/etc/systemd/network/50-dhcp.conf
:[Match] Name=eth0 [Network] DHCP=ipv4 [Route] #Gateway=5.6.7.8 Destination=1.2.3.4/32
這行得通,但沒有這
Gateway
條線,它不會設置路線:$ ip route show 1.2.3.4 dev eth0 proto static scope link
如果我取消註釋該
Gateway
行,那麼新路線根本不會出現!使用 systemd-networkd 添加靜態路由時如何指定網關?
不能說我知道修復是什麼,但是在升級到
systemd
版本 242 後問題就消失了,現在它可以工作了,當您同時列出Gateway
和Destination
選項時。
你應該看看這個文章:
它解釋了您應該如何:
- 創建一個命名路由表,在下面的情況下路由表稱為“mgmt”並獲取編號“200”。
echo '200 mgmt' >> /etc/iproute2/rt_tables
- 最初 /etc/iproute2/rt_tables 文件看起來像這樣,帶有一些保留的數字:
# # reserved values # 255 local 254 main 253 default 0 unspec # # local #
2. 該文章繼續指定如何添加路由: > > 下面,一個 Debian 7/8 介面文件定義了 eth0 和 eth1。eth1 是 172 網路。eth0 也可以使用 DHCP。172.16.100.10 是分配給 eth1 的 IP 地址。172.16.100.1 是路由器的 IP 地址。 > > >
source /etc/network/interfaces.d/*
The loopback network interface
auto lo iface lo inet loopback
The production network interface
auto eth0 allow-hotplug eth0
iface eth0 inet dhcp
Remove the stanzas below if using DHCP.
iface eth0 inet static address 10.10.10.140 netmask 255.255.255.0 gateway 10.10.10.1
The management network interface
auto eth1 allow-hotplug eth1 iface eth1 inet static address 172.16.100.10 netmask 255.255.255.0 post-up ip route add 172.16.100.0/24 dev eth1 src 172.16.100.1 table mgmt post-up ip route add default via 172.16.100.1 dev eth1 table mgmt post-up ip rule add from 172.16.100.10/32 table mgmt post-up ip rule add to 172.16.100.10/32 table mgmt
> > 重新啟動或重新啟動網路。 > > > 感謝使用者[Christopher](https://unix.stackexchange.com/users/29678/christopher)的回答。