Перейти до

UBilling + debian 6


Рекомендованные сообщения

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

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

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

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

eth0-глобал

eth1- внутрь

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

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
  • Відповіді 76
  • Створено
  • Остання відповідь

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

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

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

 

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

Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

 

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

 

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

В лог-файле

Ссылка на сообщение
Поделиться на других сайтах

...

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

В лог-файле

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

Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Ссылка на сообщение
Поделиться на других сайтах
как бы ничего криминального не увидел

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

 

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

Ссылка на сообщение
Поделиться на других сайтах

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

Ссылка на сообщение
Поделиться на других сайтах

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

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

Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

 

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

Ссылка на сообщение
Поделиться на других сайтах
Packet Filter от OpenBSD использую :) и сервера у меня на FreeBSD. есть

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

 

под Debian и Ubuntu

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

 

 

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

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

Ссылка на сообщение
Поделиться на других сайтах

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

Ссылка на сообщение
Поделиться на других сайтах

...

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

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

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

Ссылка на сообщение
Поделиться на других сайтах

...

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

В лог-файле

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

 

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

Ссылка на сообщение
Поделиться на других сайтах

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

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

Ссылка на сообщение
Поделиться на других сайтах

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

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

 

а в чем ? :)

Ссылка на сообщение
Поделиться на других сайтах

...

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

 

а в чем ? :)

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

Ссылка на сообщение
Поделиться на других сайтах
Сломался твой морозильник, наверное :)

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

 

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

Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.


×
×
  • Створити нове...