18.04.1 Системная сеть LTS не применяется [RoutingPolicyRule]
У меня есть экземпляр сервера с двумя интерфейсами, и я создал правило для обеспечения того, чтобы трафик, который входит в ens160, выходил ens160, несмотря на совпадение маршрута по умолчанию для ens192.
Маршруты и правила работают по желанию при создании вручную с использованием ip
при применении нетпланом netplan apply
, но не тогда, когда systemd-networkd перезапускается с помощью сгенерированных netplan файлов конфигурации. В частности, правило не применяется.
netplan.yaml:
network:
ethernets:
ens160:
addresses:
- 192.168.1.238/26
- 192.168.1.240/26
- 192.168.1.241/26
dhcp4: false
gateway4: 192.168.1.193
routes:
- to: 0.0.0.0/0
via: 192.168.1.193
table: 200
routing-policy:
- from: 192.168.1.192/26
table: 200
ens192:
addresses:
- 10.125.210.38/23
dhcp4: false
version: 2
/run/systemd/network/10-netplan-ens160.network:
[Match]
Name=ens160
[Network]
Address=192.168.1.238/26
Address=192.168.1.240/26
Address=192.168.1.241/26
Gateway=192.168.1.193
[Route]
Destination=0.0.0.0/0
Gateway=192.168.1.193
Table=200
[RoutingPolicyRule]
From=192.168.1.192/26
Table=200
список маршрутов ip:
default via 192.168.1.193 dev ens160 proto static
10.125.210.0/23 dev ens192 proto kernel scope link src 10.125.210.38
192.168.1.192/26 dev ens160 proto kernel scope link src 192.168.1.238
Таблица 200 списка IP-маршрутов:
default via 192.168.1.193 dev ens160 proto static
После netplan apply
, ip rule list
(этот конфиг работает):
0: from all lookup local
0: from 192.168.1.192/26 lookup 200
32766: from all lookup main
32767: from all lookup default
Однако после systemctl restart systemd-networkd
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Журнал systemd после перезапуска systemd-networkd:
Nov 20 17:30:28 lb1 systemd[1]: Stopping Network Service...
Nov 20 17:30:28 lb1 systemd[1]: Starting Network Service...
Nov 20 17:30:28 lb1 systemd-networkd[1810]: ens192: Gained IPv6LL
Nov 20 17:30:28 lb1 systemd-networkd[1810]: ens160: Gained IPv6LL
Nov 20 17:30:28 lb1 systemd-networkd[1810]: Enumeration completed
Nov 20 17:30:28 lb1 systemd[1]: Started Network Service.
Nov 20 17:30:28 lb1 systemd-networkd[1810]: ens160: Link is not managed by us
Nov 20 17:30:28 lb1 systemd-networkd[1810]: lo: Link is not managed by us
Nov 20 17:30:28 lb1 systemd-networkd[1810]: lo: Link is not managed by us
Nov 20 17:30:28 lb1 systemd-networkd[1810]: ens192: Configured
Nov 20 17:30:28 lb1 systemd-networkd[1810]: ens160: Configured
Обновление 1: выпуск два systemctl restart systemd-networkd
применяет правило после второго вызова. Еще один, и это уходит. Wut. Журналы показывают, что он применяется, хотя и не явно, каждый раз:
Nov 20 18:57:52 lb1 systemd-networkd[1461]: ens160: Setting routing policy rules
Nov 20 18:57:52 lb1 systemd-networkd[1461]: ens160: Setting routes
Nov 20 18:57:52 lb1 systemd-networkd[1461]: ens160: Routing policy rule configured
Nov 20 18:57:52 lb1 systemd-networkd[1461]: ens160: Routes set
Nov 20 18:57:52 lb1 systemd-networkd[1461]: ens160: Configured
Обновление 2: последовательно netplan apply
также включить и выключить правило.