[SOLVED]netifrc, eudev

Не отрабатывают скрипты net.* ни для одного интерфейса, кроме lo

Доброго времени суток, уважаемые!

Исходные данные:

Программное обеспечение:
  • gentoo 4.0.5 amd64 (Gentoo13, Q4)
  • openrc 0.18.4 USE="ncurses netifrc pam unicod"
  • netifrc 0.2.2
  • eudev 3.1.5 USE="hwdb kmod"
  • Файл /etc/portage/package.mask/systemd
  • sys-apps/systemd
    sys-fs/udev
    
  • Файл /etc/portage/make.conf
  • ...
    USE="bindist mmx sse sse2 udev -ipv6"
    ...
    
Сетевая карточка:
  • >udevadm test-builtin net_id /sys/class/net/enp0s25
    ID_NET_NAME_MAC=enx.........
    ID_OUI_FROM_DATABASE=.......
    ID_NET_NAME_PATH=enp0s25
  • >udevadm info -q all /sys/class/net/enp0s25
    ...........
    IFINDEX=9
    INTERFACE=enp0s25
    ........
    
Конфигурация:
  • Файл /etc/conf.d/net
    modules="iproute2"
    config_enp0s25="192.168.1.1/24"
  • Есть ссылка
    /etc/init.d/net.enp0s25 -> ./net.lo
  • >rc-status
    Runlevel: default
    syslog-ng    [  started  ]
    iptables     [  started  ]
    net.enp0s25  [  stopped  ]
    ..........
  • >udevadm test -a add /class/net/enp0s25
    .......
    run: 'net.sh enp0s25 start'

Проблема:

При выполнении скрипта

/etc/init.d/net.enp0s25

netifrc не конфигурирует и не поднимает интерфейс enp0s25.
Вместо него делается попытка поднять интерфейс lo в результате чего получаем:

WARNING: net.lo has already been started

P.S. Помогло удаление ссылки net.enp0s25 -> net.lo и копирование net.lo -> net.enp0s25
Но ведь это костыль!

Решение тут

.

Фантазии леннарта (predictable…)?
Не… Не слышал.

ifconfig в помощь.

:wq
--
Live free or die

Тут есть немного про это.

Тут есть немного про это.

ip a; ip l в студию. Если

ip a; ip l в студию.
Если нет - поставить

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

ip l, ip a

После
/etc/init.d/net.enp0s25 start
имеем:

>ip link
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s25:  mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
>ip address
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s25:  mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff

А может просто создать

А может просто создать правила для классического именования интерфейсов?

/etc/udev/rules.d/70-persistent-net.rules:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="ethX"

PS: Терпеть не могу это predictable именование интерфейсов.

Дело не в eudev

После небольшой отладки скрипта /etc/init.d/net.lo методом "грубой силы" выяснилось, что какую-бы ссылку на него я не запускал, переменная RC_SVCNAME всегда имеет значение net.lo.
Соответственно переменная IFACE приобретает значение lo.

А почему так происходит?

Тут я и теряюсь...

Костыль

Помогло следующее:

cp net.lo net.enp0s25

Но это нарушает концепцию netifrc. Т.е. это не решение проблемки.

/

Ты Handbook внимательно читал?

:wq
--
Live free or die

Вроде

Особенно раздел D. Gentoo Network Configuration подразделы 1а Getting started и 2.d. Network Interface Naming

Что-то не дочитал?

З.Ы. в первом посте было сказано:

/etc/init.d/net.enp0s25 -> net.lo

?

Тебе не кажется странным:

ituser написал(а):
config_enp0s25="123.123.123.123/24"

ЗЫ: /etc/conf.d/net:

config_lan0="192.168.123.123 netmask 255.255.255.0 brd 192.168.123.255"

:wq
--
Live free or die

Согласен

Просто я не хотел показывать реальные адреса.

Точно так же может показаться странным и

2: enp0s25: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff

Просто дело не в адресах/паролях/явках.

Дело в "костыле", который я описал.

Повторю Суть.

  1. Имеем ссылку /etc/init.d/net.enp0s25 -> net.lo
  2. При "ручном старте" интерфейса enp0s25 (/etc/init.d/net.enp0s25 start) стартуется не enp0s25, а lo

  3. Костыль в виде удаления ссылки и выполнения cp net.lo net.enp0s25 решает проблемку.

/

ReinForce написал(а):
А может просто создать правила для классического именования интерфейсов?

/etc/udev/rules.d/70-persistent-net.rules:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="ethX"

PS: Терпеть не могу это predictable именование интерфейсов.

Самое смешное не в этом, а в том, что IRL в рамках общего случая оно совсем не «predictable».
Но, помнится, упоминалось о возможности проблем вследствие коллизий при упорствовании в использовании классических имён (ethX).
Конечно было бы правильно доисследовать гипотезу до некоторой завершйнной точки…
Но я просто выбрал подходящую альтернативу (варианты nicX, lanX).

:wq
--
Live free or die

Вместо малоинформативных

Вместо малоинформативных огрызков конфигураций ты бы лучше показал полные конфиги и USE-флаги для соответствующих пакетов и сервисов.

USE

Обновление Gentoo13-2015Q4

USE-флаги пакетов стандартные.

Замаскированы пакеты systemd и udev.

В глобальных USE-флагах выставлено udev и -ipv6

netifrc и именование сетевых интерфейсов

Задумался над содержанием /etc/conf.d/net, независимым от имени сетевого интерфейса.

  1. Подача №1
    Файл /etc/conf.d/net - кусок shell-скрипта
  2. Подача №2
    Что-то в духе (нужное раскоментиорвать):
    ## kernel naming
    #LanIf0="eth0"
    ## eudev predictable naming
    #LanIf0="enp0s25"
    ## eudev custom naming
    #LanIf0="hwEth0"

ituser написал(а): Задумался

ituser написал(а):
Задумался над содержанием /etc/conf.d/net, независимым от имени сетевого интерфейса.

  1. Подача №1
    Файл /etc/conf.d/net - кусок shell-скрипта
  2. Подача №2
    Что-то в духе (нужное раскоментиорвать):
    ## kernel naming
    #LanIf0="eth0"
    ## eudev predictable naming
    #LanIf0="enp0s25"
    ## eudev custom naming
    #LanIf0="hwEth0"
bzless /usr/share/doc/netifrc-0.3.1/net.example.bz2 написал(а):
# ADVANCED CONFIGURATION
...
# The return values for the postup, postdown, failup and faildown functions are
# ignored since there's nothing to do if they indicate failure.
#
# ${IFACE} is set to the interface being brought up/down
# ${IFVAR} is ${IFACE} converted to variable name bash allows

Быть может я Вас не понимаю, но зачем городить абсракции в файле /etc/conf.d/net?
Есть же getopts, вот и пользуйтесь им на здоровье.

Не искать при изменении имени интерфейса

Например:

## kernel naming
#LanIf0="eth0"
## eudev predictable naming
#LanIf0="enp0s25"
## eudev custom naming
#LanIf0="hwEth0"

eval config_${LanIf0}="192.168.1.1/24"

.

ituser написал(а):
Например:

## kernel naming
#LanIf0="eth0"
## eudev predictable naming
#LanIf0="enp0s25"
## eudev custom naming
#LanIf0="hwEth0"

eval config_${LanIf0}="192.168.1.1/24"

Нет, это не решение - тоже костыль. В /sys/class/net должны быть все сетевые, найденные eudev'ом.
Почему openrc не ходит по ссылкам - интереснее.

/

willy написал(а):
Почему openrc не ходит по ссылкам - интереснее.

У меня ходит.
Так что вопрос скорее к общему упадку культуры.

:wq
--
Live free or die

willy написал(а):Нет, это

willy написал(а):
Нет, это не решение - тоже костыль. В /sys/class/net должны быть все сетевые, найденные eudev'ом.

Предлагается не решение проблемы с udev - просто проблемы нет.
Предлагается шаблон для /etc/conf.d/net, который будет не зависеть от того, какой из трёх вариантов именования (kernel, udev-predictable, udev-custom) используется в данный момент.
Изменил вариант именования - изменил одну строку на интерфейс в /etc/conf.d/net.

willy написал(а):
Почему openrc не ходит по ссылкам - интереснее.

Почему не ходит? Ходит. Но, только по абсолютным. Смотрите решение

/

ituser написал(а):
Почему не ходит? Ходит. Но, только по абсолютным. Смотрите решение

Где-то здесь фигня.
Потому что у меня, как у тов. Егорова, тоже всё замечательно работает с прописанными в Handbook'е символьными ссылками.

:wq
--
Live free or die

Так и у меня теперь ходит!

Доброго Времени суток!

Все ссылки по "Настенной Книге" работают.
НО, только абсолютные.

Попробуйте сделать относительную ссылку (которая помогает при глупом/тупом копировании).

Думаю возникнут проблемки с netifrc.

Ведь есть разница между:

cd /etc/init.d/
ln -s /etc/init.d/net.lo ./net.enp0s25

и

cd /etc/init.d/
ln -s /etc/init.d/net.lo /etc/init.d/net.enp0s25

Вот в эту разницу я и "воткнулся"!

.

ituser написал(а):
Ведь есть разница между:

cd /etc/init.d/
ln -s /etc/init.d/net.lo ./net.enp0s25

В использованной мной инструкции было:

# cd /etc/init.d/
# ln -s /etc/init.d/net.lo net.eth0

(обратите внимание на отсутствие указаний на каталог во втором случае)

:wq
--
Live free or die

А как к такому относИться?

ln -s /etc/init.d/net.{lo,enp0s25}

?

Это из netifrc/README...

У Вас не указан каталог для назначения. Что "подгребается" по умолчанию?

Я был глуп и указал явно. Но не абсолютно.

А, например, у OpenRC какой каталог будет выступать в какчестве ".\" ?

А у netifrc?

/

ituser написал(а):
  • Подача №1
    Файл /etc/conf.d/net - кусок shell-скрипта
  • Неверно.
    runscript != shell.
    Да и шеллы бывают разные…

    ituser написал(а):
  • Подача №2
    Что-то в духе (нужное раскоментиорвать):
    ## kernel naming
    #LanIf0="eth0"
    ## eudev predictable naming
    #LanIf0="enp0s25"
    ## eudev custom naming
    #LanIf0="hwEth0"
  • Нарушение логики.
    Имена сетевых устройств назначаются где-то в /etc/udev/rules.d/80-net-name-slot.rules

    :wq
    --
    Live free or die

    Подправил первый пост:

    Подправил первый пост: добавил информации.

    Решение

    Моя глупость заключалась в том, что я использовал относительные ссылки:

    /etc/init.d/enp0s25 -> ./net.lo

    Необходимо использовать только абсолютные ссылки:

    /etc/init.d/enp0s25 -> /etc/init.d/net.lo

    Всё-таки чего-то я не дочитал!

    хм. всегда делал cd

    хм. всегда делал

    cd /etc/init.d
    ln -l net.lo net.eth0
    

    ituser написал(а): Моя

    ituser написал(а):
    Моя глупость заключалась в том, что я использовал относительные ссылки:

    /etc/init.d/enp0s25 -> ./net.lo

    Необходимо использовать только абсолютные ссылки:

    /etc/init.d/enp0s25 -> /etc/init.d/net.lo

    Всё-таки чего-то я не дочитал!

    Нет, можно использовать и относительные, но БЕЗ указания директории. То есть не /etc/init.d/enp0s25 -> ./net.lo а /etc/init.d/enp0s25 -> net.lo. Почему так - отсылаю читать маны по dirname, readlink и прочим связанным с разрешением канонического пути командам.

    Нейтральность - высшее достижение сознания!

    Очередная правка первого сообщения

    ...привёл подраздел "Есть ссылка" в соответствие первому вопросу (относительная ссылка)...

    Может тему пора сменить?

    С Новым Годом и Рождеством!

    Благодарю всех участников этого обсуждения.

    Особая благодарность Anarchist и Pinkbyte за посыл в нужном направлении.

    Если в системе eudev, то по

    Если в системе eudev, то по почему интерфейс enp0s25, а не ethX?

    .

    sspphheerraa написал(а):
    по почему интерфейс enp0s25, а не ethX?

    Наск-ко мне не изменяет склероз, это зависит от наличия в /etc/udev/rules.d/ файла 70-persistent-net.rules

    Мы тоже не всего читали Шнитке!.. © В. Вишневский

    Ах, ну да, правильно.

    Ах, ну да, правильно.

    Не совсем так

    Файл /etc/udev/rules.d/70-persistent-net.rules используется для пользовательского именования (user/custom naming).
    Постоянные (predictable) имена задаются в файле правил /lib/udev/rules.d/80-net-name-slot.rules.

    Если удалить последний файл или сделать ссылку /lib/udev/rules.d/80-net-name-slot.rules -> /dev/null, то имена останутся "ядерные" (ethX).

    Настройки просмотра комментариев

    Выберите нужный метод показа комментариев и нажмите "Сохранить установки".