DataLife Engine > Настройка > NPPPD: простой PPTP VNP сервер в OpenBSD

NPPPD: простой PPTP VNP сервер в OpenBSD


29-03-2012. Разместил: synergix


Сегодня мы заглянем в гости к OpenBSD, поскольку статьи на сайте посвящены в основном FreeBSD. Но и обходить вниманием такую замечательную систему как OpenBSD было бы неправильным. Данная статья представляет вольный перевод англоязычной статьи мартовского номера BSDMag.


В январе 2010 года npppd был добавлен в кодовую базу OpenBSD и позиционировался как PPTP/L2TP VPN и PPPoE сервер. Поскольку npppd находится в стадии активной разработки, то порта пока нет, но его можно собрать из исходных текстов. Для начала установите OpenBSD-current либо дождитесь версии OpenBSD 5.1, которая должна выйти 1 мая 2012 г.

Для начала проведем небольшие подготовительные работы: задействуем протоколы gre, esp и pipex через sysctl:
$ sudo sysctl net.inet.gre.allow=1  #(for PPTP)
$ sudo sysctl net.inet.esp.allow=1  #(for IPSEC)
$ sudo sysctl net.pipex.enable=1    #(for PIPEX)

и перезагрузимся, чтобы изменения вступили в силу.

Далее установим npppd:
cd /usr
cvs -d anoncvs@anoncvs.fr.openbsd.org:/cvs checkout -P src/usr.sbin/{Makefile.inc,npppctl,npppd}
cd src/usr.sbin/npppd
make
sudo make install
cd ../npppctl
make
sudo make install

После компиляции и установки в каталоге /usr/sbin появятся 2 файла - это npppd (собственно демон) и npppctl (утилита управления).

Создадим конфигурационный файл:
sudo mkdir -m 0755 /etc/npppd


Вот пример конфигурационного файла:
[npppd.conf]
-------------------------------------------------------------------------------
interface_list:      tun0 
interface.tun0.ip4addr:    192.168.255.1
# IP address pool
pool.dyna_pool:     192.168.255.0/25
pool.pool:      192.168.255.0/24
# Local file authentication
auth.local.realm_list:     local
auth.local.realm.acctlist:    /etc/npppd/npppd-users.csv
realm.local.concentrate:    tun0
# RADIUS authentication / accounting
#auth.radius.realm_list:                   radius
#auth.radius.realm.server.address:   127.0.0.1:1812
#auth.radius.realm.server.secret:   password
#auth.radius.realm.acct_server.address:  127.0.0.1:1813
#auth.radius.realm.acct_server.secret:  password
#realm.radius.concentrate:    tun0
lcp.mru:     1400
auth.method:     mschapv2 chap
ipcp.dns_primary:    192.168.107.254
#ipcp.dns_secondary:           192.168.6.20
ipcp.nbns_primary:    192.168.107.254
#ipcp.nbns_secondary:          192.168.6.20
#ipcp.assign_fixed:            true
#ipcp.assign_userselect:       true
pptpd.enabled:    true
pptpd.ip4_allow:    0.0.0.0/0
# L2TP daemon
l2tpd.enabled:     true
l2tpd.ip4_allow:    0.0.0.0/0
l2tpd.require_ipsec:    false


В этом тестовом конфиге для VPN соединений используется интерфейс tun0 и пользователям выдается подсеть 192.168.255.0/25
При старте npppd интерфейсу tun0 будет присвоен IP 192.168.255.1, пользователи будут авторизоваться по записям в файле /etc/npppd/npppd-users.csv
npppdтакже может использвать для авторизации RADIUS-сервер.

Формат файла /etc/npppd/npppd-users.csv весьма прост:
Username,Password,Framed-IP-Address,Framed-IP-Netmask,Description,Calling-Id
user1,password1
user2,password2

То есть, мы можем задать логин, пароль, выдаваемый IP-адрес и маску подсети и описание.
По умолчанию, достаточно задать только первые два поля.
Следует учесть что пароли хранятся в открытом виде и безопасность обеспечивается только правами доступа к файлу, если вам потребуется большая безопасность - используйте RADIUS-сервер.

Настройка PPTP завершена и можно запустить npppd с ключами -d для отладки и -D для запуска в режиме демона.
#/usr/sbin/npppd -D


Попробуем соединиться с нашим VPN сервером, используя pptp. Для начала поставим его:
$ sudo pkg_add pptp


и поправим конфиг /etc/ppp/ppp.conf:
 vpn_pptp:
       set device "!/usr/local/sbin/pptp --nolaunchpppd A.B.C.D"
       set authname user1
       set authkey password1
       set mppe 128 stateless
       disable protocomp
       deny protocomp
       disable ipv6cp

где соотвественно A.B.C.D нужно заменить на внешний IP адрес сервера.

Соединяемся:
$ sudo ppp -ddial vpn_pptp


Для мониторинга подключенных пользователей можно использовать утилиту npppctl
# npppctl session brief
Ppp Id     Assigned IPv4   Username             Proto Tunnel From
---------- --------------- -------------------- ----- -------------------------
         6 192.168.255.62  giovanni             PPTP  host222-19-dyn.51-85-r.provider.it:49230
# npppctl session all
Ppp Id = 8
          Ppp Id                  : 8
          Username                : giovanni
          Realm Name              : local
          Concentrated Interface  : tun0
          Assigned IPv4 Address   : 192.168.255.62
          Tunnel Protocol         : PPTP
          Tunnel From             : host222-19-dyn.51-85-r.provider.it
          Start Time              : 2012/02/07 14:05:41
          Elapsed Time            : 6967 sec (1 hour and 56 minutes)
          Input Bytes             : 5233902 (5.0 MB)
          Input Packets           : 38364
          Input Errors            : 1 (0.0%)
          Output Bytes            : 27619691 (26.3 MB)
          Output Packets          : 46374
          Output Errors           : 26 (0.1%)


Если вы хотите отключить всех пользователей, то
#npppctl clear all


Если ваш VPN сервер находится за NAT-ом, будет полезным добавить
inet 192.168.255.1
!route add 192.168.255.0/25 192.168.255.1

в файл /etc/hostname.tun0.

Ну вот и все. Удачи ;)
Вернуться назад