www.lissyara.su
—> статьи
—> FreeBSD
—> настройка
—> mpd5 L2TP
Настройка mpd5 L2TP
Автор: Le1.
Значит так, у моего друга на работе появилась нужда настроить VPN сервер, но с условием, что в качестве шлюза служит машина с Windows ХРень а сам сервак VPN должен быть настроен в виртуальной среде VMWare под FreeBSD :) Нужен был VPN сервер который поддерживает стандартное подключение Windows VPN клиента (PPTP или L2TP IPSec), и требовалось все настроить таким образом, чтобы подключенные юзеры, никому не мешая, поподали в свою выделенную подсеть, и могли бы общатся друг с другом как бы локально.
Скажу сразу - конечно условия может быть неграмотные и даже смешные, так как легче было снести Windows и настроить FreeBSD в качестве шлюза и тамже поднять VPN, а не морочится с виртуальной машиной, но как говоритса - "Начальник всегда прав", вот и пришлось думать как все это реальизовать.
Идея настройки OpenVPN в качестве сервера сразу отпала, так как нужно было подключать клиентов стандартным соединением винды. Выбрали все тот-же mpd5.
По началу начали заморачиватся с соединением PPTP, нужно было редиректить tcp порт 1723 который прослушивает mpd при соединении типа PPTP, и порт 22 - SSH для удаленного коннекта к FreeBSD.
Редирект порта в Windows XP стандартными средствами не осуществить, так что пришлост качнуть PortTunnel и с помощу него пробросить 22 порт на виртуальную машину с FreeBSD.
Как известно - PPTP работает устанавливая обычную PPP сессию с противоположной стороной с помощью протокола
GRE (Generic Routing Encapsulation, тот-же Protocol-47). Второе соединение на TCP-порту 1723 используется для инициации и управления GRE-соединением.
Вот тут то и был облом, нарыть информацию о том, как перебросить GRE с помощу XP не получилось, да и врятли возможно такое осуществить, так что пришлось идти по другому пути, настраивть сервер mpd с использованием протокола L2TP (Layer Two Tunneling Protocol)
L2TP использует UDP port 1701, пришлось искть программу для переброса UDP порта, нашел универсальную - PortMapper которая умеет работать и с TCP и UDP портами, она и заменила выше описанный PortTunnel.
Далее все просто, устанавливаем все по порядку:
cd /usr/ports/net/mpd5; make && make install && make clean
|
Создаем конфиги:
/usr/local/etc/mpd5# touch mpd.conf; touch mpd.secret
|
Правим конфиг mpd.conf:
/usr/local/etc/mpd5# ee mpd.conf
|
И вставляем наш рабочий конфиг для работы по протоколу L2TP:
startup:
set user foo bar admin
set user foo1 bar1
set console self 127.0.0.1 5005
set console open
set web self 0.0.0.0 5006
set web open
default:
load l2tp_server
l2tp_server:
# Создаем диапазон присваиваемых IP адрессов.
# Define dynamic IP address pool.
set ippool add pool1 10.10.0.5 10.10.0.100
# Create clonable bundle template named B
create bundle template B
set iface enable proxy-arp
set iface idle 1800
set iface enable tcpmssfix
set ipcp yes vjcomp
# Specify IP address pool for dynamic assigment.
set ipcp ranges 10.10.0.1/24 ippool pool1
set ipcp dns 10.10.0.1
# The five lines below enable Microsoft Point-to-Point encryption
# (MPPE) using the ng_mppc(8) netgraph node type.
set bundle enable compression
set ccp yes mppc
set mppc yes e40
set mppc yes e128
set mppc yes stateless
# Create clonable link template named L
create link template L l2tp
# Set bundle template to use
set link action bundle B
# Multilink adds some overhead, but gives full 1500 MTU.
set link enable multilink
set link yes acfcomp protocomp
set link no pap chap
set link enable chap
set link keep-alive 10 60
# We reducing link mtu to avoid GRE packet fragmentation
set link mtu 1460
# Configure l2tp
# IP адресс нашего VPN сервера. (Собственно адресс машины с фряхой)
set l2tp self 192.168.1.10
# Allow to accept calls
set link enable incoming
|
Далее нужно править конфиг mpd.secret где и прописываем Username, Password, IP:
test testpass 10.10.0.5
test1 test1pass 10.10.0.6
| Эсли IP не прописать, то mpd сам выдаст машине произвольный IP заданого пула в конфиге mpd.conf
Для автозапуска MPD, прописываем следующие строки в /etc/rc.conf:
echo 'mpd_enable="YES"' >> /etc/rc.conf
echo 'mpd_flags="-b"' >> /etc/rc.conf
|
Чтобы у нас были логи нашего MPD, в файле /etc/syslog.conf добавляем:
!mpd
*.* /var/log/mpd.log
|
Создадим этот файл и зададим ему права только на чтение root:
/# touch /var/log/mpd.log
chmod 600 /var/log/mpd.log
|
Теперь перезагружаем syslog:
/# /etc/rc.d/syslogd reload
|
Дальше нужно пересобрать ядро с поддержкой файрвола PF, ну или в худшем случая подгрузить модулем.
Опишу оба варианта - 1) Сборка ядра с поддержкой PF, 2) Подгрузка Модуля.
1) Сборка ядра с поддержкой PF
Для начала нужно обновить сорсы системы, но тут речь пойдет не об этом, про обновление поднобно можно прочитать здесь.
Если машина с архитектуры i386, как в моем случае с виртуалкой VMWare, то идем в /usr/src/sys/i386/conf
И копируем ядро GENERIC с новым именем нашего ядра.
Чтобы собрать ядро с поддержкой фарвола PF, нужно в наш конфиг файл ядра - VPN_Server, добавть опции
device pf
device pflog
device pfsync
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_CDNR
options ALTQ_PRIQ
options ALTQ_NOPCC
options ALTQ_DEBUG
|
Ну и собственно собираем все по быстрому:
/# cd /usr/src/
/# rm -rf /usr/obj
/# make clean && make cleandir
/# make buildkernel KERNCONF=VPN_Server
/# make installkernel KERNCONF=VPN_Server && shutdown -r now
|
2) Подгрузка Модуля.
Для подгрузки файрвола модулем:
Для того чтобы модуль подгружался при стартапе в /etc/rc.conf добавляем:
/# echo 'pf_enable="YES"' >> /etc/rc.conf
|
--------------------------------------------------------------------------
Теперь продолжаем - если вы пересобрали ядро то после перазагрузки надо править конфиг файрвола, если подгрузили модулем то перезагрузка необязательня и сразуже приступаем к правке /etc/pf.conf:
nat on nfe0 from 10.10.0.0/24 to any -> 192.168.1.10
pass in all
pass out all
| Где 10.10.0.0/24 диапазон IP присваеваемых VPN клиентам. А 192.168.1.10 IP сервера.
И запускаем наши правила:
Теперь можно наблюдать за логом и коннектится с винды:
Чтобы создать VPN соединение в Windows XP:
Control Panel -> Network Connections -> Create a New Connection ->
Next -> Connect to the network at my workplace ->
Next -> Virtual Private Network connection ->
Next -> "Имя Соединения (Любое) " ->
Next -> "Имя хоста или IP VPN сервера"
-> Finish
|
Чтобы подключится к нашему серверу, нужно убрать IPSec в Windows VPN клиенте, для этого нужно добавить в ветке реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters
| ключь:
Нам нужно подключится по средствам L2TP, для этого, в свойствах нами созданного VPN соединения идем на вкладку Networking и меняем Type of VPN - "Automatic" на "L2TP IPSec VPN".
Для того чтобы при коннекте к VPN-у ваша клиентская машина не меняла шлюз, и не выходила бы в инет через инет того сервера к которому приконнекчена (т.е. машина с Фрей) надо в настройках VPN подключения перейти в:
Networking -> Internet Protocol(TCP/IP) -> Properties -> Advanced
| и убрать "галочку" с Use default gateway on remote network
В принципе все, просьба строго не судить, может найдутся люди кому эта статья хоть кое чем поможет.
размещено: 2009-01-13,
последнее обновление: 2009-01-27,
автор: Le1
|
Комментарии пользователей [26 шт.]