Документация по ОС FreeBSD Среда, 01.05.2024, 08:57
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » VPN

Настройка mpd5 L2TP [2009]
Значит так, у моего друга на работе появилась нужда настроить 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 с новым именем нашего ядра.
# cp GENERIC VPN_Server

Чтобы собрать ядро с поддержкой фарвола 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) Подгрузка Модуля.
Для подгрузки файрвола модулем:
# kldload pf.ko

Для того чтобы модуль подгружался при стартапе в /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 сервера.

И запускаем наши правила:
pfctl -f /etc/pf.conf

Теперь можно наблюдать за логом и коннектится с винды:
tail -f /var/log/mpd.log

Чтобы создать 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

ключь:
ProhibitIpSec dword 1

Нам нужно подключится по средствам 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

В принципе все, просьба строго не судить, может найдутся людиди кому эта статья хоть кое чем поможет.


Источник: http://www.lissyara.su/?id=1836
Категория: VPN | Добавил: oleg (26.01.2009) | Автор: Le1
Просмотров: 2097 | Рейтинг: 5.0/1 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024