LINUX.ORG.RU
ФорумAdmin

net.ppp0

 ,


0

1

как в gentoo настроить pppoe-соединение, минуя всякие NetworkManager'ы, как в openrc — /etc/conf.d/net и /etc/init.d/net.ppp0, но используя systemd?



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

Для этого надо написать свой service.

Сначала надо добиться, чтобы pppd call adsl правильно устанавливал соединение (напиши, если нужна помощь - а вообще см. http://www.linuxfromscratch.org/blfs/view/svn/basicnet/ppp.html#id2754296). Потом надо создать файл /etc/systemd/system/adsl.service с таким содержимым (не проверено, могут быть опечатки):

[Unit]
Description=ADSL
After=syslog.target
Wants=network.target
Before=network.target

[Service]
ExecStartPre=/sbin/ip link set eth0 up
ExecStart=/usr/sbin/pppd call adsl nodetach

[Install]
WantedBy=multi-user.target

Известный БАГ: нет никаких гарантий, что systemd не попытается запустить это дело до того, как ядро распознает сетевое устройство eth0, через которое должны идти pppoe-пакеты.

Ну и далее стандартно: systemctl enable adsl.service ; systemctl start adsl.service

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

Известный БАГ: нет никаких гарантий, что systemd не попытается запустить это дело до того, как ядро распознает сетевое устройство eth0, через которое должны идти pppoe-пакеты.

Какой ещё баг? Зависимость же нужно прописать. Конечно, он будет так пытаться делать, если ему не сказать, что так делать не надо. Юнит будет выглядеть примерно так:

[Unit]
Description=ADSL
After=sys-devices-(нужный_кусок_который_надо_посмотреть_в_выхлопе_«systemctl --full»)-net-eth0.device

[Service]
ExecStartPre=/sbin/ip link set eth0 up
ExecStart=/usr/sbin/pppd call adsl nodetach

[Install]
WantedBy=network.target

// Тоже не проверял.

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

Да, вторая строчка After поможет.

Заметим, что у нас разница в написании отношений к network.target. Мой вариант списан с NetworkManager.service и dhcpcd.service.

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

Заметим, что у нас разница в написании отношений к network.target. Мой вариант списан с NetworkManager.service и dhcpcd.service.

Такой, как у меня, есть здесь:

http://linuxforum.ru/viewtopic.php?pid=243320#p243320

Там написано, что это network.service из Генты, хоть у себя на компе я такой файл не обнаружил. Кажется, он был в гентувики, значит, должен работать.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root
[Unit]
Description=Network Connectivity
Wants=network.target
Before=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/rc.d/network start
ExecStop=/etc/rc.d/network stop

[Install]
WantedBy=multi-user.target 

а если сделать примерно так же, только вместо

/etc/rc.d/network start
делать
/etc/init.d/net.ppp0 start
?

dorsett_case
() автор топика

вообще всё подобное как-то криво настраивается в этом systemd, нелогично и непривычно после openrc

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

а если сделать примерно так же, только вместо <…> делать <…>

… то ничего не получится, потому что скрипты в /etc/init.d в Генте некорректно работают без запущенного OpenRC или вообще не работают, поскольку в них прописываются зависимости, которые попытаются удовлетвориться, поэтому можно поиметь много проблем из-за того, что одно действие делается дважды (его делает systemd и runscript). Если даже заработает, то будет куча побочных эффектов, поэтому так делать крайне не рекомендуется.

В арчевском /etc/rc.d таких проблем нет, т.к. там обычные скрипты на баше, не поддерживающие зависимости, а просто делающие свою работу.

Если же так хочется использовать готовый скрипт из /etc/init.d, то нужно переписать его на баш и добиться его независимости от других скриптов.

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

ExecStart=/etc/rc.d/network start

В Gentoo это работать не будет, так как OpenRC-скрипты требуют, чтобы вся инициализация системы выполнялась с помощью OpenRC. Иначе будет вот такой результат:

* WARNING: net.ppp0 is already starting

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

вообще всё подобное как-то криво настраивается в этом systemd, нелогично и непривычно после openrc

Всё логично до невозможности: задачи systemd — инициализация системы, запуск демонов и управление ими. Среди этих задач, как видим, нет настройки сети. Настройкой сети занимается NetworkManager. Его systemd умеет запускать.

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

можно ещё сделать After=network.target вместо девайса

Это ломает семантику target'а network.target: сервисы, предоставляющие сетевые подключения, должны быть успешно запущены ДО достижения target'а.

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

Это ломает семантику target'а network.target: сервисы, предоставляющие сетевые подключения, должны быть успешно запущены ДО достижения target'а.

Не спорю, этот вариант плох до безобразия. Лучше просто прописать зависимость от нужного device. Я написал о нём только на случай, если ТС не сможет найти нужное название device-юнита.

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

это конечно замечательно, но как настроить NetwrokManager'ом DSL-соединение на сервере, на котором нету GUI для управлениям оным?

dorsett_case
() автор топика

в ps видно что pppd запущен так:

/usr/sbin/pppd plugin rp-pppoe.so unit 1 user vlan3016 remotename ppp1 linkname ppp1 plugin passwordfd.so nopredictor1 novj nodeflate nopcomp noaccomp nompshortseq novj passwordfd 0 defaultmetric 4002 maxfail 0 persist connect true eth2

по идее, это можно выполнить в ExecStart, тогда соединение установится, но откуда оно берёт пароль?
и как разрывать соединение, killall -9 pppd?

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

а банальным текстовым конфигом его нельзя конфигурировать?

dorsett_case
() автор топика
Ответ на: комментарий от dorsett_case
[zero@root]Терминал: emerge -s networkmanager
Searching...    
[ Results for search key : networkmanager ]
[ Applications found : 9 ]

*  net-misc/cnetworkmanager
      Latest version available: 0.21.1
      Latest version installed: [ Not Installed ]
      Size of files: 28 kB
      Homepage:      http://vidner.net/martin/software/cnetworkmanager/
      Description:   Command line interface for NetworkManager.
      License:       GPL-2
max_udoff
()
Ответ на: комментарий от dorsett_case

это конечно замечательно, но как настроить NetwrokManager'ом DSL-соединение на сервере, на котором нету GUI для управлениям оным?

Через интерфейс на D-Bus, через который и работает этот графический интерфейс.

Отзывы о cnetworkmanager, которые я слышал, говорят, что он убог. А nmcli не позволяет создавать соединения. Поэтому остаётся напрямую посылать команды через D-Bus.

gentoo_root ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.