Jump to content

UBilling + debian 6


Recommended Posts

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

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

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

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

eth0-глобал

eth1- внутрь

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

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

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

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

Link to post
Share on other sites
  • Replies 76
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Понимаете, тяжело разобраться в чем проблема когда с одной стороны у вас может быть не рабочий файрвол, а с другой - возможно, где-то ошибки в логике Stargazer или UBilling. Вот например, вы утвержда

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

Link to post
Share on other sites

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

 

В профиле - 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'.

Link to post
Share on other sites

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

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

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

 

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

Link to post
Share on other sites

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

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

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

 

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

 

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

 

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

В лог-файле

Link to post
Share on other sites

...

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

В лог-файле

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

Link to post
Share on other sites

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

 

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

Link to post
Share on other sites
как бы ничего криминального не увидел

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

 

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

 

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 пользователей у меня не предвидеться.

Link to post
Share on other sites

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

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

 

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

 

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites
Packet Filter от OpenBSD использую :) и сервера у меня на FreeBSD. есть

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

 

под Debian и Ubuntu

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

 

 

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites

...

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

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

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

Link to post
Share on other sites

...

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

В лог-файле

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

 

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

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

 

а в чем ? :)

Link to post
Share on other sites

...

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

 

а в чем ? :)

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

Link to post
Share on other sites
Сломался твой морозильник, наверное :)

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

 

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

Link to post
Share on other sites

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

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

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

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

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

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

Link to post
Share on other sites

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
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...