Я хочу настроить 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-го проанализированного файла. Думал команды собраны из всех файлов.
Я хочу сделать эту настройку в конфигурации сети в одном месте, возможно ли это как-то?
Вы должны использовать source
или source-directory
операторы для включения дополнительных файлов конфигураций интерфейсов. На свежих системах по умолчанию стоит строчка source-directory /etc/network/interfaces.d/*
, что принудительно включает все файлы в соответствующий каталог.
Вам не нужны дополнительные файлы. Все конфигурации могут быть расположены в одном месте. Небольшой пример:
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
файл.