Пример построения 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. |