sector 0 Posted 2012-11-21 02:57:17 Share Posted 2012-11-21 02:57:17 Доброго времени суток, уважаемые форумчане ! Возник вопрос, а как же происходит дисконнект пользователя путем скрипта 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
madf 279 Posted 2012-11-21 06:16:02 Share Posted 2012-11-21 06:16:02 Посмотреть еще /var/log/stargazer.log и лог юзера. Но последний в базе, по этому его смотреть не очень удобно. Link to post Share on other sites
sector 0 Posted 2012-11-21 07:19:32 Author Share Posted 2012-11-21 07:19:32 как бы ничего криминального не увидел В профиле - 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
madf 279 Posted 2012-11-21 08:27:56 Share Posted 2012-11-21 08:27:56 А как определили что после OnDisconnect вызвался OnConnect? Link to post Share on other sites
DarkSpider 36 Posted 2012-11-21 08:44:00 Share Posted 2012-11-21 08:44:00 На самом деле в первую очередь нужно понять что такое firewall (а точнее iptables). Как формируются его правила. Что они делают при старте и в файлах OnConnect/OnDisconnect. Тогда прийдет прозрение как включается и отключается пользователь. Link to post Share on other sites
sector 0 Posted 2012-11-21 10:53:25 Author Share Posted 2012-11-21 10:53:25 На самом деле в первую очередь нужно понять что такое firewall (а точнее iptables). Как формируются его правила. Что они делают при старте и в файлах OnConnect/OnDisconnect. Тогда прийдет прозрение как включается и отключается пользователь. Вы намекаете что не нужно мне было прописывать маскарад ? тогда получается что при стандартных файлов интернет у пользователей не работает ? или как ? А как определили что после OnDisconnect вызвался OnConnect? В лог-файле Link to post Share on other sites
madf 279 Posted 2012-11-21 12:51:28 Share Posted 2012-11-21 12:51:28 ... А как определили что после OnDisconnect вызвался OnConnect? В лог-файле Это понятно, вы об этом еще в первом посте написали. Кто пишет этот лог и что за информация в нем? Link to post Share on other sites
DarkSpider 36 Posted 2012-11-21 12:53:15 Share Posted 2012-11-21 12:53:15 Если оооооочень вкратце то : 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. Это простейшее объяснение , а не призыв делать именно так. Почему ? Потому что : В OnConnect по такой схеме нужно сначала удалить правила запрещающие пропуск пакетов, а только потом создать разрешающее. Использовать такую схему (линейную) - можно только до 100-300 абонентов. (на каждого абона получается от 1 до 5 правил - итого Ваш роутер просто загнется от нагрузки) При большем количестве нужно использовать ipset Link to post Share on other sites
nightfly 1,246 Posted 2012-11-21 13:09:36 Share Posted 2012-11-21 13:09:36 как бы ничего криминального не увидел Ну вобще-то так и выглядит вырубание при помощи "Отключен". Другой вопрос, что штатная операция reset() может последовательно вызывать down 1/0 и накрывать предыдущее значение. Она вызывается как минимум при: смене тарифа, смене MAC, смене IP, собственно тыканьи на "Ресет", изменении оверрайда скорости а также при изменениях CF и тегов если включены соответствующие опции в alter.ini. В таких случаях следует вырубать пользователя при помощи либо "ВсегдаОнлайн" либо при помощи "Замораживалки". Link to post Share on other sites
sector 0 Posted 2012-11-21 14:33:04 Author Share Posted 2012-11-21 14:33:04 Замораживалка так же не работает после нажатия кнопки ресет пользователь становиться включенным . Link to post Share on other sites
nightfly 1,246 Posted 2012-11-21 14:34:30 Share Posted 2012-11-21 14:34:30 Что значит "не работает"? Если в логе старгейзера пользователю выставляется отвал - значит он отвалился. Если же этого фактически не произошло - значит это проблема того, что нарисовано в OnConnect/OnDisconnect. Link to post Share on other sites
sector 0 Posted 2012-11-21 14:38:21 Author Share Posted 2012-11-21 14:38:21 Если оооооочень вкратце то : 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. Это простейшее объяснение , а не призыв делать именно так. Почему ? Потому что : В OnConnect по такой схеме нужно сначала удалить правила запрещающие пропуск пакетов, а только потом создать разрешающее. Использовать такую схему (линейную) - можно только до 100-300 абонентов. (на каждого абона получается от 1 до 5 правил - итого Ваш роутер просто загнется от нагрузки) При большем количестве нужно использовать ipset я читал про большую нагрузку. но мне бы так как есть сначала запустить а потом будет видно но больше 80 пользователей у меня не предвидеться. Link to post Share on other sites
sector 0 Posted 2012-11-21 14:40:00 Author Share Posted 2012-11-21 14:40:00 Что значит "не работает"? Если в логе старгейзера пользователю выставляется отвал - значит он отвалился. Если же этого фактически не произошло - значит это проблема того, что нарисовано в OnConnect/OnDisconnect. в логах изменении видно. и видно как в логах появляется OnDisconnect но потом сразу же появляется OnConnect и все работает Думаю что с файером что-то накрутил ... завтра гляну ... в повседневной жизни я Packet Filter от OpenBSD использую и сервера у меня на FreeBSD. есть один хот спот он работает только под Debian и Ubuntu поэтому захотелось их скрестить но пока не получается корректно запустить STG+Ubilling ... Link to post Share on other sites
madf 279 Posted 2012-11-21 14:50:10 Share Posted 2012-11-21 14:50:10 ... после нажатия кнопки ресет пользователь становиться включенным . Наверное, причина в этом. Link to post Share on other sites
nightfly 1,246 Posted 2012-11-21 14:52:24 Share Posted 2012-11-21 14:52:24 Packet Filter от OpenBSD использую и сервера у меня на FreeBSD. есть ...И при этом Ubilling настоятельно рекомендует использовать BSD системы для своей работы. Для случаев если нужно организовать уровень доступа на каком-то внешнем NAS есть эпический rscriptd. под Debian и Ubuntu Как еще где-то пол сотни сетей использующих Ubilling на разношерстных линуксах забив на неродность системы. Вон тот же Спайдер, например. Наверное, причина в этом. Однозначно. Поэтому по-умолчанию пользователя стоит гасить не "отключенностью" а ВсегдаОнлайном или Морозильником, как рекомендовалось раньше. Ресеты зовутся для практически по каждому чиху, для надежности сохранения актуальности пользовательского состояния. Link to post Share on other sites
sector 0 Posted 2012-11-21 14:59:59 Author Share Posted 2012-11-21 14:59:59 завтра покручу еще. посмотрим что из этого выйдет спасибо за ответы ! думаю что завтра еще вернусь Link to post Share on other sites
madf 279 Posted 2012-11-21 15:01:20 Share Posted 2012-11-21 15:01:20 ... Наверное, причина в этом. Однозначно. Поэтому по-умолчанию пользователя стоит гасить не "отключенностью" а ВсегдаОнлайном или Морозильником, как рекомендовалось раньше. Ресеты зовутся для практически по каждому чиху, для надежности сохранения актуальности пользовательского состояния. Но вот видишь, у товарища не работает. Сломался твой морозильник, наверное Link to post Share on other sites
sector 0 Posted 2012-11-21 15:02:53 Author Share Posted 2012-11-21 15:02:53 ... А как определили что после OnDisconnect вызвался OnConnect? В лог-файле Это понятно, вы об этом еще в первом посте написали. Кто пишет этот лог и что за информация в нем? в скриптах OnConnect и OnDisconnect есть строчка которая включает логирование. вот там и подглядел. информацию не готов сейчас привести. Link to post Share on other sites
sector 0 Posted 2012-11-21 15:09:33 Author Share Posted 2012-11-21 15:09:33 Приведите пожалуйста пример рабочих скриптов если вас не затруднит. Link to post Share on other sites
madf 279 Posted 2012-11-21 15:21:14 Share Posted 2012-11-21 15:21:14 Приведите пожалуйста пример рабочих скриптов если вас не затруднит. Я практически уверен что вопрос не в скриптах. Link to post Share on other sites
sector 0 Posted 2012-11-21 15:25:36 Author Share Posted 2012-11-21 15:25:36 Приведите пожалуйста пример рабочих скриптов если вас не затруднит. Я практически уверен что вопрос не в скриптах. а в чем ? Link to post Share on other sites
madf 279 Posted 2012-11-21 15:40:21 Share Posted 2012-11-21 15:40:21 ... Я практически уверен что вопрос не в скриптах. а в чем ? Где-то логика хромает... Или вы, например, отключаете не через AO или "заморозку" и потом делаете reset. Link to post Share on other sites
nightfly 1,246 Posted 2012-11-21 15:43:30 Share Posted 2012-11-21 15:43:30 Сломался твой морозильник, наверное Не, сами пользуемся, отморозков предостаточно На будущее планирую убить двух зайцев - сделать управляемой опицю ресета и заодно рассматривать ее в AlwaysOnline ипостасии как хотфикс проблемы до 2.409. Link to post Share on other sites
DarkSpider 36 Posted 2012-11-21 18:02:58 Share Posted 2012-11-21 18:02:58 Да приведите Вы примеры стартовых скриптов и скриптов OnConnect/OnDisconnect (На крайняк можно в личку). Примеров скриптов на форуме достаточно. В невероятных количествах. На вкус и цвет. Кстати есть телепатическая теория : Стоит рега с АО, у всех юзеров АО, и ессно при ресете юзер будет все-равно в сети ) Link to post Share on other sites
nightfly 1,246 Posted 2012-11-21 18:10:45 Share Posted 2012-11-21 18:10:45 Кстати есть телепатическая теория : Стоит рега с АО, у всех юзеров АО, и ессно при ресете юзер будет все-равно в сети ) Ну при ресете он должен сохранять свое предыдущее состояние. Именно по этому по дефолту ресет использует "Down". Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now