Установка и настройка VPN-сервера с помощью MPD на FreeBSD 10.0 | OS CONFIG

Установка и настройка VPN-сервера с помощью MPD на FreeBSD 10.0

vpn-icon_nowmMPD (Multi-link PPP daemon) — это основанная на netgraph реализация ppp-протокола мультисвязи для FreeBSD. © Wikipedia

Для подключения к сети предприятия 192.168.0.0 необходимо пробросить порт TCP 1723 и 5006 (если будет необходимость в использовании web-интерфейса).

В данной статье рассмотрим установку и настройку MPD в качестве VPN-сервера, поддерживающего подключения по протоколам PPTP и L2TP (без IPSec). Перед тем, как выполнить все действия, описанные в этой статье, необходимо, чтобы была настроена сеть, обновлены порты и установлен Midnight Commander. Всю первичную настройку FreeBSD можно прочитать здесь.



Устанавливаем MPD5 из портов:

cd /usr/ports/net/mpd5

make all install clean

Открываем файл /etc/rc.conf

vi /etc/rc.conf

и дописываем в него следующие строчки:

mpd_enable=»YES»

mpd_flags=»-b»

Затем перейдём в каталог /usr/local/etc/mpd5

cd /usr/local/etc/mpd5

и создадим там 2 файла:

конфигурация mpd

touch mpd.conf

с таким содержимым

startup:

set user login PASSWORD admin

set web self 0.0.0.0 5006

set web open

 

default:

load pptp_server

load l2tp_server

 

pptp_server:

set ippool add pool1 192.168.0.225 192.168.0.235

create bundle template B

set iface enable proxy-arp

set iface idle 0

set iface enable tcpmssfix

set ipcp yes vjcomp

set ipcp ranges 192.168.0.1/32 ippool pool1

set ipcp dns 8.8.8.8

set bundle enable compression

set ccp yes mppc

set mppc yes e40

set mppc yes e128

set mppc yes stateless

create link template L pptp

set link action bundle B

set link enable multilink

set link yes acfcomp protocomp

set link no pap chap

set link enable chap

set link keep-alive 0

set link mtu 1460

set pptp self 0.0.0.0

set link enable incoming

set pptp disable windowing

set pptp enable always-ack

 

l2tp_server:

set ippool add pool2 192.168.0.236 192.168.0.250

create bundle template C

set iface enable proxy-arp

set iface idle 1800

set iface enable tcpmssfix

set ipcp yes vjcomp

set ipcp ranges 192.168.0.1/32 ippool pool2

set ipcp dns 8.8.8.8

set bundle enable compression

set ccp yes mppc

set mppc yes e40

set mppc yes e128

set mppc yes stateless

create link template N l2tp

set link action bundle C

set link enable multilink

set link yes acfcomp protocomp

set link no pap chap

set link enable chap

set link keep-alive 0

set link mtu 1460

set l2tp self 0.0.0.0

set link enable incoming

и файл доступа

touch mpd.secret

примерно с таким

#login          password          ip

user1           pass1               192.168.0.251

user2           pass2               192.168.0.252

user3           pass3               *.*

user4           pass4               *.*

user5           pass5               *.*

Краткое описание файла mpd.conf

Первые четыре строки описывают конфигурацию web-интерфейса MPD.

В описании PPTP присутствует строчка диапазона IP-адресов:

set ippool add pool1 192.168.0.225 192.168.0.235

Это означает, что клиенты, подключаясь по протоколу PPTP, будут получать адреса, указанные для соединения PPTP (pool1).

В описании L2TP присутствует строчка диапазона IP-адресов:

set ippool add pool2 192.168.0.236 192.168.0.250

Это означает, что клиенты, подключаясь по протоколу L2TP, будут получать адреса, указанные для соединения L2TP (pool2).

Всё это надо учесть при настройке DHCP-сервера в локальной сети предприятия.

Краткое описание файла mpd.secret

В данном примере описаны 5 пользователей. Первые два (user1 и user2) при подключении получают статические IP-адреса 192.168.0.251 и 192.168.0.252. Остальные пользователи получат динамические IP-адреса из диапазона pool1 или pool2 в зависимости от типа подключения.

Это также следует учесть при настройки DHCP-сервера в локальной сети предприятия.

Также необходимо учесть, что в этом файле между логином, паролем и IP-адресом используются не пробелы, а табуляция. То есть разделены они клавишей Tab, а не Space!!!

Для ведения логов в файл /etc/syslog.conf добавляем (после !ppp и *.*)

!mpd

*.* /var/log/mpd.log

и создадим этот файл:

touch /var/log/mpd.log

Выставим на него права:

chmod 600 /var/log/mpd.log

перезапустим syslogd

service syslogd restart

теперь запустим MPD5

service mpd5 start

Windows клиент:

Чтобы не возиться с IPSEC и клиенты с Windows могли цепляться по L2TP, в реестре Windows в раздел

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters

добавим ключ ProhibitIpSec с параметром DWORD 1

и перезагрузить Windows.

Теперь можно создавать L2TP соединения и подключаться к серверу без проблем.

Возвращаемся к серверу, перезагружаем его

shutdown -r now

при загрузке системы видим такое предупреждение:

WARNING: attempt to domain_add(netgraph) after domainfinalize()

Для того, чтоб в дальнейшем его не было, сделаем следущее:

переходим в каталог с конфигурацией ядра

cd /sys/amd64/conf

или

cd /sys/i386/conf

в зависимости от разрядности ОС

скопируем файл GENERIC в VPNSERVER

cp GENERIC VPNSERVER

открываем файл VPNSERVER

vi VPNSEREVR

исправляем

ident GENERIC

на

ident VPNSERVER

и добавляем в него такие строчки:

# NETGRAPH support

options NETGRAPH

options NETGRAPH_ASYNC

options NETGRAPH_BPF

options NETGRAPH_ECHO

options NETGRAPH_ETHER

options NETGRAPH_HOLE

options NETGRAPH_IFACE

options NETGRAPH_KSOCKET

options NETGRAPH_L2TP

options NETGRAPH_LMI

options NETGRAPH_MPPC_ENCRYPTION

options NETGRAPH_ONE2MANY

options NETGRAPH_PPP

options NETGRAPH_PPTPGRE

options NETGRAPH_RFC1490

options NETGRAPH_SOCKET

options NETGRAPH_TEE

options NETGRAPH_TTY

options NETGRAPH_UI

options NETGRAPH_VJC

переходим в каталог /usr/src

cd /usr/src

собираем ядро

make buildkernel KERNCONF=VPNSERVER

и устанавливаем его

make installkernel KERNCONF=VPNSERVER

после этого перезагрузим машину

shutdown -r now

и видим, что предупреждение исчезло.

теперь избавляемся от предупреждений sendmail:

открываем /etc/rc.conf:

vi /etc/rc.conf

и дописываем следующие строчки:

sendmail_enable=»NO»

sendmail_submit_enable=»NO»

sendmail_msp_queue_enable=»NO»

sendmail_outbound_enable=»NO»

для проверки перезагрузим машину:

shutdown -r now

В MPD5 также имеется web-интерфейс, где можно управлять подключениями и просмотреть состояние VPN-сервера.

На другой машине через браузер войдём в web-интерфейс MPD: http://IP-адрес:5006. Браузер спросит логин и пароль. Указать надо то, что прописано в файле mpd.conf. set user login PASSWORD admin. То есть, логин будет login, а пароль — password.

Всё! Сервер готов.


Если Вам помогла статья, вы можете отблагодарить автора:
перечислить на WMR кошелёк (WebMoney): R301575071888
перечислить на Яндекс.Кошелёк: 410011003938168
или на PayPal:

Вы можете оставить комментарий, или ссылку на Ваш сайт.
  • Sergey

    Если таки заморачиваться с ipSec, то желательно применять патч что-бы не проверялись контрольные суммы (очень многие подключаются из за NAT-а)
    Применяем патч на ядро для функционирования L2TP с IPSec.
    1. копируем патч на сервер (soft.domtex.kiev.ua/FreeBSD/patch/ipsec-patches.diff)
    2. cd /usr/src/sys/netipsec/
    3. patch -p1 < /path/to/ipsec-patches.diff
    4. переходим в /usr/src/
    5. пересобираем ядро
    6. прописываем в sysctl.conf "net.inet.esp.esp_ignore_natt_cksum=1"
    7. reboot

    P.S. Все проверялось на FreeBSD 9.x

    • OSC_Evgeny

      а на 10.0 к сожалению не работает

      • Sergey

        А ipsec устанавливался с NAT-Traversal ?
        Правда ему тоже патчи нужны.

        копируем патчи из архива http://soft.domtex.kiev.ua/FreeBSD/patch/ipsec-tools-patches-natt.zip в папку /usr/ports/security/ipsec-tools/files/

        make install clean

        включаем NAT-Traversal

        • OSC_Evgeny

          нет, не айс.

          может что-нить в /etc/rc.conf необходимо прописать?

          • Sergey

            Да нет, только запуск raccon-а, может ближайшее время попробую на 10-ке развернуть, потом отпишусь что да как.

          • OSC_Evgeny

            ок, буду ждать. спасибо!!!!

          • Sergey

            Поднимал на тестовой железке, заработало.

            https://www.evernote.com/shard/s77/sh/60925166-a666-4690-b99d-229f010aeab1/7e511c0d55ad76b7fab3af54b5e3164b

          • OSC_Evgeny

            спасибо! жаль конечно, что только через 2-3 минуты можно переконнектиться. 😉

          • Sergey

            Это все настройка racoon, у меня еще поднято пару на тунелей на IpSec и мне необходимо что-бы он сразу не отваливался при падении клиентов.

  • Николай

    Здравствуйте.
    Обычно советуют добавлять mppc в FreeBSD из стороннего файла mppc-1.0.tgz, потому что во фрюхе mppc вроде как нет по каким-то лицензионным соображениям. В вашей статье об этом файле ни слова… Он больше не нужен?
    И ещё — почем нет опции options NETGRAPH_MPPC_COMPRESSION ? Компрессия лишняя?

    • Николай

      Компиляция ядра матюгнулась на отсутствие mppcd.c — чего и следовало ожидать. Статья неполная.



Яндекс.Метрика
Проверка ТИЦ Яндекс цитирования