mpd – vpn сервер на FreeBSD

Решено было поднять VPN-сервер на шлюзе с FreeBSD, дабы иметь полный, удобный доступ к ресурсам домашней сети. Компьютерный зоопарк довольно велик, да и не понятно за какой ОСью окажусь завтра, поэтому решил опробовать mpd. Так же одной из причин, по которой был выбран сервер mpd — это возможность подключения w!nd0w$-клиентов, без использования сторонних приложений.
Приступим. Всё происходит на:
# uname -a
FreeBSD имя_сервера 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Mon May 7 11:24:18 MSK 2012 root@имя_сервера:/usr/obj/usr/src/sys/конфиг_ядра i386

Сначала собираем ядро, добавив туда строки:
options NETGRAPH
options NETGRAPH_ETHER
options NETGRAPH_NETFLOW
options NETGRAPH_SOCKET
options NETGRAPH_TEE
options NETGRAPH_BPF
options NETGRAPH_IFACE
options NETGRAPH_KSOCKET
options NETGRAPH_PPP
options NETGRAPH_PPTPGRE
options NETGRAPH_TCPMSS
options NETGRAPH_VJC
options NETGRAPH_ONE2MANY
options NETGRAPH_RFC1490
options NETGRAPH_TTY
options NETGRAPH_UI
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_MPPC_COMPRESSION

Перед сборкой надо ещё положить «Alternative MPPC compression/decompression library» в /usr/src/sys/net/ (или с офф сайта), иначе сборка ядра закончится сообщением:
cc: /usr/src/sys/net/mppcc.c: No such file or directory
cc: /usr/src/sys/net/mppcd.c: No such file or directory
/usr/src/sys/netgraph/ng_mppc.c:84:22: error: net/mppc.h: No such file or directory
mkdep: compile failed
*** Error code 1

поэтому делаем:
cd /usr/src/sys/net/
fetch http://mavhome.dp.ua/MPPC/mppc-1.0.tgz
tar -xvf mppc-1.0.tgz
ee /usr/src/sys/modules/netgraph/mppc/Makefile

Меняем строку:
NETGRAPH_MPPC_COMPRESSION?= 0
на
NETGRAPH_MPPC_COMPRESSION?= 1

Ставим:
cd /usr/src/sys/modules/netgraph/mppc
make
make install
make clean

И только теперь собираем ядро.
После того как ядро на FreeBSD собрали без ошибок и загрузили его, переходим непосредственно к нашему VPN-серверу mpd5.
Не забываем обновить порты.

Потом устанавливаем mpd5:
cd /usr/ports/net/mpd5
make install clean
rehash

Опции не менял:
Options for mpd 5.6
[ ] NG_CAR Use ng_car kernel module from port (< 7.0 only)
[ ] NG_IPACCT Use ng_ipacct kernel module from port
Установилось быстро, далее переходим к настройке.

В /etc/rc.conf добавляем строки, необходимые для автоматического старта mpd в фоновом режиме:
mpd_enable="YES"
mpd_flags="-b"

Сами конфигурационные файлы md5 лежат в /usr/local/etc/mpd5/
Конфиг /usr/local/etc/mpd5/mpd.conf приводим к такому виду:

startup:
# меняем «pass» на свой пароль — он для доступа к веб-интерфейсу
set user administrator pass
# set user password cancer
# configure the console
set console self 127.0.0.1 5005
set console open
# configure the web server
set web self 0.0.0.0 5006
set web open
default:
load pptp_server

pptp_server:
# Указываем из какого диапазона выдавать IP-адреса клиентам.
# я сделал с 100 по 150
set ippool add poolsat 10.36.1.100 10.36.1.150
create bundle template B
set iface enable proxy-arp
set iface idle 0
set iface enable tcpmssfix
set ipcp yes vjcomp
# IP-адрес сервера, который будут видеть клиенты
# я написал 192.168.10.254 (можно вписать любой IP)
set ipcp ranges 10.36.1.254/32 ippool poolsat
# Перечисляем адреса DNS-серверов(не обязательно свои)
set ipcp dns 217.24.122.10 217.24.112.2 212.48.193.41 212.48.192.6 8.8.8.8

# Enable Microsoft Point-to-Point encryption (MPPE)
set bundle enable compression
set ccp yes mppc
set mppc yes compress e40 e56 e128 stateless

# Create clonable link template named L
create link template L pptp
set link enable multilink
set link yes acfcomp protocomp
set link action bundle B
set link no pap chap eap
set link enable chap
set link enable chap-msv1
set link enable chap-msv2
# set link keep-alive 10 75
# Ниже указываем IP сетевой карты, которая смотрит в интеренет
# У меня это модем
set pptp self 0.0.0.0
set link enable incoming

Это был первый, основной конфигурационный файлик
Теперь переходим к файлу, в котором хранятся учётные записи для VPN-клиентов ( /usr/local/etc/mpd5/mpd.secret ).
Туда вписываем учётные записи, для авторизации при подключении по ВПН. Файл выглядит примерно так:
user1 "password1" 10.36.1.100/24
user2 "password2" 10.36.1.101/24
user3 "password3" 10.36.1.102/24

где
user1..3 -это логины
password1..3 -это соответственно пароли
10.36.1.100..102 -это адреса, которые будут выданы клиентам

стартуем наш сконфигурированный mpd:
/usr/local/etc/rc.d/mpd5 start

Всё, можно пробовать подключаться.

Настраиваем клиента vpn на windows 7 (она только под рукой у меня)

Идём в Панель управления — Все элементы панели управления — Центр управления сетями и общим доступом и
выбираем «Настройка нового подключения или сети»

команды, freebsd, настройка, установка, сервер, server, ubuntu

 Далее «Подключение к рабочему месту»

команды, freebsd, настройка, установка, сервер, server, ubuntu

«Использовать мое подключение к Интернету (VPN)»

команды, freebsd, настройка, установка, сервер, server, ubuntu

заполняем поля

команды, freebsd, настройка, установка, сервер, server, ubuntu

указываем логин и пароль, которые мы вписывали в /usr/local/etc/mpd5/mpd.secret

команды, freebsd, настройка, установка, сервер, server, ubuntu

и «Подключить»
Готово, мы соединились по vpn.

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