Всем доброго дня .
Сталкнулся со следующей проблемой ,
необходимо настроить callback сервер т.е звоню с клинтской машины(Вин)
сервер мне перезванивает стартует ppp выделяет мне ip и все я в сети, никакого биллинга и прочее мне не надо.
Решено было использовать freeradius+portslave+pppd
компилирую portslave , c опцией --enable-callback
вылазит :
----
libpsr.c:58: error: syntax error before '*' token
libpsr.c: In function `plugin_init':
libpsr.c:101: error: `cbcp_init_hook' undeclared (first use in this function)
libpsr.c:101: error: (Each undeclared identifier is reported only once
-+-
смотрю в libpsr.c а именно в секцию где инклуды ,
проверяю все ли хедеры у меня есть , обнаруживаю что одного нет
а именно cbcp.h
yum подсказал , что ни в одном пакете он не может его найти.
остальные хедеры есть и лежат в папке include/pppd , и ложатся они туда при установке пакета ppp-devel
нашел cbcp.h в исходниках ppp , но то ли он не тот или я не знаю -
обьявления функции cbcp_init_hook там нет.
без параметра --enable-callback все отлично собирается.
Я так думаю что возможно версия ppp-devel(у меня 4.2.2) не та , тогда какая нужна , а ты как думаешь all ?
Если я буду собирать ppp с исходников(сейчас ставлю с рпм) он положит в /usr/include/pppd хедеры ?
Еще , я так понял что -enable-callback это всего лишь включение поддержки протокола cbcp - так ли он необходим в моем случае (что я потеряю если его отключу?),
т.е в связке freeradius+porslave+ppp , я могу настороить callback в радиусе (указать в radiusе Service-Type=Callback-Framed-User например)?
или в ppp ?
спасибо
У меня стоит такая связка. Правда, я ставил с deb пакетов (Debian linux).
Раньше(Black Cat linux 6.2) нужно было патчить pppd для CBCP. Сейчас вроде всё портслейв сам делает по команде с радиуса.
можешь скинуть конфиг portslave ?
бо у меня в конфиге all.authtype=radius
я собрал - запускаю , c винмашины звоню, если с терминала
ввожу юзера/пароль которые в радиусе прописаны в users ,
в логах портслава пишет
Feb 17 15:06:41 admin port[S1]: portslave started on port 1 (/dev/ttyS0)
Feb 17 15:07:15 admin port[S1]: No utmp entry found when expected for line /dev/ttyS0.
Feb 17 15:07:30 admin port[S1]: Connected - waiting for login
Feb 17 15:07:34 admin port[S1]: Detected login for uzver
Feb 17 15:07:37 admin port[S1]: rc_avpair_new: unknown attribute 1
Feb 17 15:07:37 admin port[S1]: rc_avpair_new: unknown attribute 61
Feb 17 15:07:37 admin port[S1]: rc_avpair_new: unknown attribute 77
Feb 17 15:07:37 admin port[S1]: rc_avpair_new: unknown attribute 44
Feb 17 15:07:37 admin port[S1]: rc_avpair_new: unknown attribute 7
Feb 17 15:07:37 admin port[S1]: rc_avpair_new: unknown attribute 6
Feb 17 15:08:31 admin port[S1]: Got Hangup - exiting
в радиусе ни намека на попытку аутентификации ,что логично.
меня интересует portslave должен работать с радиусом напрямую или
через radiusclient ?
у меня при запуске портслава если не указан radiusclient.conf
то он матерится на это.
а если звоню подключением то портслав пишет :
Feb 17 15:37:08 admin port[S1]: portslave started on port 1 (/dev/ttyS0)
Feb 17 15:37:37 admin port[S1]: No utmp entry found when expected for line /dev/ttyS0.
Feb 17 15:37:52 admin port[S1]: Connected - waiting for login
Feb 17 15:37:54 admin port[S1]: PPP frames detected - switching to PPP mode
Feb 17 15:37:54 admin port[S1]: /usr/sbin/ppp: No such file or directory
Feb 17 15:37:54 admin port[S1]: Session done.
хотя путь /usr/sbin/ppp я не где не прописывал
в конфе портслава прописано
s101.pppd /usr/sbin/pppd
s101.autoppp proxyarp %d asyncmap 0 %i: \
callback server noipx noccp login auth require-pap refuse-chap \
mtu %t mru %t \
ms-dns 192.168.0.1 \
plugin /usr/local/lib/libpsr.so
в чем может быть проблема ?
>можешь скинуть конфиг portslave ?
ugu
>в чем может быть проблема ?
ссылку можно создать на pppd.
вот мой конф. модем idc 2814bxl+, com1# pslave.conf Here is the sample server configuration file.
#
# Version: 2005.04.03# IP address - if left empty, uses the IP address of the system (hostname).
# This is used as the "local" address for SLIP and PPP connections.
#
# used to be conf.ipno
all.loc_host 10.3.2.10# If you set this to "yes", you can always login locally by putting a '!'
# before your loginname. Useful for emergencies when the RADIUS server is down.
#
all.locallogins yes# Logging stuff - this program can use a remote syslog daemon if needed.
# If you want to log locally leave the "syslog" field empty. The facility
# field is an integer between 0 and 7 and sets the syslog facility to
# local0-local7.
#
#all.syslog logger.someisp.com
all.syslog
all.facility 2# Directory where your scripts that set up IP filtering (typically using
# ipfwadmin) are stored. To invoke them, just add the RADIUS-attribute
# Framed-Filter-Id = "foo" to your profile, where foo is the name of script.
#
all.filterdir /etc/portslave/filters## The all entry is used as a template for all others. This means that
## setting all.debug to "2", you set s0.debug, s1.debug, s2.debug etc.
## to "2". It also means that all these settings can be overridden on a
## per-port basis below.# Debugging output to syslog. Set to 0, 1, or 2. 2 is pretty verbose.
#
all.debug 1# Authentication type - either "radius" or "none".
#
all.authtype radius# Default is to accept NULL passwords when doing radius authentication. Set
# to "0" or "1". This option does not have effect on non-radius
# authentication - i.e. if "authtype" is "none" or if you do a local login.
#
all.radnullpass no# Default protocol and host.
#
all.protocol ppp# Default IP stuff. If you end the "rem_host" with a "+", the portnumber will
# be added to the IP number. The IP number of a port is used when the RADIUS
# server doesn't send an IP number, or if it tells us to use a dynamic rem_host.
#
# Leave the netmask at 255.255.255.255, unless your really know what
# you're doing.
#
# all.rem_host used to be all.ipno
all.rem_host 172.16.3.2+
all.netmask 255.255.255.255
all.mtu 576
# Standard message that is issued on connect.
#
all.issue \n\
\n\
Welcome to my internet server %h port S%p \n\
\n\
\n# If you want portslave to update the wtmp file just
# like a regular getty/login, set this to yes.
#
all.syswtmp yes## Options for the serial port.
# Porttype (passed to radius server for logging).
# async, sync, isdn, isdn-v120, isdn-v110
#
all.porttype async# Speed. All ports are set to 8N1.
#
all.speed 115200# Use this to initialize the connection
#
# d == delay (1 sec), p == pause (0.1 sec), l == toggle DTR
# r == <CR>, l == <LF>
#
# If the modem tells us the calling number by "NMBR = num" and the called
# number by "NDID = num" (as some brands apparently do) then add the
# following to the start of the initchat to recognise the CLI numbers:
# SETVAR "S=NMBR = " \
# SETVAR "D=NDID = " \
#
all.initchat TIMEOUT 10 \
ABORT "NO CARRIER" \
ABORT VOICE \
SETVAR "C=CARRIER " \
SETVAR C+PROTOCOL: \
SETVAR C?CONNECT \
"" \d\l\dATZ \
OK\r\n-ATZ-OK\r\n "\c" \
TIMEOUT 3600 \
RING "\c" \
STATUS Incoming %p:I.HANDSHAKE \
"" ATA \
TIMEOUT 75 \
CONNECT "\c" \
STATUS Connected %p:I.HANDSHAKE# Flow control on this serial port:
# hard - hardware, rts/cts
# soft - software, CTRL-S / CTRL-Q
# none.
#
all.flow hard# Use the DCD line or not (this sets CLOCAL if off). This means that the
# session will get hung up if the modem hangs up. Can be set to 0 or 1.
#
all.dcd yes# PPP options - used if we autodetect a PPP session.
# Note that we set mru and mtu both to the MTU setting.
#
all.autoppp proxyarp %d asyncmap 0 %i: \
noipx noccp login auth require-pap refuse-chap \
mtu %t mru %t \
ms-dns 10.3.2.10 ms-dns 212.35.160.30 \
plugin /usr/lib/libpsr.so## PPP options - User already authenticated and service type is PPP.
#
all.pppopt proxyarp %d asyncmap 0 %i:%j \
noipx noccp \
mtu %t mru %t \
netmask %m idle %I maxconnect %T \
ms-dns 10.3.2.10 ms-dns 212.35.160.30 \
plugin /usr/lib/libpsr.so## Tty names are s0...s63. For every port we need to define a tty port, and
## an IP number for when radius tells us to pick one ourself. Unless you
## use the IP pool option mentioned above (IP number with "+" appended).
##
## Note that you can change _all_ of the above settings that start
## with all.xxxx on a per-port basis, such as issue, prompt etc.
#
##make the first 32 ports be Rocketport
#s{0-31} ttyR{0-31}
##used to need the following lines repeated
#s0.tty ttyR0
#s1.tty ttyR1
#s2.tty ttyR2
##make the next 32 ports be Cyclades
#s{32-63} ttyC{0-31}
##make the next 32 ports be Stallion
#s{64-95} ttyE{0-31}
##make ports 100 and 101 be standard serial.
#s{100-101} ttyS{0-1}
#s{0-1} ttyS{0-1}
##the above but for devfs
#s{0-31} ttS/R{0-31}
#s{32-63} ttS/C{0-31}
#s{64-95} ttS/E{0-31}
#s{100-101} ttS/{0-1}
s0.tty ttyS0
ну и кусок конфига с радиуса (users):
testlogin Auth-Type := Local, User-Password == "testingpass"
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 172.16.3.33,
Framed-IP-Netmask = 255.255.255.0,
Framed-Routing = Broadcast-Listen,
Framed-Filter-Id = "std.ppp",
Framed-MTU = 1500,
Framed-Compression = Van-Jacobsen-TCP-IP
Если сервер- Linux, клиент винда то нужен патченый pppd
на предмет поддержки MS CBCP (CallBackControlProtocol).
Можно найти на freshmeat.net.>Всем доброго дня .
>Сталкнулся со следующей проблемой ,
>необходимо настроить callback сервер т.е звоню с клинтской машины(Вин)
>сервер мне перезванивает стартует ppp выделяет мне ip и все я
>в сети, никакого биллинга и прочее мне не надо.
>Решено было использовать freeradius+portslave+pppd
>компилирую portslave , c опцией --enable-callback
>вылазит :
>----
>libpsr.c:58: error: syntax error before '*' token
>libpsr.c: In function `plugin_init':
>libpsr.c:101: error: `cbcp_init_hook' undeclared (first use in this function)
>libpsr.c:101: error: (Each undeclared identifier is reported only once
>-+-
>смотрю в libpsr.c а именно в секцию где инклуды ,
>проверяю все ли хедеры у меня есть , обнаруживаю что одного нет
>
>а именно cbcp.h
>yum подсказал , что ни в одном пакете он не может его
>найти.
>остальные хедеры есть и лежат в папке include/pppd , и ложатся они
>туда при установке пакета ppp-devel
>нашел cbcp.h в исходниках ppp , но то ли он не тот
>или я не знаю -
>обьявления функции cbcp_init_hook там нет.
>без параметра --enable-callback все отлично собирается.
>Я так думаю что возможно версия ppp-devel(у меня 4.2.2) не та
>, тогда какая нужна , а ты как думаешь all ?
>
>Если я буду собирать ppp с исходников(сейчас ставлю с рпм) он положит
>в /usr/include/pppd хедеры ?
>Еще , я так понял что -enable-callback это всего лишь включение поддержки
>протокола cbcp - так ли он необходим в моем случае (что
>я потеряю если его отключу?),
>т.е в связке freeradius+porslave+ppp , я могу настороить callback в радиусе (указать
>в radiusе Service-Type=Callback-Framed-User например)?
>или в ppp ?
>спасибо