Настройка PPTP(VPN) сервера с помощью mpd5

15.01.2011 - 12:02

В данной заметке хочу рассказать, как настроить PPTP сервер с помощью MPD5. Необходимо было настроить доступ к серверу организации по VPN-каналу, как оказалось ничего сложного в этом нет. Happy

1. Обновляем порты.
2. Устанавливаем демон mpd:

[root@srv /etc]#cd /usr/ports/net/mpd5 && make install clean

На данный момент с портов была установлена версия - 5.5.
[root@srv /]# mpd5 -v
Version 5.5 (root@srv.local 23:24 13-May-2010)

3. Настраиваем конфиг MPD:
Нужно не забывать, что конфиг mpd чувствителен к пробелам, все отступы начинайте с табуляции (Tab)!
[root@srv /etc]#cd /usr/local/etc/mpd5
[root@srv /usr/local/etc/mpd5]# cat > mpd.conf
startup:
        set user admin admin 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 pptp_server

pptp_server:
# Диапазон IP адрессов, котрые выдаются VPN клиентам
        set ippool add PPTPSRV 172.16.0.2 172.16.0.100
# Create clonable bundle template named B
        create bundle template B
#Включаем proxy-arp, чтобы компьютер "видел" без маршрутизации корпоративную сеть (по протоколу arp)
        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 172.16.0.1/32 ippool PPTPSRV
#Устанавливаем DNS и Wins сервер
        set ipcp dns 8.8.8.8
        set ipcp nbns 172.16.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
#Включаем компрессию данных, совместимую с Microsoft-клиентами
        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 pptp
# 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 eap
        set link enable chap
# Ограничение максимального числа конкурентных попыток залогинится под одним именем. Запрещено если нуль.
        set auth max-logins 1
# We can use use RADIUS authentication/accounting by including
# another config section with label 'radius'.
#            load radius
        set link keep-alive 10 60
# We reducing link mtu to avoid GRE packet fragmentation.
        set link mtu 1460
# Configure PPTP
# Внешний IP на котором будет прослушиватся соединение или имя сетевой карты, паример rl0.
        set pptp self 192.168.31.18
# Allow to accept calls
#Разрешаем входящие соединения
        set link enable incoming

4. Авторизация пользователей:
Логины и пароли пользователей будут находится в файле mpd.secret, так же можно задать присваиваемый IP-адрес клиенту:

[root@srv /]#cat  > /usr/local/etc/mpd5/mpd.secret
User1   1234
User2   12345678        172.16.0.30

5. Добавляем MPD в rc.conf для автозапуска:

[root@srv /]#cd /etc
[root@srv /etc]# cat >> rc.conf
mpd_enable="YES"
mpd_flags="-b"

6. Добавим в ядро поддержку NETGRAPH и пересоберем его:

options         NETGRAPH
options         NETGRAPH_ETHER
options         NETGRAPH_SOCKET
options         NETGRAPH_TEE
options         NETGRAPH_MPPC_ENCRYPTION
#options         NETGRAPH_MPPC_COMPRESSION
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_PPPOE

7. Для того, что бы читать логи mpd добавим в syslog строчку:

[root@srv /etc]# cat syslog.conf
!mpd
*.* /var/log/mpd.log

и создадим файл лога:
[root@srv /etc]# touch /var/log/mpd.log

8. Запускаем mpd5:

[root@srv /]# cd /usr/local/etc/rc.d
[root@srv /usr/local/etc/rc.d]# ./mpd5 start

На этом настройка сервера завершена, переходим к клиентской части.

Если клиентом выступает ОС Windows XP:
Стыдно описывать настройку PPTP клиента в Windows, но все же...

Сетевые подключения => Создание нового подключения => Подключить к сети на рабочем месте => Подключение к виртуальной частной сети =>
Указываем имя соединения => Не набирать номер для для предварительного подключения => Указываем Имя или IP-адрес нашего VPN сервера.

vpn.jpg

После подключения..
vpn-connect.png

На сервере появится интерфейс, например ng2:
[root@srv /]# ifconfig ng2
...
ng2: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1396
        inet 172.16.0.1 --> 172.16.0.2  netmask 0xffffffff
...
[root@srv /]#

Не забываем открыть у себя на фаерволе порт 1723, который использует PPTP.

Если необходимо с помощью VPN сервера давать интернет клиентам, необходимо настроить нат:

[root@fs1 /etc]#cat  >> /etc/rc.conf
gateway_enable="YES"

pf_enable="YES"
pf_rules="/etc/pf.sh"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pf.log"
pflog_flags=""

[root@fs1 /etc]#cat /etc/pf.sh
ext_if="re0"
LAN="172.16.0.0/24"

nat on $ext_if inet from $LAN to !$LAN -> ($ext_if)

Обсуждение на форуме: тут.

Ваша оценка: Нет Средняя: 3.7 (6 votes)