Настройка VPN сервера с использованием протокола PPTP

Сегодня Роскомнадзор неожиданно внёс GitHub в реестр запрещённых сайтов. Раньше на подобные информационные поводы я не обращал внимание, но как оказывается зря. Эр-Телеком (Дом.ру) повинуясь указанию федеральной службы полностью заблокировал доступ к ресурсу. По этой причине назрела необходимость в быстром поднятии собственного VPN-сервера.

Подмена сертификата Эр-Телекомом

Подмена сертификата Эр-Телекомом

Подмена провайдером DNS-запроса

Подмена провайдером DNS-запроса

Итак, есть сервер на DigitalOcean с установленной Ubuntu 14.04 LTS. Сама настройка проста и понятна, приступим.

  1. Устанавливаем PPTP-сервер:
    hg@server:~# apt-get install pptpd
  2. Переходим к редактированию конфига /etc/pptpd.conf.
    # локальный IP-адрес сервера
    localip 172.16.0.1
    # диапазон IP-адресов назначаемых клиентам после подключения
    remoteip 172.16.0.100-128
    
  3. Для настройки аутентификации необходимо добавить логин и пароль в файл /etc/ppp/chap-secrets:
    Редактирование файла chap-secrets

    Редактирование файла chap-secrets

    Так же, при желании, можно ограничить подключение только с определённых адресов.

  4. В файл конфигурации PPTP демона /etc/ppp/pptpd-options заносим DNS-сервера, раздаваемые клиентам:
    ms-dns 8.8.8.8
    ms-dns 8.8.4.4
    

    И стартуем PPTP-сервер:

    hg@server:~# service pptpd restart
  5. Настраиваем маршрутизацию транзитных пакетов. Правим /etc/sysctl.conf:
    net.ipv4.ip_forward = 1
    

    И применяем изменения:

    hg@server:~# sysctl -p

    Добавляем правила для NAT в iptables:

    hg@server:~# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    hg@server:~# iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
    hg@server:~# iptables -I INPUT -s 172.16.0.0/24 -i ppp0 -j ACCEPT
    hg@server:~# iptables --append FORWARD --in-interface eth0 -j ACCEPT
    hg@server:~# iptables-save
    

На этом настройка PPTP-сервера завершена.

P.S.: Хотелось бы напомнить, что использование протокола PPTP не лишено недостатков, главным из которых является слабая безопастность на текущий момент.