У меня Ubuntu 20.04 настроен как маршрутизатор с установленными nftables и frr (настроен ospf). Я настроил два интерфейса (ens33 и ens34) в разных сетях, перенаправление настраивается в /etc/sysctl.conf с net.ipv4.ip_forward = 1, а также в /etc/systemd/network/ens33.network
[Match]
Name=ens33
[Network]
IPForward=1
/etc/systemd/network/ens34.network
[Match]
Name=ens34
[Network]
IPForward=1
файл netplan:
# This is the network config written by 'subiquity'
network:
version: 2
renderer: networkd
ethernets:
ens33:
mtu: 1300
addresses:
- 10.10.2.1/24
gateway4: 10.10.2.254
nameservers:
addresses:
- 10.10.3.1
search:
- management.int
ens34:
mtu: 1300
addresses:
- 10.10.20.254/24
nameservers: {}
bridges:
br0:
mtu: 1300
addresses:
- 10.10.3.22/32
nameservers: {}
После команды "systemctl -p" все идет нормально, но после перезагрузки ip forward отключен ( вывод: sysctl net.ipv4.ip_forward: net.ipv4.ip_forward = 0)
Когда netplan
генерирует конфигурацию, он записывает файл для каждого интерфейса в /run/systemd/network/
в формате: 10-netplan- {интерфейс}.network
. После этого systemd-networkd
применит конфигурацию.
systemd-networkd
найдет файлы конфигурации в /run/...
и ваши файлы конфигурации в /etc/...
и прецессирует их в лексическом приказ.
Из www.freedesktop.org/.../systemd.network.html:
Все файлы конфигурации коллективно сортируются и обрабатываются в лексическом порядке, независимо от каталогов, в которых они находятся. Однако файлы с одинаковыми именами заменяют друг друга.
[Параметры раздела [Match]
Сетевой файл содержит раздел [Match], который определяет, может ли данный сетевой файл применяться к данному устройству; и раздел [Сеть], указывающий, как должно быть настроено устройство. Применяется первый (в лексическом порядке) сетевой файл, соответствующий данному устройству, все последующие файлы игнорируются**, даже если они также совпадают.
Теперь вы видите, что опция IPForward
никогда не будет применяться.
Теперь вам нужно сосредоточить поиск и устранение неполадок на sysctl.conf
Из www.freedesktop.org/.../sysctl.d.html:
Каталоги конфигурации и приоритет
Файлы конфигурации считываются из каталогов /etc/, /run/, /usr/local/lib/ и /usr/lib/ в порядке старшинства, как указано в разделе СИНТАКСИС выше.Файлы должны иметь расширение «.conf». Файлы в /etc/ имеют приоритет над файлами с теми же именами в /run/, /usr/local/lib/ и /usr/lib/. Файлы в /run/ переопределяют файлы с тем же именем в /usr/.Все файлы конфигурации сортируются по имени файла в лексикографическом порядке, независимо от того, в каком из каталогов они находятся. Если в нескольких файлах указана одна и та же опция, запись в файле с последним лексикографическим именем будет иметь приоритет. Таким образом, конфигурация в определенном файле может быть заменена полностью (путем помещения файла с таким же именем в директорию с более высоким приоритетом), либо могут быть изменены отдельные настройки (путем указания дополнительных настроек в файле с другим именем, т.е. заказал позже).
РЕДАКТИРОВАТЬ:
Возможно, что существует приложение, которое переопределяет sysctl.conf
Например, конфигурацию брандмауэра ufw
в /etc/ufw/sysctl. conf
может содержать такую строку, как net/ipv4/ip_forward=0
, которая будет иметь приоритет над /etc/sysctl.conf
. Однако это не конфигурация по умолчанию, и ее необходимо настроить вручную.