MPD — настройка собственного VPN-сервера

В связи с просьбой одного из сотрудников в реализации доступа к серверам офисной сети из дома (согласно требованиям безопасности, доступ к ним из сети Internet ограничен), возникла необходимость в настройке VPN-сервера. Реализовывать будем на базе MPD — основанная на netgraph реализация ppp-протокола мультисвязи для FreeBSD. Еще одним плюсом в сторону MPD есть то, что он совместим с Microsoft,  тоесть подключиться к нашему серверу пользователи ОС Windows смогут пользуясь стандартными средствами ОС.

В более ранних версиях, для работы MPD необходима была поддержка ядром NETGRAPH, однако, начиная с FreeBSD6.0, это необязательно. Поскольку офисный маршрутизатор работает под FreeBSD 8.0, пересобирать ядро с поддержкой NETGRAPH не будем:

# uname -a
FreeBSD office.company.net 8.0-STABLE FreeBSD 8.0-STABLE #1: Thu Jan 14 17:33:25 EET 2010 [email protected]:/usr/obj/usr/src/sys/Office i386

Исходные данные:

  • Адресация локальной сети — 192.168.192.0/24
  • IP-адресс VPN-сервера, «смотрящий» в локальную сеть — 192.168.192.55
  • IP-адресс VPN-сервера, «смотрящий» в Internet — 157.54.0.1
  • IP-адреса клиентам выдавать из этой же подсети — 192.168.192.0/24
  • Разрешить доступ в Internet

Приступаем к установке:

# cd /usr/ports/net/mpd5/ && make install clean && rehash

Итак, после установки переходим в каталог /usr/local/etc/mpd5/, поскольку все конфигурационные файлы MPD находятся в этом каталоге:

# cd /usr/local/etc/mpd5 && ls -la

total 58
drwxr-xr-x 2 root wheel 512 25 май 02:01 .
drwxr-xr-x 7 root wheel 512 25 май 02:01 ..
-r--r--r-- 1 root wheel 11856 25 май 02:01 mpd.conf.sample
-r--r--r-- 1 root wheel 39541 25 май 02:01 mpd.script.sample
-r--r--r-- 1 root wheel 834 25 май 02:01 mpd.secret.sample

А теперь приступаем непосредственно к настройке. Я буду настраивать сервер на поддержку 3 одновременных подключений. Думаю, что настройка на большее количество подключениий проблем не вызовет. Первый конфигурационный файл — mpd.conf. С примерами разнообразных настроек можно ознакомиться в mpd.conf.sample. Забыл в начале описать, что настраивать будем по протоколу PPTP. В результате нехитрых манипуляций получаем следующий mpd.conf:

# cat mpd.confstartup:
# Определяем пользователей
set user username username_pass admin
set user username1 userpass1
# Конфигурация консоли
set console self 127.0.0.1 5005
set console open
# Конфигурация веб-сервера
set web self 0.0.0.0 5006
set web open

default:
load pptp_server

pptp_server:
# Определяем, какой адресный пул использовать
set ippool add pool1 192.168.192.150 192.168.192.175
# Создаем клонируемый шаблон B
create bundle template B
# Разрешаем на интерфейсе проксирование МАС-адресов
set iface enable proxy-arp
# Задаем время простоя
set iface idle 1800
# Исправлять ошибки с определением MSS
set iface enable tcpmssfix
# Включаем сжатие данных
set ipcp yes vjcomp
# Конкретизируем адресный пул для динамического присвоения параметров
set ipcp ranges 192.168.192.55/32 ippool pool1
# Указываем, какие адреса DNS-серверов присваивать клиентам
set ipcp dns 8.8.8.8 8.8.4.4
# Эти строки необходимы для поддрежки Microsoft Point-to-Point шифрования
set bundle enable compression
set ccp yes mppc
set mppc yes e40
set mppc yes e128
set mppc yes stateless
# Создаем клонируемый шаблон L
create link template L pptp
# Указываем, какой шаблон использовать
set link action bundle B
# Запрещаем режим мультилинк
set link disable multilink
set link yes acfcomp protocomp
# Требуем chap авторизацию
set link no pap chap eap
set link enable chap
# Уменьшение размера mtu для избежания фрагментации
set link mtu 1400
# Задаем адрес для входящих сообщений
set pptp self 193.227.206.220
# Разрешаем входящие подключения
set link enable incoming

Дальше необходимо создать файл mpd.secret, где будем хранить логины и пароли (при необходимости указываем и IP-адрес, который нужно присвоить клиенту, иначе берется из пула заданных адресов) VPN-пользователей. Пример mpd.secret:

# cat mpd.secret
muff muffpasswd 192.168.192.150

Добавляем загрузку MPD при старте системы:

# echo ‘# VPN PPTP Server’ >> /etc/rc.conf
# echo ‘mpd_enable=»YES»‘ >> /etc/rc.conf

Даем команду запуска:

# sh /usr/local/etc/rc.d/mpd5 start
Starting mpd5.

Как оговаривалось раньше, поддержка NETGRAPH на уровне ядра не обязательна, NETGRAPH подгружается в виде модулей:

# kldstat

Id Refs Address Size Name
1 26 0xc0400000 4992e8 kernel
2 1 0xc1b5a000 35000 ipl.ko
3 1 0xc1c65000 2000 warp_saver.ko
4 1 0xc2b57000 4000 ng_socket.ko
5 8 0xc2c3a000 b000 netgraph.ko
6 1 0xc2bd2000 4000 ng_mppc.ko
7 1 0xc2bdd000 2000 rc4.ko
8 1 0xc2be3000 3000 ng_tee.ko
9 1 0xc2be9000 4000 ng_pptpgre.ko
10 1 0xc2c45000 5000 ng_ksocket.ko
11 1 0xc2bf9000 3000 ng_iface.ko
12 1 0xc2c4a000 7000 ng_ppp.ko
13 1 0xc2c35000 3000 ng_tcpmss.ko

Теперь попробуем настроить VPN-клиента под Windows XP. В «Панели управления» переходим в «Сетевые подключения» и жмем «Создание нового подключения». В результате запускается мастер новых подключений:

Настройка ВПН

После нажатия «Далее» выбираем тип сетевого подключения «Подключить к сети на рабочем месте»:

ВПН

Потом уточняем, что это будет подключение к виртуальной частной сети:

ВПН

Далее задаем название подключения, чтобы идентифицировать его среди других подключений:

Настройка ВПН

При необходимости указываем, набирать предварительное подключение, или нет:

ВПН

Следующим шагом указываем адрес сервера, к которому будем подключаться:

Настройка ВПН

Потом остается только нажать кнопку «Готово». Ну а дальше заполняем поля логина и пароля и жмем «Подключиться»:

ВПН подключение

В результате подключения на сервере автоматически создается интерфейс ng0:

ng0: flags=88d1 metric 0 mtu 1396
inet 192.168.192.55 --> 192.168.192.150 netmask 0xffffffff

И на стороне клиента тоже:

Company Name - PPP адаптер:
DNS-суффикс этого подключения . . :
Описание . . . . . . . . . . . . : WAN (PPP/SLIP) Interface
Физический адрес. . . . . . . . . : 00-53-45-00-00-00
Dhcp включен. . . . . . . . . . . : нет
IP-адрес . . . . . . . . . . . . : 192.168.192.150
Маска подсети . . . . . . . . . . : 255.255.255.255
Основной шлюз . . . . . . . . . . : 192.168.192.150
DNS-серверы . . . . . . . . . . . : 8.8.8.8
                                    8.8.4.4

После подключения стали доступна локальная сеть офиса. На этом статью можно заканчивать. Опишу еще несколько полезных моментов.

Настройка логирования и ротации логов

# echo ‘\!mpd’ >> /etc/syslog.conf
# echo ‘*.* /var/log/mpd.log’ >> /etc/syslog.conf
# touch /var/log/mpd.log
# sh /etc/rc.d/syslogd restart
# echo ‘/var/log/mpd.log 640 7 * $W6D0 JC’ >> /etc/newsyslog.conf

Подключение к командной строке

# telnet 127.0.0.1 5005

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Multi-link PPP daemon for FreeBSD
Username: muff
Password:
Welcome!
Mpd pid 58159, version 5.5 ([email protected] 01:59 25-May-2010)

[] help
Available commands:
authname : Choose link by auth name   bundle : Choose/list bundles
close : Close a layer                 create : Create new item
destroy : Destroy item                exit : Exit console
iface : Choose bundle by iface        help : Help on any command
link : Choose link                    load : Read from config file
log : Set/view log options            msession : Ch. bundle by msession-id
open : Open a layer                   quit : Quit program
repeater : Choose/list repeaters      session : Choose link by session-id
set : Set parameters                  show : Show status

[] show sessions
ng0 192.168.192.150 B-1 4755068-B-1 L-1 1 4755068-L-1 muff 195.3.159.250

Подключение к web-интерфейсу

MPD Web-интерфейс

Источник : muff.kiev.ua/content/mpd-nastroika-sobstvennogo-vpn-servera

Запись опубликована в рубрике *Lan&Wan, *Unix,*Linux, FreeBSD. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91