Ubuntu Server 16.04 pptp клиент с автоматическим подключением

Переходим в режим суперпользователя:
sudo su
Обновим нашу систему:
apt-get update && apt-get upgrade && apt-get dist-upgrade
Установим клиента:
apt-get install pptp-linux
Создадим файл подключения:
nano /etc/ppp/peers/vpn
Его содержимое:
pty "pptp 192.168.1.125 --nolaunchpppd" #здесь измените адрес сервера, на ваш
require-mschap-v2
require-mppe-128
user test1 #имя пользователя
password "testtest" #пароль
nodeflate
nobsdcomp
noauth
nodefaultroute  #отключаем маршрут по умолчанию,
                #если он вам нужен - замените на defaultroute
persist #пере подключаться при обрыве
maxfail 10 #количество попыток пере подключения
holdoff 15 #интервал между подключениями
пробуем подключиться:
pppd call vpn
Если подключение прошло успешно появится сетевой интерфейс ppp:
ifconfig ppp
ppp0      Link encap:Point-to-Point Protocol  
          inet addr:192.168.6.100  P-t-P:192.168.6.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1396  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:68 (68.0 B)  TX bytes:68 (68.0 B)
Для того что бы отключиться, можно набрать команду:
killall pppd
Так же, если вы не сделали маршрут по умолчанию, неплохо бы прописать маршрут до VPN сети, чтобы иметь доступ к ресурсам в этой сети. Что бы не делать это руками при каждом запуске, и не заморачиваться с дополнительными скриптами, выполним:
nano /etc/ppp/ip-up
И в конец файла добавим:
case "$5" in
        192.168.6.1)
                        route add -net 192.168.6.0/24 gw 192.168.6.1
                ;;
        *)
esac
Соответственно - 192.168.6.1 - адрес шлюза (нашего vpn сервера), 192.168.6.0 - наша vpn сеть, замените шлюз и сеть на свои.

Так же неплохо было бы сделать так, чтобы наше pptp подключение автоматически поднималось, и случае "зависания" - происходило пере подключение.
Для этого сделаем 2 скрипта, один для собственно подключения, второй для проверки связи, и пере подключения в случае каких-либо затупов.

Первый - pptp.sh:
nano ~/pptp.sh
#!/bin/sh
vpn='192.168.1.125' #внешний адрес или имя вашего pptp сервера
ps=`ps ax | grep $vpn | wc -l`
if [ $ps -ge 2 ]; then
exit 1;
else /usr/sbin/pppd call vpn
exit 0;
fi
Второй - pptp-reconnect.sh:
nano ~/pptp.sh
#!/bin/bash
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
#замените 192.168.6.1 на ваш внутренний адрес сервера.
if ! ping -Q 2 -c 4 -t 2 192.168.6.1; then
pids=( $(pgrep -f pppd) )
for pid in "${pids[@]}"; do
  if [[ $pid != $$ ]]; then
    kill "$pid"
  fi
done
/root/pptp.sh
fi
Не забываем сделать эти скрипты исполняемыми:
chmod +x ~/pptp.sh ~/pptp-reconnect.sh
Дальше добавим их в cron:
crontab -e
В конец файла добавляем:
*/1 * * * * /bin/bash /root/pptp-reconnect.sh
Соответственно */1 - означает, что нужно выполнять проверку раз в минуту, можно увеличить интервалы до значения, которое вы считаете нужным.

Пожалуй, всё. PPTP клиент на Ubuntu Server 16.04 у нас настроен.
---
0