Trafic Limit - проблема
Trafic Limit - проблема
Здравствуйте, уже как пол года пользуюсь вашей системой, все устраивает! За что огромное спасибо авторам!
Недавно возникла потребность в выставлении в тарифных планах месячного лимита на трафик. После чего перестали ходить Alive-пакеты на этих тарифах. Т.е. в тех тарифных планах, где лимита на трафик нет - все нормально, Alive-пакеты приходят, трафик считается, юзеры сидят в вебморде. Как только ставлю какое нибудь значение лимита - все, Alive-пакеты перестают ходить, трафик не считается. Посоветуйте пожалуйста, что можно сделать в данной ситуации. Конфигурация системы следующая: Linux Slackware 10.2, Kernel - 2.6.24.4, Radiusd-1.1.7, Freeradius-client-1.1.5, ppp-2.4.4, pptpd-1.3.4.
Недавно возникла потребность в выставлении в тарифных планах месячного лимита на трафик. После чего перестали ходить Alive-пакеты на этих тарифах. Т.е. в тех тарифных планах, где лимита на трафик нет - все нормально, Alive-пакеты приходят, трафик считается, юзеры сидят в вебморде. Как только ставлю какое нибудь значение лимита - все, Alive-пакеты перестают ходить, трафик не считается. Посоветуйте пожалуйста, что можно сделать в данной ситуации. Конфигурация системы следующая: Linux Slackware 10.2, Kernel - 2.6.24.4, Radiusd-1.1.7, Freeradius-client-1.1.5, ppp-2.4.4, pptpd-1.3.4.
Вот вывод radiusd -X:
Код: Выделить всё
Ready to process requests.
rad_recv: Access-Request packet from host 127.0.0.1:60261, id=41, length=108
Service-Type = Framed-User
Framed-Protocol = PPP
User-Name = "test1"
CHAP-Challenge = 0x47e3a730b9f3f92bec79e8e77120926d7aa6d1
CHAP-Password = 0xe50a4061d79a1aedc1b5739de1c80c49f0
Calling-Station-Id = "192.168.102.200"
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 0
Exec-Program output: Auth-Type := Accept
Exec-Program-Wait: value-pairs: Auth-Type := Accept
Exec-Program: returned: 0
modcall[authorize]: module "pre_auth" returns ok for request 0
modcall[authorize]: module "preprocess" returns ok for request 0
rlm_chap: WARNING: Auth-Type already set. Not setting to CHAP
modcall[authorize]: module "chap" returns noop for request 0
modcall[authorize]: module "mschap" returns noop for request 0
rlm_realm: No '@' in User-Name = "test1", looking up realm NULL
rlm_realm: No such realm "NULL"
modcall[authorize]: module "suffix" returns noop for request 0
rlm_eap: No EAP-Message, not doing EAP
modcall[authorize]: module "eap" returns noop for request 0
users: Matched entry DEFAULT at line 52
modcall[authorize]: module "files" returns ok for request 0
rlm_pap: Found existing Auth-Type, not changing it.
modcall[authorize]: module "pap" returns noop for request 0
modcall: leaving group authorize (returns ok) for request 0
rad_check_password: Found Auth-Type Accept
rad_check_password: Auth-Type = Accept, accepting the user
Exec-Program output: Acct-Interim-Interval = 60, Session-Timeout = 1997567, PPPD-Upstream-Speed-Limit = 0, Octets-Direction = 1, Framed-IP-Address = 192.168.1.1, Session-Octets-Limit = 10176916.9967514, Framed-IP-Netmask = 255.255.255.255, PPPD-Downstream-Speed-Limit = 0,
Exec-Program-Wait: plaintext: Acct-Interim-Interval = 60, Session-Timeout = 1997567, PPPD-Upstream-Speed-Limit = 0, Octets-Direction = 1, Framed-IP-Address = 192.168.1.1, Session-Octets-Limit = 10176916.9967514, Framed-IP-Netmask = 255.255.255.255, PPPD-Downstream-Speed-Limit = 0,
Exec-Program: returned: 0
Sending Access-Accept of id 41 to 127.0.0.1 port 60261
Finished request 0
Going to the next request
--- Walking the entire request list ---
Waking up in 6 seconds...
rad_recv: Accounting-Request packet from host 127.0.0.1:34063, id=42, length=114
Acct-Session-Id = "47FA54C10E2400"
User-Name = "test1"
Acct-Status-Type = Start
Service-Type = Framed-User
Framed-Protocol = PPP
Calling-Station-Id = "192.168.102.200"
Acct-Authentic = RADIUS
NAS-Port-Type = Async
Framed-IP-Address = 192.168.1.1
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
Acct-Delay-Time = 0
Processing the preacct section of radiusd.conf
modcall: entering group preacct for request 1
modcall[preacct]: module "preprocess" returns noop for request 1
rlm_acct_unique: Hashing 'NAS-Port = 0,Client-IP-Address = 127.0.0.1,NAS-IP-Address = 127.0.0.1,Acct-Session-Id = "47FA54C10E2400",User-Name = "test1"'
rlm_acct_unique: Acct-Unique-Session-ID = "4aca58ee5e095f5e".
modcall[preacct]: module "acct_unique" returns ok for request 1
rlm_realm: No '@' in User-Name = "test1", looking up realm NULL
rlm_realm: No such realm "NULL"
modcall[preacct]: module "suffix" returns noop for request 1
acct_users: Matched entry DEFAULT at line 7
modcall[preacct]: module "files" returns ok for request 1
modcall: leaving group preacct (returns ok) for request 1
Processing the accounting section of radiusd.conf
modcall: entering group accounting for request 1
radius_xlat: '/usr/var/log/radius/radacct/127.0.0.1/detail-20080407'
rlm_detail: /usr/var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d expands to /usr/var/log/radius/radacct/127.0.0.1/detail-20080407
modcall[accounting]: module "detail" returns ok for request 1
modcall[accounting]: module "unix" returns ok for request 1
radius_xlat: '/usr/var/log/radius/radutmp'
radius_xlat: 'test1'
modcall[accounting]: module "radutmp" returns ok for request 1
modcall: leaving group accounting (returns ok) for request 1
Exec-Program output:
Exec-Program: returned: 0
Sending Accounting-Response of id 42 to 127.0.0.1 port 34063
Finished request 1
Going to the next request
--- Walking the entire request list ---
Waking up in 5 seconds...
А вот вывод radiusd -X, только с отключением лимита.
Как видно - они различаются только тем, что при выставлении лимита после строки Sending Access-Accept... ничего не идет, а при отключении лимита - после этой строки идут параметры, которые, как я понял, и записываются в radattr.pppx
Код: Выделить всё
Ready to process requests.
rad_recv: Access-Request packet from host 127.0.0.1:44694, id=69, length=111
Service-Type = Framed-User
Framed-Protocol = PPP
User-Name = "test2"
CHAP-Challenge = 0x114bc4eca7d15526a1ad6c2889c9267536d16701041e
CHAP-Password = 0xb9cbf01223ddf7e46d1e4b67375fa1d491
Calling-Station-Id = "192.168.102.200"
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 0
Exec-Program output: Auth-Type := Accept
Exec-Program-Wait: value-pairs: Auth-Type := Accept
Exec-Program: returned: 0
modcall[authorize]: module "pre_auth" returns ok for request 0
modcall[authorize]: module "preprocess" returns ok for request 0
rlm_chap: WARNING: Auth-Type already set. Not setting to CHAP
modcall[authorize]: module "chap" returns noop for request 0
modcall[authorize]: module "mschap" returns noop for request 0
rlm_realm: No '@' in User-Name = "test2", looking up realm NULL
rlm_realm: No such realm "NULL"
modcall[authorize]: module "suffix" returns noop for request 0
rlm_eap: No EAP-Message, not doing EAP
modcall[authorize]: module "eap" returns noop for request 0
users: Matched entry DEFAULT at line 52
modcall[authorize]: module "files" returns ok for request 0
rlm_pap: Found existing Auth-Type, not changing it.
modcall[authorize]: module "pap" returns noop for request 0
modcall: leaving group authorize (returns ok) for request 0
rad_check_password: Found Auth-Type Accept
rad_check_password: Auth-Type = Accept, accepting the user
Exec-Program output: Acct-Interim-Interval = 60, Session-Timeout = 1996649, PPPD-Upstream-Speed-Limit = 0, Octets-Direction = 1, Framed-IP-Address = 192.168.1.137, Session-Octets-Limit = 103809024, Framed-IP-Netmask = 255.255.255.255, PPPD-Downstream-Speed-Limit = 0,
Exec-Program-Wait: value-pairs: Acct-Interim-Interval = 60, Session-Timeout = 1996649, PPPD-Upstream-Speed-Limit = 0, Octets-Direction = 1, Framed-IP-Address = 192.168.1.137, Session-Octets-Limit = 103809024, Framed-IP-Netmask = 255.255.255.255, PPPD-Downstream-Speed-Limit = 0,
Exec-Program: returned: 0
Sending Access-Accept of id 69 to 127.0.0.1 port 44694
Acct-Interim-Interval = 60
Session-Timeout = 1996649
PPPD-Upstream-Speed-Limit = Bridge-No
Octets-Direction = Route-IP-Yes
Framed-IP-Address = 192.168.1.137
Session-Octets-Limit = 103809024
Framed-IP-Netmask = 255.255.255.255
PPPD-Downstream-Speed-Limit = Send-Auth-None
Finished request 0
Going to the next request
--- Walking the entire request list ---
Waking up in 6 seconds...
rad_recv: Accounting-Request packet from host 127.0.0.1:51932, id=70, length=114
Acct-Session-Id = "47FA5857104900"
User-Name = "test2"
Acct-Status-Type = Start
Service-Type = Framed-User
Framed-Protocol = PPP
Calling-Station-Id = "192.168.102.200"
Acct-Authentic = RADIUS
NAS-Port-Type = Async
Framed-IP-Address = 192.168.1.137
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
Acct-Delay-Time = 0
Processing the preacct section of radiusd.conf
modcall: entering group preacct for request 1
modcall[preacct]: module "preprocess" returns noop for request 1
rlm_acct_unique: Hashing 'NAS-Port = 0,Client-IP-Address = 127.0.0.1,NAS-IP-Address = 127.0.0.1,Acct-Session-Id = "47FA5857104900",User-Name = "test2"'
rlm_acct_unique: Acct-Unique-Session-ID = "f8c699c65a1d6636".
modcall[preacct]: module "acct_unique" returns ok for request 1
rlm_realm: No '@' in User-Name = "test2", looking up realm NULL
rlm_realm: No such realm "NULL"
modcall[preacct]: module "suffix" returns noop for request 1
acct_users: Matched entry DEFAULT at line 7
modcall[preacct]: module "files" returns ok for request 1
modcall: leaving group preacct (returns ok) for request 1
Processing the accounting section of radiusd.conf
modcall: entering group accounting for request 1
radius_xlat: '/usr/var/log/radius/radacct/127.0.0.1/detail-20080407'
rlm_detail: /usr/var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d expands to /usr/var/log/radius/radacct/127.0.0.1/detail-20080407
modcall[accounting]: module "detail" returns ok for request 1
modcall[accounting]: module "unix" returns ok for request 1
radius_xlat: '/usr/var/log/radius/radutmp'
radius_xlat: 'test2'
modcall[accounting]: module "radutmp" returns ok for request 1
modcall: leaving group accounting (returns ok) for request 1
Exec-Program output:
Exec-Program: returned: 0
Sending Accounting-Response of id 70 to 127.0.0.1 port 51932
Finished request 1
Going to the next request
Waking up in 6 seconds...
а вот это шо за хрень (когда с лимитом): Session-Octets-Limit = 10176916.9967514
без лимита: Session-Octets-Limit = 103809024
кажется где-то на форуме об этом писали, вроде как баг был, и его акжется уже пофиксили... обновился б ты с cvs current... тока базы не забуть привести в соответствие с ченжлогс

без лимита: Session-Octets-Limit = 103809024
кажется где-то на форуме об этом писали, вроде как баг был, и его акжется уже пофиксили... обновился б ты с cvs current... тока базы не забуть привести в соответствие с ченжлогс
Отрубает - обычно не сразу, еще до метра успевает протечь 
И скидывает - не конкретно по месячному (или какому там) лимиту, а по превышению Session-Timeout или Session-Octets-Limit (что быстрее случится). Которые и зависят от лимитов.
Для начала - смотреть опять-таки /var/run/radattr.ppp? , после - уже делать выводы о месте глюков.

И скидывает - не конкретно по месячному (или какому там) лимиту, а по превышению Session-Timeout или Session-Octets-Limit (что быстрее случится). Которые и зависят от лимитов.
Для начала - смотреть опять-таки /var/run/radattr.ppp? , после - уже делать выводы о месте глюков.
Вот содержание radattr.pppx при выставлении месячного лимита в 10мб:
и что интересно, когда приходит n-ный Alive-пакет(при превышении лимита), то он имеет следующее содержание:
Как видно, Acct-Output-Octets превышает Session-Octets-Limit, но отключения не происходит.
Код: Выделить всё
Acct-Interim-Interval 60
Session-Timeout 1604421
PPPD-Upstream-Speed-Limit 0
Octets-Direction 1
Framed-IP-Address 192.168.1.161
Session-Octets-Limit 10485760
Framed-IP-Netmask 255.255.255.255
PPPD-Downstream-Speed-Limit 0
Код: Выделить всё
rad_recv: Accounting-Request packet from host 127.0.0.1:53749, id=43, length=144
Acct-Session-Id = "4800558F0B0800"
User-Name = "test2"
Acct-Status-Type = Interim-Update
Service-Type = Framed-User
Framed-Protocol = PPP
Acct-Authentic = RADIUS
Acct-Session-Time = 1921
Acct-Output-Octets = 11540125
Acct-Input-Octets = 1121149
Acct-Output-Packets = 16878
Acct-Input-Packets = 10027
Calling-Station-Id = "192.168.102.200"
NAS-Port-Type = Async
Framed-IP-Address = 192.168.1.161
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
Acct-Delay-Time = 0