ppp (pptp) & systemd

Автор shurutov, августа 24, 2015, 07:19:05

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

shurutov

Итак, надо-ть настроить ppp-подключение (по через pptp) к работе, используя systemd.
Не буду растекаться мыслию по древу, просто приведу конфиги и/или кускитаковых, которые, как я считаю, имеют отношение к вопросу. Вкратце: мне нужно поднимать ВПН тогда, когда мне надо, но не при старте системы. Поэтому разрешать (systemctl enable <service>) я его не буду.
0. Подготовка.
0.1. У нас уже есть настроенный ВПН по через openrc, поэтому настройки будем брать оттедова (но об этом несколько позже). А пока начнем создавать скелет:
pptpsetup --create <VPN-name> --server <VPN-server-address> --username <myname> --password <mypasswd>
Проверили:
pon <VPN-name>
Работает. НО!
0.2. Практика показала, что вот так вот настроенный ВПН как-то печально держит контакт. Поэтому после просмотра файлика /etc/ppp/peers/<VPN-name> я сотворил вот такое (прописан у меня он был, /etc/ppp/options.pptp в настройках соединения в openrc):
echo "file /etc/ppp/options.pptp" >> /etc/ppp/peers/<VPN-name>
Вроде бы зафурычило. И типа чего-то там держит. Будем посмотреть, как оно дальше будет жЫть.
1. Сотворяем файл сервиса /etc/systemd/system/ppp@.service примерно вот такого содержания:
[Unit]
Description=PPTP link to %I
After=network.target
[Service]
Type=forking
# PIDFile=/run/ppp-%i.pid
ExecStart=/usr/sbin/pon %I
ExecStop=/usr/sbin/poff %I
ExecReload=/usr/sbin/poff -r %I
[Install]
WantedBy=multi-user.target

С PID-файлом вот думаю, разбираться, или ну его в баню? Тем более, что у меня определены ExecStop и ExecReload
2. Мастырим симлинк (а вдруг появится еще какой-нибудь ВПН?)
desktop ~ # cd /etc/systemd/system
desktop system # ln -s ppp\@.service ppp\@<VPN-name>.service

и
3. Перечитываем конфигурацию systemd
desktop system # systemctl daemon-reload
4. Подключаемся после этого к ВПН-у:
desktop system # systemctl start ppp@<VPN-name>.service
И радуемся жЫзни.
Радуемся? Ага, а кто за нас маршруты будет прописывать?
5. создаем нужный файлЕГ
desktop system # cd /etc/ppp/ip-up.d/
desktop ip-up.d # vim 60-routes.sh

Примерно такого содержания:
#!/bin/bash
# Add routes to intreanet and product space via pptp

PPP_IFACE=$1
PPP_IPPARAM=$6
case "$PPP_IPPARAM" in
        "<VPN-name>"|"<oldVPN-name>")
                <list of command of creating routes>
        ;;
esac

и
6. делаем его исполняемым
desktop ip-up.d # chmod +x 60-routes.sh
Вот таперича радуемся жЫзни по-настоящему.
Источники знаний:
С уважением,
Шурутов Михаил