LINUX.ORG.RU
решено ФорумAdmin

В netifrc как-то можно управлять отдельным vlan?

 


0

1

В gentoo vlan принято описывать в /etc/conf.d/net, прописывать там ″vlans_eth1=1 2 4″ и т.д. И эти vlan создаются и поднимаются при поднятиии интерфейса eth1. Как-то можно одной командой выключить/включить/переконфигурить один vlan, не рестартуя весь eth1? Я не про команды ip link/addr, а именно какой-нибудь ifup.

Или в каком формате описать vlan в /etc/conf.d/net, чтобы им можно было отдельно управлять?

★★★★★

В документации netifrc https://gitweb.gentoo.org/proj/netifrc.git/tree/doc/net.example.Linux.in (она же у тебя в /usr/share/doc/netifrc-0.7.5/net.example.bz2 находится) указан параметр modules, который определяет какими утилитами разруливается конфиг и соответственно в каком синтаксисе прописывать параметры, либо iproute2, либо ifconfig.

Насколько я помню, через ifconfig ты не можешь рестартовать один alias или vlan, только все, через их «родительский» интерфейс. А с помощью iproute2 — можешь. Только для iproute2 синтаксис немного другой.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)

создаются

да. И это никак не отменить: нужно наживую, добавляй влан в /etc/conf.d/net и руками делай ip link add ... type vlan и далее по списку.

поднимаются

Не совсем. Если указано

vlan_start_lan0="no"
, то нужно делать отдельные симлинки в /etc/init.d для каждого vlan-интерфейса и можно их подымать отдельно. И соответственно - строить зависимости(если надо). Но создать vlan, если надо не рестартовать весь интерфейс, в обоих случаях(no или yes для vlan_start_lan0) придется руками.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Спасибо. Нагуглил, что с 2013 года vlan стали создаватся только при старте физического интерфейса. http://www.gentoo.ru/node/27563

Интерестно, а в конфиг в preup() можно засунуть скрипт, создающий vlan, или это что-то сломает?

Имя файла ведь должено быть в формате /etc/init.d/net.VLAN_NAME, например /etc/init.d/net.eth0.5, если в конфиге имя vlan-интерфейса не задано?

И ещё я не понял, что будет если написать:

vlan2_name="vlan2"
eth0_vlan2_name="eth0.2"

mky ★★★★★
() автор топика
Ответ на: комментарий от mky

eth0_vlan2_name=«eth0.2»

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

Вообще если нужно что-то нетривиальное, можешь руками через preup/postdown всё сделать:

rc_net_lan0_5_need="net.lan0"
config_lan0_5="null"
preup() {
        if [ "${IFACE}" = "lan0.5" ]; then
                ip link add lan0.5 link lan0 type vlan id 5
        fi
}
postdown() {
        if [ "${IFACE}" = "lan0.5" ]; then
                ip link del lan0.5
        fi
}
oas1 ~ # /etc/init.d/net.lan0.5 start
 * Bringing up interface lan0.5
 *   Running preup ...                                                                                                                                                 [ ok ]
 *   Waiting for tentative IPv6 addresses to complete DAD (5 seconds) ..                                                                                               [ ok ]
 *   Running postup ...
oas1 ~ # /etc/init.d/net.lan0.5 restart
 * Bringing down interface lan0.5
 *   Running postdown ...
 * Bringing up interface lan0.5
 *   Running preup ...                                                                                                                                                 [ ok ]
 *   Waiting for tentative IPv6 addresses to complete DAD (5 seconds) ..                                                                                               [ ok ]
 *   Running postup ...
Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 3)
Ответ на: комментарий от Pinkbyte

У меня пока тоже нет одинаковых номеров vlan, но непонятно, как правильнее, и как себя поведёт netifrc. С одной стороны, писать ″vlan2_name″ удобнее, при переносе его на другой интерфейс просто меняяем содержимое, а с другой стороны, непонятно что будет при если потом на двух интерфейсах окажется vlan2, а ты это не заметишь.

Особо ничего не тривиального я не хочу. Просто мне хочется настраивать интерфейсы без ручного ввода команды ip. Точнее, мне хочется как-то знать, что наконфигурить netifrc при загрузке, но, не путём перезагрузки системы, что убедиться, что я нигде не опечатался в файле /etc/conf.d/net.

Про preup() я думаю, но у меня желание засунуть туда создание любого vlan по номеру, получается, нужно по $IFACE искать id и физический интерфейс. Надо будет поковырять. Спасибо. Отмечаю тему решёной.

mky ★★★★★
() автор топика
Ответ на: комментарий от yu-boot

Уже написал, но объясню ещё раз. Проблем сконфигурить всё через командую строку нет. Проблема вылезет после перезагрузки компа, если где-то в конфиге опечатался. А перезагрузка сервера может быть нескоро и в неподходящее время. Поэтому и хочется после настройки интерфейсов руками, удалить эти настройки и дёрнуть системные велосипеды, чтобы проверить, что все адреса/маршруты появились.

mky ★★★★★
() автор топика
Ответ на: комментарий от mky

Ну так делаешь по месту утилитами и правишь соответственно конфиг. В дебиане так и делаю, systemctl restart network(ing) почему-то тупо обрывает связь насовсем до ребута. Хорошо если виртуалка, которую можно поковырять и без ssh.

yu-boot ★★★★
()
Ответ на: комментарий от yu-boot

В дебиане так и делаю, systemctl restart network(ing) почему-то тупо обрывает связь насовсем до ребута.

Типа это круто и правильно днём обрывать все работающим с сервером связь?

Чтобы на виртуалке создать сеть с кучкой vlan и соответствующим трафиком нужно ещё попотеть и потом постоянно синхронизировать настройки сети сервера и виртуалки...

mky ★★★★★
() автор топика