ip_forward = 1 в Ubuntu 20.04 после сбоя перезагрузки

У меня 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)

1
задан 16 December 2020 в 21:11

1 ответ

Когда 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. Однако это не конфигурация по умолчанию, и ее необходимо настроить вручную.

1
ответ дан 16 December 2020 в 19:59

Другие вопросы по тегам:

Похожие вопросы: