URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 64207
[ Назад ]

Исходное сообщение
"callback server(radius+portslave)"

Отправлено brist , 16-Фев-06 14:34 
Всем доброго дня .
Сталкнулся со следующей проблемой ,
необходимо настроить 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 ?
спасибо

Содержание

Сообщения в этом обсуждении
"callback server(radius+portslave)"
Отправлено vvvua , 16-Фев-06 16:30 
У меня стоит такая связка. Правда, я ставил с deb пакетов (Debian linux).
Раньше(Black Cat linux 6.2) нужно было патчить pppd для CBCP. Сейчас вроде всё портслейв сам делает по команде с радиуса.



"callback server(radius+portslave)"
Отправлено brist , 17-Фев-06 16:51 
можешь скинуть конфиг 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
в чем может быть проблема ?

"callback server(radius+portslave)"
Отправлено vvvua , 20-Фев-06 16:44 
>можешь скинуть конфиг 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



"callback server(radius+portslave)"
Отправлено vvvua , 20-Фев-06 16:59 
ну и кусок конфига с радиуса (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

"callback server(radius+portslave)"
Отправлено ZXVF , 20-Фев-06 18:02 
Если сервер- 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 ?
>спасибо