Открыть 1723 порт. Не работает PPTP VPN? Включение отладочных логов VPN-сервера

Настройка VPN-канала типа PPTP в *nix-системах традиционно считается нетривиальной задачей, связанной с кучей различных проблем, неправильной настройкой и т.д. В этой статье я постараюсь собрать воедино все проблемы, которые могут возникнуть, и подскажу что делать в каждой ситуации.

1. Попингуйте PPTP-сервер

Убедитесь, что PPTP-сервер возвращает ответ на ICMP echo запрос. Если ответ приходит, то уже хорошо — вы можете связаться с сервером. Если же ответа не приходит, то это еще ни о чем не говорит — ICMP-пакеты могут фильтроваться файрволлом сервера.

В окне «Дополнительно - брандмауэр» нажмите «Далее». Введите имя, установите расписание. Сохраните конфигурацию и перезагрузите устройство, для эффекта изменения эффекта! Установить порт назначения на 500. Виртуальная частная сеть - это сеть, которая использует Интернет для обеспечения удаленного доступа к централизованной организационной сети. Это не облачная служба, а служба общего доступа к файлам, которая требует размещения Интернета и сервера.

Настройка брандмауэра для приема соединений




Но вам также потребуется настроить маршрутизатор.

Что такое определения сетевой маршрутизации

Они применяют только описание, которое наиболее точно соответствует маршрутизируемому пакету. Лето приближается, и, конечно, многие уже думают о каникулах, путешествующих, отправляющихся на пляж или просто выходящих на террасы для выпивки.

# ping pptpserver

2. Сделайте трейс до PPTP-сервера

Убедитесь, что traceroute до сервера проходит. Если и правда проходит, то аналогично с пингом — у вас есть связь на уровне сети. Если же трассировка не проходит, опять же, это ни о чем не говорит, т.к. может фильтровать файрволл.

# traceroute pptpserver

3. Проверьте порт 1723 на PPTP-сервере

Убедитесь, что можно подключиться на служебный TCP/IP-порт PPTP-сервера. Если telnet проходит нормально, то полдела сделано. Если же подключение «висит», нужно чинить именно эту проблему (например, настройки своего файрволла). Вот так выглядит нормальный рабочий вывод telnet:

В следующей статье, например, мы можем видеть. Есть также, хотя в обоих случаях, чтобы пользоваться максимумом, мы должны заплатить лицензию на использование этих серверов. В наших домах все чаще появляются высокопроизводительные маршрутизаторы, которые функционируют в широком смысле как персональный сервер.





Однако, независимо от используемого устройства, все они имеют общую функцию, и для того, чтобы подключиться к ним, нам нужно будет открыть соответствующие порты или, в противном случае, сам маршрутизатор заблокирует соединение. Эти порты должны быть открыты в разделе «Переадресация портов» нашего собственного маршрутизатора. Каждый маршрутизатор - это мир, поэтому каждый процесс может варьироваться.

# telnet pptpserver 1723 Trying 91.229.176.7... Connected to pptpserver. Escape character is "^]".

4. Проверьте работу протокола GRE

Проверьте, что вы можете обмениваться GRE-пакетами между PPTP-сервером и клиентом (т.е. вами). Для этого запустите сниффер пакетов, например tcpdump, в момент создания туннеля. Вы должны увидеть соединение на порт 1723, за которым последует обмен GRE-пакетами в обеих направлениях. Если вы новичок в tcpdump, вот .

И мы выбираем варианты, которые нас интересуют. Мы добавляем пользователей с разрешениями удаленного подключения. Приложение начинается с открытия следующих ветвей: Панель управления \\ Администрирование \\ Управление компьютером и системные утилиты \\ Локальные пользователи и группы. Обычный пользователь не может войти в систему удаленно. Это будет означать, что мы не полностью настроили наш сервер.

И мы выбираем варианты, которые нас интересуют. Мы добавляем пользователей с разрешениями удаленного подключения. Приложение начинается с открытия следующих ветвей: Панель управления \\ Администрирование \\ Управление компьютером и системные утилиты \\ Локальные пользователи и группы. Обычный пользователь не может войти в систему удаленно. Это будет означать, что мы не полностью настроили наш сервер.

Чтобы определить, в какой точке маршрута GRE-пакеты теряются;

  • утилита hping2 может делать traceroute протокола GRE [http://www.hping.org/ ], а вот
  • версия программы traceroute, работающая на GRE [http://lists.debian.org/debian-isp/2001/debian-isp-200103/msg00175.html ]

Обратите внимание: при сегодняшнем засилье дешевых маршрутизаторов потребительского класса, утилиты hping2 и GRE-трейс могут работать некорректно. Причина этого — то, что большинство NAT-маршрутизаторов используют контроль трафика с учетом состояний управляющего PPTP-соединения для определения перенаправления GRE-пакетов. Вам лучше сконцентрироваться на анализе GRE-трафика в конечных точках 🙂

Наиболее распространенными причинами, по которым не работает GRE, являются:

  • Файрволлы и шлюзы
    Промежуточные хосты на пути между клиентом и сервером могут быть настроены на блокировку протокола GRE. Использование traceroute программ GRE-протокола, упомянутых выше, может выявить хост, ставшего причиной блокировки.
    В некоторых версиях Linux поможет загрузка модуля nf_nat_pptp: # modprobe nf_nat_pptp
  • Локальные правила фильтрации
    На самом клиенте может быть настроена блокировка приема или отправки GRE-пакетов. Проверьте правила iptables (или какой там у вас файрволл).
  • Несколько одновременных подключений через NAT
    Если у вас NAT-маршрутизатор, например, DSL-роутер, который в глобальной сети представляет один IP-адрес, тогда активным может быть лишь одно PPTP-соединение. PPTP-сервер примет лишь одно соединение.
    Запуск второго туннеля на другой IP-адрес (т.е. на другой PPTP-сервер) также может не состояться, если система NAT на маршрутизаторе не в состоянии различить два отдельных PPTP-соединения. От этого может даже упасть первое соединение.
  • Неправильные настройки PPTP-сервера
    Если PPTP-сервер не может запустить демона pppd, по причине синтаксической ошибки в конфигурационном файле или в аргументах командной строки, внешне это выглядит как потеря GRE-пакетов со стороны сервера. Внимательно просмотрите логи сервера. Для проверки настроек полезно запускать pppd на сервере вручную.

5. Проверьте поддержку MPPE

Поддержка шифрования MPPE необходима, если вы собираетесь подключаться, например, к Microsoft Windows VPN Server, либо просто хотите иметь зашифрованный канал. Для версий PPP 2.4.2 и более поздних MPPE поставляется в виде модуля ядра Linux, и в виде патча для PPP 2.4.0. Чтобы шифрование MPPE корректно работало, необходимо выполнение обеих следующих пунктов.

6. Поддержка MPPE в ядре

Проверьте, что модуль MPPE загружен:

# modprobe ppp-compress-18 # modprobe ppp_mppe

Если модуль загружается без ошибок, значит с ним все нормально. Если появляются ошибки, значит нужно найти причину и устранить ее. Причин может быть много, вот некоторые из них:

  • Вы не запустили команду depmod -a после загрузки RPM-файла kernel-mppe
  • Модуль MPPE не существует в соответствующем каталоге /lib/modules
  • Существующий модуль MPPE не может быть загружен по причине конфликта версий
  • В системе остался старый файл mppe.o , поэтому новый файл ppp_mppe.o не может загрузиться (выводимая ошибка «init_module: File exists»)
  • Модуль ppp_generic не может активировать модуль MPPE, хотя и нашел его. Возможно, у вас используется PPP-MPPE 2.4.0, а в файле /etc/modules.conf отсутствует запись alias ppp-compress-18 mppe
  • Модули PPP статически скомпилированы в ядро (чтобы MPPE работал как модуль, они также должны быть скомпилированы в виде модулей)
  • Не загружен модуль ppp_async (хотя pptp в своей работе не использует последовательный порт, но модуль ppp_async необходим для передачи данных по псевдо-терминалам)

7. Поддержка MPPE в pppd

Проверьте, что программа pppd поддерживает MPPE. Это можно сделать, поискав строки, содержащие ключевое слово mppe. Если таких строк не наблюдается, нужно найти версию pppd с поддержкой MPPE.

# strings `which pppd`|grep -i mppe|wc --lines

Если поддержки MPPE нет, то в консоль выведется число 0. Если же поддержка есть, то число будет в районе 40.

Это вольный перевод статьи

Мы уже рассказывали о форвардинге (пробросе) портов на роутере под управлением Ubuntu Server, однако рассмотрев общие принципы, оставили без внимания частные реализации. Одним из частных случаев является публикация PPTP VPN сервера, которая вызывает наибольшее количество затруднений, сегодня поговорим об этом более подробно.

Прочитали, вспомнили... Становится очевидно, что настроив форвардинг порта 1723, мы обеспечили только работу только управляющей сессии, совершенно забыв о сессии для передачи данных, использующей протокол GRE. Выглядит это так: клиент нормально соединяется с сервером, успешно проходит проверку учетных данных и терпит фиаско при попытке создать канал для данных.

Для нормальной работы PPTP соединения через NAT следует настроить прохождение не только управляющих данных, но и GRE пакетов. Чем мы сейчас и займемся. Будем считать, что читатель знаком с нашими предыдущими материалами и обладает достаточными навыками работы в среде Ubuntu Server. Все изменения будут вносится нами в файл /etc/nat роутера.

Чтобы обеспечить нормальную работу с протоколом GRE следует загрузить дополнительные модули ядра, для этого после секции #Включаем форвардинг пакетов добавим:

#Включаем модули iptables
modprobe ip_gre
modprobe ip_nat_pptp

После секции #Включаем NAT добавляем:

#Разрешаем входящий PPTP
iptables -A FORWARD -p gre -j ACCEPT
iptables -A FORWARD -i eth0 -p tcp --dport 1723 -j ACCEPT

Мы разрешили прохождение через NAT как управляющих пактов на порт 1723, так и GRE пакетов в любом направлении. Теперь нужно настроить форвардинг пактов приходящих на порт 1723 роутера к внутреннему VPN серверу. Для условности примем X.X.X.X - IP адрес внешнего интерфейса сервера, 10.0.0.121 - внутренний адрес VPN-сервера, 10.0.90.90-99 блок адресов VPN-сети.

Ниже предыдущей секции продолжим:

# Форвардинг PPTP
iptables -t nat -A PREROUTING -p tcp -d X.X.X.X --dport 1723 -j DNAT --to-destination 10.0.0.121:1723
iptables -t nat -A POSTROUTING -p tcp -d 10.0.0.121 --dport 1723 -j SNAT --to-source X.X.X.X

Сохраняем файл, перезагружаем сервер.

Настраиваем на клиенте VPN-подключение и пробуем соединиться, если все сделано правильно то проблем не возникнет.На рисунке ниже, в консоли VPN сервера видим успешно подключившегося клиента.

Теперь попробуем получить доступ к какому нибудь внутреннему ресурсу, например общему диску E: на VPN-сервере.

Как видим, все прекрасно работает. Теперь можете настраивать вашу VPN-сеть согласно ваших потребностей, PPTP сервер будет доступен на внешнем интерфейсе роутера без каких либо ограничений.