Настройка PPTP

Настройка PPTP проста, но сейчас не помню.
Минусы линуксоидной реализации PPTP:

  • Нет сжатия трафика MPPC. Этот закрытый микрософтовский протокол. Поэтому обычные домашние XP будут соединяться с VPN сервером без сжатия трафика. Где-то кто-то выпускает заплатки для ядер, которые позволяют пользовать MPPC, но я не стал с ними разбираться.
  • Чтобы пускать доменных юзеров через линуксоидный PPTP надо настроить какую-либо аутентификацию, чтобы не раздавать юзерам дополнительные пароли к PPTP серверу. А тут засады.

    Настроил RADIUS и радовался, пока у юзера не кончилось время действия пароля. RADIUS сервер занимается только тем, что говорит клиенту - пускать или не пускать юзера. Поэтому, когда клиент попытался подключиться по VPN к PPTP серверу, то PPTP сервер сделал запрос IAS серверу (IAS - это микрософтовский радиус) "пускать или не пускать". IAS поглядел на свои политики - всё нормально, вроде можно пускать. Потом спросил у AD - чего там с паролем. АД ответил, что пароль просрочен и надо менять. IAS так и ответил PPTP серверу, что пущать нельзя. С допиской, как водится маленькими буквами, "пока пароль не поменяет". Результат очевиден.

    Я временно отключил юзеру принудительную смену пароля, а сам бросился на штурм самбы и winbind'а. Настроил всю эту обвязку, зарегистрировал дебиан в домене, а вот с аутентфикацией PPTP через винбинд справиться не могу. А потом выпил пива и подумал, что незачем вообще иметься с этим PPTP. Надо просто пробросить PPTP и L2TP порты прямо на виндовый сервер и пусть он и занимается аутентификацией. И сжатие будет и смена пароля будет. В конце концов за лицензию на него денег уплочено.

Прочитал http://pomka.blogspot.com/2008/07/vpn.html и сделал следующее:
  • Установил pptpproxy (http://www.mgix.com/pptpproxy/)

    • скачал http://www.mgix.com/pptpproxy/pptpproxy-2.10-ubuntu8.04-i386-bin.tar.bz2
    • распаковал и скопировал бинарник в /opt/pptpptoxy
    • остановил pptp (/etc/init.d/pptp stop) и отключил pptp из автозапуска
    • Проверил, что в iptables присутствуют:

      iptables -A INPUT -p 47 -j ACCEPT
      iptables -A INPUT -p tcp --sport 1723 -j ACCEPT
      iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
      
      iptables -A OUTPUT -p 47 -j ACCEPT
      iptables -A OUTPUT -p tcp --sport 1723 -j ACCEPT
      iptables -A OUTPUT -p tcp --dport 1723 -j ACCEPT
    • Запустил /opt/pptpproxy/pptpproxy -p адрес_vpn_сервера
    • Добавил pptpproxy в автозапуск: echo /opt/pptpproxy/pptpproxy -p адрес_vpn_сервера >> /etc/rc.local
    • отредактировал /etc/rc.local так, чтобы команда "exit 0" стояла после pptpproxy...
Всё заработало и, естественно, появилось сжатие трафика. Для проверки перезапустил сервер. Всё ок.
Заметь, что виндовый сервер получает запрос на соединение по PPTP не от внешнего ip-адреса, а от внутреннего интерфейса шлюза, на котором стоит pptpproxy! В результате, на виндовом сервере не надо ставить в сетевых настройках, что шлюз по умолчанию именно тот сервер, который принимает pptp запросы. У него вообще можно убрать шлюз по умолчанию и он всё равно будет исправно обслуживать pptp, потому что запрос идёт из локальной сетки. Надеюсь ты понял мои объяснения, Михаил Б.
Полезные ссылки:
Tags: