Настройка PPTP(VPN) сервера с помощью mpd5
В данной заметке хочу рассказать, как настроить PPTP сервер с помощью MPD5. Необходимо было настроить доступ к серверу организации по VPN-каналу, как оказалось ничего сложного в этом нет.
1. Обновляем порты.
2. Устанавливаем демон mpd:
На данный момент с портов была установлена версия - 5.5.
Version 5.5 (root@srv.local 23:24 13-May-2010)
3. Настраиваем конфиг MPD:
Нужно не забывать, что конфиг mpd чувствителен к пробелам, все отступы начинайте с табуляции (Tab)!
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-адрес клиенту:
User2 12345678 172.16.0.30
5. Добавляем MPD в rc.conf для автозапуска:
[root@srv /etc]# cat >> rc.conf
mpd_enable="YES"
mpd_flags="-b"
6. Добавим в ядро поддержку 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 строчку:
!mpd
*.* /var/log/mpd.log
и создадим файл лога:
8. Запускаем mpd5:
[root@srv /usr/local/etc/rc.d]# ./mpd5 start
На этом настройка сервера завершена, переходим к клиентской части.
Если клиентом выступает ОС Windows XP:
Стыдно описывать настройку PPTP клиента в Windows, но все же...
Указываем имя соединения => Не набирать номер для для предварительного подключения => Указываем Имя или IP-адрес нашего VPN сервера.
После подключения..
На сервере появится интерфейс, например 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 сервера давать интернет клиентам, необходимо настроить нат:
pf_rules="/etc/pf.sh"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pf.log"
pflog_flags=""
LAN="172.16.0.0/24"
nat on $ext_if inet from $LAN to !$LAN -> ($ext_if)
Обсуждение на форуме: тут.
- Войдите на сайт для отправки комментариев
- Версия для печати