MPD (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: