|
| Настройка 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:
В /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. | | Author: [Гнединым Алексеем aka Goblin. ] |
| |