Все ленты — последние статьи

Форвардинг PPTP средствами iptables

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

Прочитали, вспомнили… Становится очевидно, что настроив форвардинг порта 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 сервер будет доступен на внешнем интерфейсе роутера без каких либо ограничений.