Jump to content

Recommended Posts

Posted

Доброго времени суток, уважаемые форумчане ! Возник вопрос, а как же происходит дисконнект пользователя путем скрипта OnDisconnect

Установил систему все прописал, смотрю логи как работают скрипты OnConnect и OnDisconnect

когда все установил и запустил инета у пользователей так и не появилось, прописал в iptables

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

eth0-глобал

eth1- внутрь

Пакеты заходили

при смене MAC-адреса через Ubilling пользователь соответственно отрубается.

Далее попробовал отключить пользователя в профиле смотрю в лог и отключаю, проскочил скрипт OnDisconnect а потом опять тут же OnConnect и соответственно у пользователя Интернет остался.

Подскажите пожалуйста в какую сторону смотреть ?

Posted

Посмотреть еще /var/log/stargazer.log и лог юзера. Но последний в базе, по этому его смотреть не очень удобно.

Posted

как бы ничего криминального не увидел

 

В профиле - CHANGE Down kemob_h525ap525_siwn ON 1

В stg лог - 2012-11-21 14:18:28 -- Admin 'admin', 127.0.0.1: User 'kemob_h525ap525_siwn': 'disabled' parameter changed from '0' to '1'.

Posted

А как определили что после OnDisconnect вызвался OnConnect?

Posted

На самом деле в первую очередь нужно понять что такое firewall (а точнее iptables).

Как формируются его правила.

Что они делают при старте и в файлах OnConnect/OnDisconnect.

 

Тогда прийдет прозрение как включается и отключается пользователь.

Posted

На самом деле в первую очередь нужно понять что такое firewall (а точнее iptables).

Как формируются его правила.

Что они делают при старте и в файлах OnConnect/OnDisconnect.

 

Тогда прийдет прозрение как включается и отключается пользователь.

 

Вы намекаете что не нужно мне было прописывать маскарад ? :) тогда получается что при стандартных файлов интернет у пользователей не работает ? или как ?

 

А как определили что после OnDisconnect вызвался OnConnect?

В лог-файле

Posted

...

А как определили что после OnDisconnect вызвался OnConnect?

В лог-файле

Это понятно, вы об этом еще в первом посте написали. Кто пишет этот лог и что за информация в нем?

Posted

Если оооооочень вкратце то :

 

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #этим Вы включаете общее разрешительное правило для NAT выпускать пользователей в инет

OnConnect

iptables -t mangle -I FORWARD -d $IP -j ACCEPT #разрешаем пропуск пакетов к пользователю
iptables -t mangle -I FORWARD -s $IP -j ACCEPT #разрешаем пропуск пакетов от пользователя

OnDisconnect

iptables -t mangle -D FORWARD -d $IP -j ACCEPT #убираем пропуск пакетов к пользователю
iptables -t mangle -D FORWARD -s $IP -j ACCEPT #убираем пропуск пакетов от пользователя

По идее этого должно хватить. Но в моем случае этого недостаточно, поэтому в OnDisconnect я добавляю еще пару запрещающих правил.

iptables -t mangle -I FORWARD -d $IP -j DROP #запрещаем пропуск пакетов к пользователю
iptables -t mangle -I FORWARD -s $IP -j DROP #запрещаем пропуск пакетов от пользователя

Инет у пользователя отрубается на OnDisconnect.

 

Это простейшее объяснение , а не призыв делать именно так. Почему ?

Потому что :

  1. В OnConnect по такой схеме нужно сначала удалить правила запрещающие пропуск пакетов, а только потом создать разрешающее.
     
  2. Использовать такую схему (линейную) - можно только до 100-300 абонентов. (на каждого абона получается от 1 до 5 правил - итого Ваш роутер просто загнется от нагрузки)
     
  3. При большем количестве нужно использовать ipset

Posted
как бы ничего криминального не увидел

Ну вобще-то так и выглядит вырубание при помощи "Отключен". Другой вопрос, что штатная операция reset() может последовательно вызывать down 1/0 и накрывать предыдущее значение. Она вызывается как минимум при: смене тарифа, смене MAC, смене IP, собственно тыканьи на "Ресет", изменении оверрайда скорости а также при изменениях CF и тегов если включены соответствующие опции в alter.ini.

 

В таких случаях следует вырубать пользователя при помощи либо "ВсегдаОнлайн" либо при помощи "Замораживалки".

Posted

Замораживалка так же не работает :( после нажатия кнопки ресет пользователь становиться включенным .

Posted

Что значит "не работает"?

Если в логе старгейзера пользователю выставляется отвал - значит он отвалился. Если же этого фактически не произошло - значит это проблема того, что нарисовано в OnConnect/OnDisconnect.

Posted

Если оооооочень вкратце то :

 

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #этим Вы включаете общее разрешительное правило для NAT выпускать пользователей в инет

OnConnect

iptables -t mangle -I FORWARD -d $IP -j ACCEPT #разрешаем пропуск пакетов к пользователю
iptables -t mangle -I FORWARD -s $IP -j ACCEPT #разрешаем пропуск пакетов от пользователя

OnDisconnect

iptables -t mangle -D FORWARD -d $IP -j ACCEPT #убираем пропуск пакетов к пользователю
iptables -t mangle -D FORWARD -s $IP -j ACCEPT #убираем пропуск пакетов от пользователя

По идее этого должно хватить. Но в моем случае этого недостаточно, поэтому в OnDisconnect я добавляю еще пару запрещающих правил.

iptables -t mangle -I FORWARD -d $IP -j DROP #запрещаем пропуск пакетов к пользователю
iptables -t mangle -I FORWARD -s $IP -j DROP #запрещаем пропуск пакетов от пользователя

Инет у пользователя отрубается на OnDisconnect.

 

Это простейшее объяснение , а не призыв делать именно так. Почему ?

Потому что :

  1. В OnConnect по такой схеме нужно сначала удалить правила запрещающие пропуск пакетов, а только потом создать разрешающее.
     
  2. Использовать такую схему (линейную) - можно только до 100-300 абонентов. (на каждого абона получается от 1 до 5 правил - итого Ваш роутер просто загнется от нагрузки)
     
  3. При большем количестве нужно использовать ipset

 

я читал про большую нагрузку. но мне бы так как есть сначала запустить а потом будет видно но больше 80 пользователей у меня не предвидеться.

Posted

Что значит "не работает"?

Если в логе старгейзера пользователю выставляется отвал - значит он отвалился. Если же этого фактически не произошло - значит это проблема того, что нарисовано в OnConnect/OnDisconnect.

 

в логах изменении видно. и видно как в логах появляется OnDisconnect но потом сразу же появляется OnConnect и все работает

 

Думаю что с файером что-то накрутил ... завтра гляну ... в повседневной жизни я Packet Filter от OpenBSD использую :) и сервера у меня на FreeBSD. есть один хот спот он работает только под Debian и Ubuntu поэтому захотелось их скрестить но пока не получается корректно запустить STG+Ubilling ...

Posted

... после нажатия кнопки ресет пользователь становиться включенным .

Наверное, причина в этом.

Posted
Packet Filter от OpenBSD использую :) и сервера у меня на FreeBSD. есть

...И при этом Ubilling настоятельно рекомендует использовать BSD системы для своей работы. Для случаев если нужно организовать уровень доступа на каком-то внешнем NAS есть эпический rscriptd.

 

под Debian и Ubuntu

Как еще где-то пол сотни сетей использующих Ubilling на разношерстных линуксах забив на неродность системы. Вон тот же Спайдер, например.

 

 

Наверное, причина в этом.

Однозначно. Поэтому по-умолчанию пользователя стоит гасить не "отключенностью" а ВсегдаОнлайном или Морозильником, как рекомендовалось раньше. Ресеты зовутся для практически по каждому чиху, для надежности сохранения актуальности пользовательского состояния.

Posted

завтра покручу еще. посмотрим что из этого выйдет :) спасибо за ответы ! думаю что завтра еще вернусь :D

Posted

...

Наверное, причина в этом.

Однозначно. Поэтому по-умолчанию пользователя стоит гасить не "отключенностью" а ВсегдаОнлайном или Морозильником, как рекомендовалось раньше. Ресеты зовутся для практически по каждому чиху, для надежности сохранения актуальности пользовательского состояния.

Но вот видишь, у товарища не работает. Сломался твой морозильник, наверное :)

Posted

...

А как определили что после OnDisconnect вызвался OnConnect?

В лог-файле

Это понятно, вы об этом еще в первом посте написали. Кто пишет этот лог и что за информация в нем?

 

в скриптах OnConnect и OnDisconnect есть строчка которая включает логирование. вот там и подглядел. информацию не готов сейчас привести.

Posted

Приведите пожалуйста пример рабочих скриптов если вас не затруднит.

Posted

Приведите пожалуйста пример рабочих скриптов если вас не затруднит.

Я практически уверен что вопрос не в скриптах.

Posted

Приведите пожалуйста пример рабочих скриптов если вас не затруднит.

Я практически уверен что вопрос не в скриптах.

 

а в чем ? :)

Posted

...

Я практически уверен что вопрос не в скриптах.

 

а в чем ? :)

Где-то логика хромает... Или вы, например, отключаете не через AO или "заморозку" и потом делаете reset.

Posted
Сломался твой морозильник, наверное :)

Не, сами пользуемся, отморозков предостаточно :)

 

На будущее планирую убить двух зайцев - сделать управляемой опицю ресета и заодно рассматривать ее в AlwaysOnline ипостасии как хотфикс проблемы до 2.409.

Posted

Да приведите Вы примеры стартовых скриптов и скриптов OnConnect/OnDisconnect (На крайняк можно в личку).

Примеров скриптов на форуме достаточно.

В невероятных количествах. На вкус и цвет.

Кстати есть телепатическая теория : Стоит рега с АО, у всех юзеров АО, и ессно при ресете юзер будет все-равно в сети )

Posted
Кстати есть телепатическая теория : Стоит рега с АО, у всех юзеров АО, и ессно при ресете юзер будет все-равно в сети )

Ну при ресете он должен сохранять свое предыдущее состояние. Именно по этому по дефолту ресет использует "Down".

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...