Вообщем прошло более полугода с того момента как я таки
заимел выделенку, но...
один гиморный вопрос так и не оставляет меня, а именно,
как поддерживать соединение с VPN сервером постоянным.
Дело в том что по тем или иным причинам это соединение
иногда рвётся и бывает это чосто по ночам собсно когда у
меня что то качается и порой бывает неприятно проснувшись
увидеть что так ничего и не закачалось... вообщем попытался
написать скрипт который поидее должен запускать pptp
каждый раз когда он падает но почему то он не работает, т.е.
если я убиваю соединение руками ну типа
killall pptp
то он восстанавливает коннект а если это происходит без
меня то ничего не выходит.
/********************************************/
#!/bin/bash
while true; do
route add -net 10.0.0.0/8 gw 10.20.0.1 >& /dev/null
route add -net 192.168.0.0/16 gw 10.20.0.1 >& /dev/null
route del default >& /dev/null
pptp vpn.lanport defaultroute nodetach name 00163 >& /dev/null
route del default >& /dev/null
ifconfig ppp0 down >& /dev/null
killall pptp >& /dev/null
killall -s KILL pppd >& /dev/null
done
/********************************************/
Прошло уже много времени с тех пор как появился vpn и
может есть какие то системный тулзы для такой цели, как
поддержание соединения.
Заранее спасибо!!!
Поднимать VPN иногда удобнее запуском pppd, а не pptpd
# pppd file /etc/ppp/options.pptp pty "/usr/sbin/pptp ip-адрес-сервера --nolaunchpppd" user ЛОГИН другие_опции_если_нужно
В этом случае можно применить опции pppd holdoff и perpersist.
Все манипуляции с маршрутами можно поместить в /etc/ppp/ip-up и /etc/ppp/ip-down.
ИМХО это лишнее:
>route del default >& /dev/null
>ifconfig ppp0 down >& /dev/null
когда pppd "умирает" интерфейс ppp0 исчезает и маршруты через него грохаются на автомате. Это было нужно в ядрах 2.0.x.
По поводу опции nodetach демона pppd. Когда pppd получает сигнал SIGTERM он отправляет сигнал SIGTERM всем процессам в своей группе процессов --- это сделано чтобы точно покилять всех потомков. Но в случае с nodetach процесс выполняется в той же группе, что и запустивший его скрипт, если сказть killall pppd, то скрипт тоже получит SIGTERM.