From: Роман Сотников <drive(-sobaka-)oln(точка)ru>
Newsgroups: email
Date: Mon, 11 Apr 2005 14:31:37 +0000 (UTC)
Subject: [FreeBSD] Настройка PPTP сервера на базе mpd и FreeRadius
Настройка mpd+freeradius+freenibs+mysql
Необходимость назрела как всегда, домашняя сеть и трафик считать нечем.
Набрёл в интернете на сайт www.nibs.net.ua, решение понравилось, взялся
за его реализацию.
cd /usr/ports/net/mpd
make
make install
версия mpd у меня вот такая:
su-2.05# mpd -v
Version 3.18 (root@solar.oln.ru 07:41 28-Mar-2005)
Следует заметить, что freenibs работает только со строго определённой
версией freeradius, у меня freeradius версии:
su-2.05# radiusd -v
radiusd: FreeRADIUS Version 0.9.3, for host i386-unknown-freebsd4.11, built on Mar 30 2005 at 22:41:23
Copyright (C) 2000-2003 The FreeRADIUS server project.
Ставил я его _не_ из портов, на nibs.net.ua есть ссылка откуда можно его
забрать. Для него есть определённый freenibs, на сайте nibs.net.ua он есть.
Версия системы:
su-2.05# uname -a
FreeBSD solar.oln.ru 4.11-RELEASE FreeBSD 4.11-RELEASE #0: Sun Mar 27 07:42:36 NOVST 2005 root@:/usr/src/sys/compile/PROXY_SAT i386
Ставим freeradius и freenibs следующим образом.
Разархивируем radius к примеру в /tmp/billing,
tar -zxvf freeradius-0.9.3.tar.gz /tmp/billing
а потом _туда же_ с перезаписью разархивируем frebibs
tar -zxvf freenibs-0.0.3-bf3-freeradius-0.9.3.tar.gz /tmp/billing
cd /tmp/billing
make
make install
Теперь правим конфиги:
После наступания на все мыслимые и не мыслимые грабли родились вот такие
конфиги.
pptp0:
new -i ng0 pptp0 pptp0
set ipcp ranges 10.10.10.1/30 10.10.10.47/30
load pptp_standart
pptp1:
new -i ng1 pptp1 pptp1
set ipcp ranges 10.10.10.1/30 10.10.10.20/30
load pptp_standart
pptp2:
new -i ng2 pptp2 pptp2
set ipcp ranges 10.10.10.1/30 10.10.10.74/30
load pptp_standart
pptp3:
new -i ng3 pptp3 pptp3
set ipcp ranges 10.10.10.1/30 10.10.10.223/30
load pptp_standart
pptp4:
new -i ng4 pptp4 pptp4
set ipcp ranges 10.10.10.1/30 10.10.10.10/30
load pptp_standart
pptp5:
new -i ng5 pptp5 pptp5
set ipcp ranges 10.10.10.1/30 10.10.10.175/30
load pptp_standart
pptp6:
new -i ng6 pptp6 pptp6
set ipcp ranges 10.10.10.1/30 10.10.10.50/30
load pptp_standart
pptp_standart:
set iface disable on-demand
set iface enable tcpmssfix
set bundle enable multilink
set link yes acfcomp protocomp
set link no pap chap
set link enable chap
set link keep-alive 60 180
set ipcp yes vjcomp
set ipcp dns 192.168.2.1
set ipcp nbns 192.168.2.1
set iface enable proxy-arp
set bundle enable compression
set ccp yes mppc
set ccp yes mpp-e40
set ccp yes mpp-e56
set ccp yes mpp-e128
set ccp yes mpp-stateless
set bundle yes crypt-reqd
set pptp self 0.0.0.0
set pptp enable incoming
set pptp disable originate
set radius server 192.168.2.1 <пароль к радиусу> 1812 1813
set radius timeout 10
set radius config /usr/local/etc/raddb/radius.conf
set radius retries 3
set bundle enable radius-acct
set bundle enable radius-auth
set ipcp yes radius-ip
open
Необходимо заметить, что mpd не любит пробелов в конфиге, поэтому
следует использовать табуляцию.
bash-2.05# more mpd.links
pptp0:
set link type pptp
pptp1:
set link type pptp
pptp2:
set link type pptp
pptp3:
set link type pptp
pptp4:
set link type pptp
pptp5:
set link type pptp
pptp6:
set link type pptp
Файл mpd.secret пустой, потому как пароли проверяет радиус.
Насколько я помню, в файле acct_users я ничего не менял.
bash-2.05# more clients
# Client Name Key
#---------------- ----------
#portmaster1.isp.com testing123
#portmaster2.isp.com testing123
#proxyradius.isp2.com TheirKey
192.168.2.1 <пароль к радиусу>
127.0.0.1 <пароль к радиусу>
Вообщк то файл clients устаревший, он тут для совместимости, вдруг
кому-нибудь он будет нужен :)
bash-2.05# more clients.conf
client 127.0.0.1 {
secret = <пароль к радиусу>
shortname = localhost
nastype = other # localhost isn't usually a NAS...
}
client 192.168.2.1 {
secret = <пароль к радиусу>
shortname = localhost
nastype = other # localhost isn't usually a NAS...
}
bash-2.05# more naslist
# NAS Name Short Name Type
#---------------- ---------- ----
#portmaster1.isp.com pm1.NY livingston
#portmaster2.isp.com pm1.LA livingston
localhost local portslave
192.168.2.1 local portslave
bash-2.05# more radius.conf
acct 192.168.2.1 <пароль к радиусу>
auth 192.168.2.1 <пароль к радиусу>
Как правило у всех возникает проблема, что nibs трафик считает, а с
линии юзера не скидывает, в логах вот что пишет:
Sat Apr 9 15:58:48 2005 : Info: rlm_nibs (rlm_nibs_accounting):
User `drive' must be killed (no money on deposit) [192.168.2.1:0] |192.168.2.47|
$sock = IO::Socket::INET->new(
PeerAddr => $nasip,
PeerPort => $nastelnetport,
Proto => 'tcp') or die "Can not connect to mpd!n$!";
$sock->autoflush(1);