Daemontools and pppoe (Русский)
Иногда нам нужно собрать небольшой роутер и раздавать интернет в локалке. Технология, по которой мы получаем этот самый интернет от провайдера, может быть разной: кому-то оптика в конвертор воткнута, кому-то модем подключен, но, думается, что сейчас намного чаще используется технология xDSL и подключение с помощью PPPoE.
Все хорошо, мы можем прочитать эту статью, настроить выход в интернет командами pon/poff или даже автоматически при старте системы (добавив в DAEMONS демон ppp), но... Но возникает ситуация, когда ты далеко от офиса/дома/сервера вообще, и тут происходит обрыв PPPoE сессии... Что делать?
В данной статье рассмотрим бегло что есть Daemontools и рассмотрим как при помощи него автоматически поднимать PPPoE соединение. Статью пишу на основе своих заметок по этому поводу.
Daemontools
Daemontools это набор утилит для управления сервисами в UNIX системах, в частности, в комплексе позволяет запускать процессы, останавливать, перезапускать, если процесс завершился аварией. Подробности можно посмотреть на домашней странице.
В репозитариях ArchLinux пакета нет, но есть в AUR: [1], так же есть там другая вариация на эту тему: freedtAUR, но рассмотривать будем именно первый.
Сборка, установка
- скачать это: https://aur.archlinux.org/packages/daemontools/daemontools.tar.gz
- распаковать: tar xzf daemontools.tar.gz
- зайти в каталог: cd daemontools
- выполнить: makepkg
- поставить пакет в систему: pacman -U ...
всё, после этого появится директирия /service в которую помещаются, обычно, симплинки на сервисы которые будут управляться с помощью daemontools. При этом, эти сервисы НЕ нужно помещать в rc.conf в список DAEMONS.
pppd и pppoe
Ставим пакеты ppp и rp-pppoe:
pacman -S ppp rp-pppoe
pppd + pppoe + daemontools
Ну и заключающий шаг собрать всё это вместе и запустить.
- создаём директорию /etc/ppp-internet
- создаём файл /etc/ppp-internet/run с следующим содержимым:
#!/bin/bash # тут укажи сетевую которая у тебя подключена ip link set dev eth0 up # nodetach - обязательно. за подробностями в документацию. pppd nodetach call dsl-provider
- делаем его исполняемым: chmod +x /etc/ppp-internet/run
- создаём этот самый dsl-provider, файл /etc/ppp/peers/dsl-provider с примерно следующим содержимым (можно посмотреть эту статью):
plugin rp-pppoe.so # network interface eth0 # login name name "pppoe-login" # use assigned DNS usepeerdns # add default route to connection defaultroute hide-password noauth # create interface with name ppp999 (in my case others users from LAN have access to Internet via VPN for accounting purposes) unit 999
В конфиге никоим образом не должно быть опции «persist». Логин/пароль должны быть прописаны в /etc/pap-secrets или /etc/chap-secrets
- ну и последний пасс:
ln -s /etc/ppp-internet /service/
управлять процессами daemontools можно при помощи команды svc
После последнего действия проверьте список процессов, на предмет запущенного svscan и pppd