Назад | Перейти на главную страницу

Невозможно настроить сетевой интерфейс с помощью записей в разных файлах внутри /etc/network/interfaces.d

Я хочу настроить vlan-интерфейс, используя файл в /etc/network/interfaces.d/, например

vlan1cfg:

auto vlan1
iface vlan1 inet static
    address <some addr>
    netmask <some mask>
    vlan-raw-device <some bridge>
    post-up route add -net 224.0.0.0/4 vlan1
    post-up ip addr add <some addr>/25 dev vlan1
    post-up ip addr add <some addr>/25 dev vlan1

и условно в некоторых системах я хочу добавить дополнительный адрес к этому интерфейсу, используя дополнительный файл конфигурации, например

vlan1cfgadd:

auto vlan1
iface vlan1 inet static
    post-up ip addr add <some other addr>/25 dev vlan1

Если я выдам ifquery -v vlan1 он сообщает о синтаксическом анализе всех файлов, но сообщаются только команды 1-го проанализированного файла. Думал команды собраны из всех файлов.

Я хочу сделать эту настройку в конфигурации сети в одном месте, возможно ли это как-то?

  1. Вы должны использовать source или source-directory операторы для включения дополнительных файлов конфигураций интерфейсов. На свежих системах по умолчанию стоит строчка source-directory /etc/network/interfaces.d/*, что принудительно включает все файлы в соответствующий каталог.

  2. Вам не нужны дополнительные файлы. Все конфигурации могут быть расположены в одном месте. Небольшой пример:

auto vlan1
iface vlan1 inet static
    vlan-raw-device brX
    vlan-id 1
    address <some-addr>/<prefix-len>
    up ip addr add <some-addr-2>/<prefix-len> dev ${IFACE} || true
    up ip addr add <some-addr-3>/<prefix-len> dev ${IFACE} || true
    up ( test -f /var/run/vlan1.extra.address && ip addr add <some-other-addr>/<prefix-len> dev ${IFACE} ) || true
    post-up ip route replace 224.0.0.0/4 dev ${IFACE} || true

В этом примере использование дополнительных адресов зависит от существующих /var/run/vlan1.extra.address файл.