LINUX.ORG.RU
ФорумAdmin

Помогите с написанием systemd-юнита управляющего pppoe-соединениями в Fedora

 , ,


1

3

Помогите, пожалуйста, с написанием systemd-юнита, управляющего pppoe-соединениями в Fedora. Поднимать pppoe-соединения предпочитаю не через NetworkManager и не через /etc/sysconfig/network-scripts, а кошерным способом через «pppd pty pppoe».
Вы спросите, зачем мне нужно так извращаться в Федоре? У меня есть несколько учеток от pppoe-соединения и мне нужно попеременно входить в сеть то под одной, то под другой.
В слаке я делаю так: есть конфиг /etc/ppp/peers/pppoe

pty "/usr/sbin/pppoe -I eth0 -T 80 -U -m 1420"
defaultroute
usepeerdns
noproxyarp
mtu 1492
mru 1492
persist
hide-password
maxfail 99
name ?????? #учетка1
#name ?????? #учетка2
#name ?????? #учетка3
#name ?????? #учетка4
#name ?????? #учетка5
#name ?????? #учетка1
Пароли все в /etc/ppp/chap-secrets.
Ещё есть скрипт /etc/rc.d/rc.ppp
#!/bin/sh
if [ "$1" = "start" ]; then
   echo "Starting ppp..."
   /sbin/ifconfig eth0 up
   /usr/sbin/pppd call ppp0
   sleep 2s
   cat /etc/ppp/resolv.conf > /etc/resolv.conf
elif [ "$1" = "stop" ]; then
   echo "Stoping ppp..."
   /bin/kill -TERM `cat /var/run/ppp0.pid`
   /sbin/ifconfig eth0 down
elif [ "$1" = "restart" ]; then
   echo "Stoping ppp..."
   /bin/kill -TERM `cat /var/run/ppp0.pid`
   sleep 10s
   echo "Starting ppp..."
   /usr/sbin/pppd call ppp0
   sleep 2s
   cat /etc/ppp/resolv.conf > /etc/resolv.conf
else
   echo "Missing parameter: start, stop or restart"
fi
Когда мне надо перезайти с другой учеткой, я раскомментирую нужную строку в /etc/ppp/peers/pppoe и делаю «rc.ppp restart».
Так как же это делается? Я отключил юнит NetworkManager.service. Компоменты сети, сконфигурированные через /etc/sysconfig/network-scripts управляются юнитом systemd-networkd.service. Нужно написать юнит ppp.service, выполняющийся непосредственно перед systemd-networkd.service и чтобы его можно было рестартовать для захода под другой учеткой.

★★★★★

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

Шаблонный юнит с Before=network.target (и Wants=), параметр --name к pppd, перетащи ip link set up в параметр pty и сделай что-нибудь с говнослипом перед перезаписью resolv.conf.

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

Что-то ничего не понял из такого объяснения, кроме того что нужно сделать, чтобы в теле скрипта был вызов одной программы, а не трёх. И как это сделать?

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

Кстати какой юнит отвечает за поднятие сети через /etc/sysconfig/network-scripts? Вот я отключил NetworkManager.service, добавил файл правил /etc/udev/rules.d/70-persistent-net.rules, чтобы сетевой интерфейс имел привычное имя eth0, прописал конфу в /etc/sysconfig/network-scripts/ifcfg-eth0 и сеть не поднимается.

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