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


Мини-руководство "шаг за шагом"

Пример построения VPN на основе протокола PPTP с использованием Poptop. Сервер имеет внутренний IP 192.168.1.1, клиентам выдаются адреса из диапазона 192.168.1.32-192.168.1.63. Для аутентификации используется MS-CHAP V2.

Включаем перенаправление IPv4-пакетов между сетевыми интерфейсами и разрешаем использование протокола GRE:

# sysctl -w net.inet.ip.forwarding=1
# sysctl -w net.inet.gre.allow=1

Добавляем соответствующие записи в /etc/sysctl.conf:

# vi /etc/sysctl.conf
net.inet.ip.forwarding=1
net.inet.gre.allow=1

Устанавливаем poptop из портов:

# cd /usr/ports/net/poptop
# make install clean

Или с помощью прекомпилированного пакета:

# pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/3.8/packages/i386/poptop-1.1.4.b4p1.tgz

Перейдем к настройке PPP. Обратите внимание, что в файле /etc/ppp/ppp.conf cтроки, оканчивающиеся на ``:'', вводятся без отступа в начале строки. Остальные строки должны быть введены с отступом, как показано в примере.

# vi /etc/ppp/ppp.conf
default:
  set log Phase Chat LCP IPCP CCP tun command
  disable ipv6cp

pptp:
  # используем MS-CHAP V2
  enable MSChapV2
  # используем алгоритм шифрования данных MPPE
  set mppe 128 stateless
  # стандартные методы компрессии не работают с MPPE
  disable deflate pred1
  deny deflate pred1
  # отключаем таймер ожидания
  set timeout 0
  # задаем адрес VPN шлюза и диапазон выдаваемых клиентам адресов
  set ifaddr 192.168.1.1 192.168.1.32-192.168.1.63 255.255.255.255
  # разрешаем получение адреса DNS сервера и передаем его клиенту
  accept dns
  set dns 192.168.50.70
  # при необходимости включаем ARP proxy
  enable proxy

Создание или изменение учетных записей пользователей производится за счет редактирования файла /etc/ppp/ppp.secret. Если IP-адрес должен быть динамическим, тогда вместо поля ip_address нужно поставить знак звездочки (``*''). Поле label является необязательным. Например:

# vi /etc/ppp/ppp.secret
#user	password	ip_address	label
user1	secret123	192.168.1.40	sidorov
user2	123qwe		*

Выставляем корректные права доступа:

# chmod 600 /etc/ppp/ppp.{conf,secret}

Запускаем pptpd:

# /usr/local/sbin/pptpd

В /etc/rc.local добавляем автозапуск pptpd:

if [ -x /usr/local/sbin/pptpd ]; then
	echo -n 'pptpd';	/usr/local/sbin/pptpd
fi

Настройка pf(4) на корректную работу с PPTP заключается в разрешении GRE трафика к и от клиентов, а также разрешении входящих соединений по 1723/tcp.

Приведем пример настройки маршрутизатора, обеспечивающего доступ в Интернет клиентов, подключающихся по PPTP:

ext_if  = "fxp0"
int_if  = "fxp1"
vpn_grp = "tun"

table <vpn_users> { 192.168.1.32/27 }

set skip on lo

# Трансляция адресов только для пользователей, использующих PPTP
nat on $ext_if inet from <vpn_users> -> ($ext_if:0)

# Запрет на входящие соединения
block in
block return-rst in proto tcp

# Разрешить исходящие соединения
pass out keep state

# Разрешить управляющее соединение
pass in on $int_if inet proto tcp from ($int_if:network) to ($int_if) \
	port pptp keep state

# Разрешить использование трафика, инкапсулированного в GRE
pass in on $int_if inet proto gre from ($int_if:network) to ($int_if) \
	keep state

# Разрешить трафик на туннельном интерфейсе
pass in on $vpn_grp inet from <vpn_users> to ! (self) keep state

Дополнительную информацию можно узнать из man-страниц: pptpd(8), ppp(8).

Статья основана на материалах, предоставленных Гнединым Алексеем aka Goblin.


OpenBSD.ru www@openbsd.ru
$RuOBSD: pptp.html,v 1.32 2010/11/01 10:57:49 dinar Exp $