OpenBSD : Настройка 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 { 192.168.1.32/27 }

set skip on lo

# Трансляция адресов только для пользователей, использующих PPTP
nat on $ext_if inet from -> ($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 to ! (self) keep state


Примечание: для того, чтобы можно было производить фильтрацию в pf на группе интерфейсов tun(4) в OpenBSD 3.8 (и более старых версиях), следует создавать необходимые туннельные интерфейсы во время загрузки системы:

# vi /etc/rc.local

for tun in /dev/tun[0-9]*; do
    tun=${tun#/dev/}
    [ "$tun" = "[0-9]*" ] || ifconfig $tun create    
done



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

Статья основана на материалах, предоставленных Гнединым Алексеем aka Goblin.
Вы только посетили наш сайт, КОММЕНТИРОВАНИЕ будет доступно через несколько минут.
возможно у Вас отключен javascript, если включен - просто обновите страницу
попередня стаття:   Сети » Netmask