sector Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 Доброго времени суток, уважаемые форумчане ! Возник вопрос, а как же происходит дисконнект пользователя путем скрипта OnDisconnect Установил систему все прописал, смотрю логи как работают скрипты OnConnect и OnDisconnect когда все установил и запустил инета у пользователей так и не появилось, прописал в iptables iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE eth0-глобал eth1- внутрь Пакеты заходили при смене MAC-адреса через Ubilling пользователь соответственно отрубается. Далее попробовал отключить пользователя в профиле смотрю в лог и отключаю, проскочил скрипт OnDisconnect а потом опять тут же OnConnect и соответственно у пользователя Интернет остался. Подскажите пожалуйста в какую сторону смотреть ?
madf Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 Посмотреть еще /var/log/stargazer.log и лог юзера. Но последний в базе, по этому его смотреть не очень удобно.
sector Опубликовано: 21 ноября, 2012 Автор Опубликовано: 21 ноября, 2012 как бы ничего криминального не увидел В профиле - 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'.
madf Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 А как определили что после OnDisconnect вызвался OnConnect?
DarkSpider Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 На самом деле в первую очередь нужно понять что такое firewall (а точнее iptables). Как формируются его правила. Что они делают при старте и в файлах OnConnect/OnDisconnect. Тогда прийдет прозрение как включается и отключается пользователь.
sector Опубликовано: 21 ноября, 2012 Автор Опубликовано: 21 ноября, 2012 На самом деле в первую очередь нужно понять что такое firewall (а точнее iptables). Как формируются его правила. Что они делают при старте и в файлах OnConnect/OnDisconnect. Тогда прийдет прозрение как включается и отключается пользователь. Вы намекаете что не нужно мне было прописывать маскарад ? тогда получается что при стандартных файлов интернет у пользователей не работает ? или как ? А как определили что после OnDisconnect вызвался OnConnect? В лог-файле
madf Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 ... А как определили что после OnDisconnect вызвался OnConnect? В лог-файле Это понятно, вы об этом еще в первом посте написали. Кто пишет этот лог и что за информация в нем?
DarkSpider Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 Если оооооочень вкратце то : 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
nightfly Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 как бы ничего криминального не увидел Ну вобще-то так и выглядит вырубание при помощи "Отключен". Другой вопрос, что штатная операция reset() может последовательно вызывать down 1/0 и накрывать предыдущее значение. Она вызывается как минимум при: смене тарифа, смене MAC, смене IP, собственно тыканьи на "Ресет", изменении оверрайда скорости а также при изменениях CF и тегов если включены соответствующие опции в alter.ini. В таких случаях следует вырубать пользователя при помощи либо "ВсегдаОнлайн" либо при помощи "Замораживалки".
sector Опубликовано: 21 ноября, 2012 Автор Опубликовано: 21 ноября, 2012 Замораживалка так же не работает после нажатия кнопки ресет пользователь становиться включенным .
nightfly Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 Что значит "не работает"? Если в логе старгейзера пользователю выставляется отвал - значит он отвалился. Если же этого фактически не произошло - значит это проблема того, что нарисовано в OnConnect/OnDisconnect.
sector Опубликовано: 21 ноября, 2012 Автор Опубликовано: 21 ноября, 2012 Если оооооочень вкратце то : 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 пользователей у меня не предвидеться.
sector Опубликовано: 21 ноября, 2012 Автор Опубликовано: 21 ноября, 2012 Что значит "не работает"? Если в логе старгейзера пользователю выставляется отвал - значит он отвалился. Если же этого фактически не произошло - значит это проблема того, что нарисовано в OnConnect/OnDisconnect. в логах изменении видно. и видно как в логах появляется OnDisconnect но потом сразу же появляется OnConnect и все работает Думаю что с файером что-то накрутил ... завтра гляну ... в повседневной жизни я Packet Filter от OpenBSD использую и сервера у меня на FreeBSD. есть один хот спот он работает только под Debian и Ubuntu поэтому захотелось их скрестить но пока не получается корректно запустить STG+Ubilling ...
madf Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 ... после нажатия кнопки ресет пользователь становиться включенным . Наверное, причина в этом.
nightfly Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 Packet Filter от OpenBSD использую и сервера у меня на FreeBSD. есть ...И при этом Ubilling настоятельно рекомендует использовать BSD системы для своей работы. Для случаев если нужно организовать уровень доступа на каком-то внешнем NAS есть эпический rscriptd. под Debian и Ubuntu Как еще где-то пол сотни сетей использующих Ubilling на разношерстных линуксах забив на неродность системы. Вон тот же Спайдер, например. Наверное, причина в этом. Однозначно. Поэтому по-умолчанию пользователя стоит гасить не "отключенностью" а ВсегдаОнлайном или Морозильником, как рекомендовалось раньше. Ресеты зовутся для практически по каждому чиху, для надежности сохранения актуальности пользовательского состояния.
sector Опубликовано: 21 ноября, 2012 Автор Опубликовано: 21 ноября, 2012 завтра покручу еще. посмотрим что из этого выйдет спасибо за ответы ! думаю что завтра еще вернусь
madf Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 ... Наверное, причина в этом. Однозначно. Поэтому по-умолчанию пользователя стоит гасить не "отключенностью" а ВсегдаОнлайном или Морозильником, как рекомендовалось раньше. Ресеты зовутся для практически по каждому чиху, для надежности сохранения актуальности пользовательского состояния. Но вот видишь, у товарища не работает. Сломался твой морозильник, наверное
sector Опубликовано: 21 ноября, 2012 Автор Опубликовано: 21 ноября, 2012 ... А как определили что после OnDisconnect вызвался OnConnect? В лог-файле Это понятно, вы об этом еще в первом посте написали. Кто пишет этот лог и что за информация в нем? в скриптах OnConnect и OnDisconnect есть строчка которая включает логирование. вот там и подглядел. информацию не готов сейчас привести.
sector Опубликовано: 21 ноября, 2012 Автор Опубликовано: 21 ноября, 2012 Приведите пожалуйста пример рабочих скриптов если вас не затруднит.
madf Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 Приведите пожалуйста пример рабочих скриптов если вас не затруднит. Я практически уверен что вопрос не в скриптах.
sector Опубликовано: 21 ноября, 2012 Автор Опубликовано: 21 ноября, 2012 Приведите пожалуйста пример рабочих скриптов если вас не затруднит. Я практически уверен что вопрос не в скриптах. а в чем ?
madf Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 ... Я практически уверен что вопрос не в скриптах. а в чем ? Где-то логика хромает... Или вы, например, отключаете не через AO или "заморозку" и потом делаете reset.
nightfly Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 Сломался твой морозильник, наверное Не, сами пользуемся, отморозков предостаточно На будущее планирую убить двух зайцев - сделать управляемой опицю ресета и заодно рассматривать ее в AlwaysOnline ипостасии как хотфикс проблемы до 2.409.
DarkSpider Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 Да приведите Вы примеры стартовых скриптов и скриптов OnConnect/OnDisconnect (На крайняк можно в личку). Примеров скриптов на форуме достаточно. В невероятных количествах. На вкус и цвет. Кстати есть телепатическая теория : Стоит рега с АО, у всех юзеров АО, и ессно при ресете юзер будет все-равно в сети )
nightfly Опубликовано: 21 ноября, 2012 Опубликовано: 21 ноября, 2012 Кстати есть телепатическая теория : Стоит рега с АО, у всех юзеров АО, и ессно при ресете юзер будет все-равно в сети ) Ну при ресете он должен сохранять свое предыдущее состояние. Именно по этому по дефолту ресет использует "Down".
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас