VPN клиент под FreeBSD в домовых сетях

Давно известно, что в сетях некоторых провайдеров,не будем показывать пальцем, есть проблемы с поднятием VPN из под FreeBSD.
Пару лет назад наткнулся на эту проблему в своей сети, не стал долго думать и поставил железный роутер и был доволен.
Но, как известно, человек предполагает….
В общем назрела эта проблема вновь. Гугль дает великое множество ссылок на различные рецепты шаманских танцев, но мне не удалось найти ни одного описания приводящего к желаемому результату.
Однако поднять VPN-туннель у меня получилось:)
На самом деле, все элементарно.
На FeeBSD 6.2 с mpd4-4.0b4 все поднимается на ура.

Ниже рецепт на примере моей сети:

Дано:

локальный IP 10.22.2.7 c маской 255.0.0.0
шлюз 10.0.0.2
DNS1 85.93.129.2
DNS2 85.93.128.2
VPN-server 10.0.0.2

Настройка сети

1. Добавляем нужные строки в конфиги

в /etc/rc.conf:
ifconfig_em0="inet 10.22.2.7 netmask 255.0.0.0"
defaultrouter="10.0.0.2"

в /etc/resolv.conf:
nameserver 85.93.129.2
nameserver 85.93.128.2

2. Рестартуем сервисы:
/etc/rc.d/netif restart
/etc/rc.d/routing restart

3. После проверяем связь с DNS-сервером:
ping 85.93.129.2

Если ping проходит, то идем дальше.
Если нет, то значит где-то допустили ошибку. Проверяем настройки сети.

Настройка VPN

4. Устанавливаем mpd-4.x

так:
pgk_add -r mpd-4.x

или так:
cd /usr/ports/net/mpd4 && make install clean

5. Создаем 4 файла в /usr/local/etc/mpd4/ с нижеприведенным содержимым:

mpd.conf:
startup:
set web ip 127.0.0.1
set web port 5006
set web user vpn vpn
set web open

default:
load vpn-pptp

vpn-pptp:
new -i ng0 netline_pptp vpn
set iface mtu 1460
set iface idle 0
set iface enable tcpmssfix
set iface up-script /usr/local/etc/mpd4/up-vpn.sh
set iface down-script /usr/local/etc/mpd4/down-vpn.sh
# меняем LOGIN и PASSWORD на свои
set auth authname LOGIN
set auth password PASSWORD
set link keep-alive 60 180
set link accept chap
set link no pap
set link max-redial 0
set bundle disable multilink
set bundle disable crypt-reqd
set bundle disable noretry
set ccp yes mpp-e40
set ccp no mpp-e128
set ccp no mpp-stateless
set ipcp no vjcomp
open

mpd.links
vpn:
set link type pptp
set pptp peer 10.0.0.2
set pptp enable originate
set pptp disable incoming windowing

up-vpn.sh:
#!/bin/sh

netgw=`10.0.0.2`
route delete $4
route add $4 $netgw
route delete default
route add default $4
echo $4 > /tmp/pptpgw

down-vpn.sh:
#!/bin/sh

netgw=`10.0.0.2`
vpngw=`cat /tmp/pptpgw`
route delete $vpngw
route delete default
route add default $netgw

6. Стартовый скрипт mpd4:

переименовываем:
mv /usr/local/etc/rc.d/mpd4.sh.sample /usr/local/etc/rc.d/mpd4.sh

и запускаем:
/usr/local/etc/rc.d/mpd4.sh start

останавливаем соответственно:
/usr/local/etc/rc.d/mpd4.sh stop

Вот собственно и все.
Успехов.

http://faqman.ru

Обновлено: 12.03.2015