Категорії
FreeBSD Security

VPN PPTP сервер PopTop на FreeBSD для подключения клиентов под windows

В этой статье расскажу, как настроить vpn pptp сервер poptop под FreeBSD для подключения windows клиентов. При этом для пользователей windows ничего дополнительно устанавливать не нужно – достаточно лишь создать новое подключение. И так, приступим

Тестовый стенд: сервер FreeBSD i386 8.1 Release (FreeBSD amd64 8.1 Release – о проблемах с этим релизом читаем в конце статьи раздел “Возможные пролблемы”), клиенты Windows XP PRO SP3, Windows 7 Ultimate x64

0) Введение.

Пару слов скажу о самом типе подключения, а так же о poptop. Если сравнивать этот тип VPN’a с, например, openvpn то pptp больше подойдёт тем, у кого медленный, нестабильный канал передачи данный. Так как pptp использует метод проверки логин/пароль, а openvpn – проверку сертификатов. Я был свидетелем того, как openvpn отказывался работать, в то время как pptp подключался без проблем. Если смотреть со стороны безопасности, то openvpn – более защищён.

Теперь что касается самого poptop. Он использует ppp как дочерный процесс, соответственно у вас должен быть установлен ppp.

Тестовый стенд: FreeBSD 8.1 i386, клиенты Windows XP SP3 RUS, Windows 7 Ultimate X64 Rus

1) Установка PopTop сервера.

Первым делом обновляем порты:

#portsnap fetch update

Ну и переходим к установке сервера poptop:

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

2) Настройка

После установки получаем файл pptpd.conf.sample в папке /usr/local/etc. Это файл примеров. Мы же создадим файл pptpd.conf такого содержания:

debug
noipparam
localip 10.111.0.1
remoteip 10.111.0.51-150
pidfile /var/run/pptpd.pid

где localip – IP VPN сервера, remoteip – адреса, которые будут выдаваться клиентам.

Теперь переходим в папку /etc/ppp и приводим файл ppp.conf к такому виду (обратите внимание на отступы начиная со второй строки):

pptp:
set timeout 0
set log phase chat connect lcp ipcp command
set dial
set login
set ifaddr 10.111.0.1 10.111.0.51-10.111.0.150 255.255.255.0
set accmap ffffffff
enable mschapv2
accept mschapv2
enable mppe
enable lqr
enable dns
accept dns
allow mode direct
disable ipv6cp
enable proxy

Этим конфигурационным файлом мы запрещаем трафик ipv6, включаем только авторизацию mschapv2. За остальными параметрами можно обратиться к справочному руководству.

Теперь осталось создать файл с паролями пользователей. Создаём файл ppp.secret в той же папке /etc/ppp такого вида:

username1 password1 10.111.0.5
username2 password2

Если не указать IP адрес, то будет выдан IP адрес из пула адресов (10.111.0.51-10.111.0.150)

3) Создание клиентских подключений

Windows XP

Заходим "Пуск" -> "Панель управления" -> "Сетевые подключения" -> "Мастер новых подключений" -> "Подключить к сети на рабочем месте" -> "Подключение к виртуальной частной сети"
В поле Организация вводим имя (под этим именем будет отображаться название подключения). Если у вас это не единственное vpn подключения, то появится окно "Публичная сеть" в котором нужно выбрать "Не набирать номер для предварительного подключения" (если у вас это первое vpn подключение, то это диалоговое окно отображаться не будет). В поле IP адрес вводим адрес сервера, выбираем для кого будет доступно подключение. Если хотим создать ярлык, ставим галочку "Добавить ярлык подключения на рабочий стол". Теперь запускаем подключение и вводим свой логин/пароль.

Windows 7

Заходим "Пуск" -> "Панель управления" -> "Центр управления сетями и общим доступом" -> "Настройка нового подключения или сети" -> "Подключение к рабочему месту или сети" -> "Использовать моё подключение к интернету (VPN)". В поле "Интернет-адрес" вводим адрес для подключения. В поле "Имя местоназначения" вводим имя (под этим именем будет отображаться название подключения). В полях "Пользователь" и "Пароль" вводим соответственно свои учётные данные. Поле "Домен" оставляем пустым. Если не хотим каждый раз вводить пароль, ставим галочку "Запомнить этот пароль" и нажимаем "Подключить".

Замечание

Почему-то система Windows назначает шлюзом по умолчанию адрес сервера, к которому только что подключились по vpn. В итоге получается, что в интернет мы будем выходить через удалённый сервер, что нас аж никак не радует. Что бы этого не происходило, нужно сделать следующее (в XP и 7-ке это делается одинаково):

находим сетевое подключение, которое мы только что создали, нажимаем правой кнопкой и выбираем "Свойства" -> вкладка "Сеть" -> в выпадающем списке "Компоненты используемые этим подключением" выбираем "Протокол интернета (TCP/IP)" (если у вас 7-ка, то выбираем Протокол интернета версии 4 (TCP/IPv4)") -> "Свойства" -> "Дополнительно" и снимаем галочку с "Использовать основной шлюз в удалённой сети".

Возможные проблемы.

По не выясненным причинам на FreeBSD 8.1 amd64 сервер отказывался принимать второе подключение. То есть, если 1 клиент уже подключился, то второй (третий, четвёртый, и т.д.) не сможет подключиться. При этом клиентам будет выдаваться “Ошибка 800”, а в логах будут проскакивать сообщения вида:

ppp: Warning: Local: bind: Address already in use
ppp: Warning: set server: Failed 2

Это был баг в демоне ppp во FreeBSD 7.0 . Об этом написано здесь и с тех пор его должны были исправить. Действительно, в версии FreeBSD 8.1 amd64 присутствуют исправления, но ошибка всё равно проявляется.

Over NAT

Касательно работы сервера за NAT’ом – оно работает. А что бы понять почему, то приведу цитату с одного форума:

этап инициации проходит через 1723 порт tcp потом данные несутся через GRE ну а GRE через nat проходят только через костыли в линуксе это доп модулек
в natd и libalias оно уже внедерено по умолчанию

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff