Один знакомый мне говорил что FreeBSD ставят по нескольким причинам и одна из них это mpd.
Mpd это реализация базирующегося на netgraph(4) PPP протокола для FreeBSD. Он разработан как быстрый и гибкий в конфигурировании работающий в пользовательском окружении, маршрутизации всех пакетов на уровне ядра.
Перейдем сразу к установке и настройке.
Устанавливаем mpd5.
# whereis mpd5
/usr/ports/net/mpd5
# cd /usr/ports/net/mpd5
# make install clean
После завершения установки добавим в /etc/rc.conf
# echo ‘mpd_enable=»YES»‘ >> /etc/rc.conf #добавляем в автозагрузку
# echo ‘mpd_flags=»-b»‘ >> /etc/rc.conf #запускать в фоновом режиме
# echo ‘gateway_enable=»YES»‘ >> /etc/rc.conf #значит что данный пк является шлюзом
Чтобы у нас были логи нашего MPD, в файле /etc/syslog.conf в конце добавляем следующие строки
# ee /etc/syslog.conf
!mpd
*.* /var/log/mpd.log
Создадим этот файл и зададим ему права только на чтение root
# touch /var/log/mpd.log
# chmod 600 /var/log/mpd.log
Перезапустим syslogd
# /etc/rc.d/syslogd reload
Перейдем теперь к настройке mpd
# ee /usr/local/etc/mpd5/mpd.conf
default:
load pptp_server
pptp_server:
# Определяем пул адресов которые будут выдаваться автома.
set ippool add pool1 192.168.2.50 192.168.2.80
# Создать клон шаблона B
create bundle template B
set iface enable proxy-arp
set iface idle 1800
set iface enable tcpmssfix
set ipcp yes vjcomp
set iface enable nat
# Настройки которые он будет сообщать клиентам.
set ipcp ranges 192.168.2.1/32 ippool pool1 #ip шлюза
set ipcp dns 192.168.0.1 #ip dns сервера
set ipcp nbns 192.168.0.1 #ip dns сервера
# Тип шифрования
set bundle enable compression
set ccp yes mppc
set mppc yes e40
set mppc yes e128
set mppc yes stateless
# Создавать копии шаблона L
create link template L pptp
# Установить расслоение шаблона
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 link keep-alive 10 60
# Уменьшить MTU что бы избежать фрагментации в GRE пакете.
set link mtu 1360
# Разрешить принимать звонки
set link enable incoming
В mpd.conf так же можно указать какой скрипт будет выполнятся при подключении или отключении пользователя. Скрипты выполняются с правами root.
set iface up-script /usr/local/etc/mpd5/vpn_up_mpd.pl
set iface down-script /usr/local/etc/mpd5/vpn_down_mpd.pl
Теперь создадим файл mpd.secret. В нем хранятся данные о клиентах (логин,пароль и ip адрес по желанию)
# ee /usr/local/etc/mpd5/mpd.secret
user1 "123456"
user2 "123456" 192.168.2.2
Не забудьте поставить права только на чтение и запись пользователю root
# chmod 600 /usr/local/etc/mpd5/mpd.secret
# chmod 600 /usr/local/etc/mpd5/mpd.conf
Теперь попробуем запустить сервер.
# /usr/local/etc/rc.d/mpd5 start
Проверим запустился ли сервер
# ps x | grep mpd5
11659 ?? Ss 0:00.62 /usr/local/sbin/mpd5 -p /var/run/mpd5.pid -b
Ну в роди как работает =). Если нет то смотри логи. На заметку mpd слушает порт 1723
Перевод документации по mpd5