В дополнение к статье «Настройка OpenVPN сервера» решил написть о настройке VPN сервера , работающего по протоколу PPTP.

Имеем
# root@vpn:/root # uname -a
FreeBSD vpn.server 9.1-STABLE FreeBSD 9.1-STABLE #0 r249412M: Sat Apr 13 02:34:28 MSK 2013 root@vpn.deathstar.name:/usr/obj/usr/src/sys/GENERIC amd64
Цель – поднять VPN PPTP сервер для выхода в интернет.

1) Настройка NAT

Добавляем в файл /boot/loader.conf такие строки
ipfw_nat_load="YES"
libalias_load="YES"

Создаем правила для IPFW ( например файл /etc/firewall )
root@vpn:/root # ee /etc/firewall
#!/bin/sh
ipfw='/sbin/ipfw -q'
${ipfw} flush
${ipfw} add check-state
${ipfw} table all flush
${ipfw} add drop tcp from 172.17.0.0/24 135,137-139 to 172.17.0.0/24 via rl0
${ipfw} add drop tcp from 172.17.0.0/24 135,137-139 to any via rl0
${ipfw} add drop udp from 172.17.0.0/24 135,137,138,139 to 172.17.0.0/24 via rl0
${ipfw} add drop udp from 172.17.0.0/24 135,137-139 to any via rl0
${ipfw} nat 1 config if re0 reset same_ports
${ipfw} add nat 1 ip from 172.17.0.0/24 to any via re0
${ipfw} add nat 1 ip from any to ВНЕШНИЙ_IP_СЕРВЕРА
${ipfw} add allow all from any to any

и делаем исполняемым
root@vpn:/root # chmod +x /etc/firewall

Для загрузки правил при старте добавляем в /etc/rc.conf
gateway_enable=YES
firewall_enable=YES
firewall_script="/etc/firewall"

и перезапускаем сервер
root@vpn:/root # reboot

2) Установка, настройка и запуск VPN PPTP сервера
root@vpn:/root # make install clean -С /usr/ports/net/mpd5 ( опции оставляем по умолчанию как есть )

Переходим в каталог с конфигами
cd /usr/local/etc/mpd5/

и создаем файл mpd.conf со следующим содержанием
root@vpn:/usr/local/etc/mpd5 # ee mpd.conf

startup:
set user foo bar 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:

set ippool add pool1 172.17.0.50 172.17.0.99 # Диапазон выдаваемых адресов

create bundle template B
set iface enable proxy-arp
set iface idle 1800
set iface enable tcpmssfix
set ipcp yes vjcomp
set ipcp ranges 172.17.0.1/32 ippool pool1
set ipcp dns 8.8.8.8 # DNS сервер
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 eap
set link enable chap
set link keep-alive 10 60
set link mtu 1460
set pptp self ВНЕШНИЙ_IP_СЕРВЕРА
set link enable incoming

Создаем файл с логинами и паролями
root@vpn:/usr/local/etc/mpd5 # ee mpd.secret
# логин пароль
deathstar password
admin password
testuser parol

Добавляем для автозапуска в файл /etc/rc.conf следующие строки

mpd_enable="YES"
mpd_flags="-b"

и запускаем
root@vpn:/root # /usr/local/etc/rc.d/mpd5 start
Starting mpd5.

Проверяем сетевые интерфейсы командой ifconfig

root@vpn:/usr/local/etc/mpd5 # ifconfig
re0: flags=8843 metric 0 mtu 1500
options=8009b
ether 00:16:3e:cd:d5:8f
inet X.X.X.X netmask 0xfffffff8 broadcast 85.10.239.255
nd6 options=29 media: Ethernet autoselect (100baseTX )
status: active
plip0: flags=8810 metric 0 mtu 1500
nd6 options=29 ipfw0: flags=8801 metric 0 mtu 65536
nd6 options=29 lo0: flags=8049 metric 0 mtu 16384
options=600003
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
inet 127.0.0.1 netmask 0xff000000
nd6 options=21 ng0: flags=88d1 metric 0 mtu 1396
inet 172.17.0.1 --> 172.17.0.50 netmask 0xffffffff
nd6 options=29

Если интерфейс ng0 появился — значит все ок. Теперь можно просто настроить VPN клиент в Вашей системе, и ходить в интернет через свежеиспеченный VPN =)))