madf 279 Posted 2013-01-21 13:56:16 Share Posted 2013-01-21 13:56:16 Ну про вланы и переброс IP я ничего не говорил у меня это вообще неиспользуеться. Вопрос былв следующем: Юзер выключил комп давным давно а в админилке горит что он в онлайне, помогает тока рестарт старгайзера. Stg-2.707-p1, FreeBSD 7.4 база на postgresql пользователей в базе 2106, онлайн всреднем 170. Памагите люди добрые куда копать. Я про вланы и интерфейсы писал чтобы показать кривость решения. Ваш вопрос я помню. Как на счет обновления до 2.408? ... не может ли эта проблема быть из за одновременного дисконекта 2-х пользователей ? Крайней вероятно. С какого перепугу? Link to post Share on other sites
SpiderX 7 Posted 2013-01-21 14:50:46 Share Posted 2013-01-21 14:50:46 С какого перепугу? Потому, что проблема 100% повторяема из месяца в месяц 28 числа, после ротации IP адресов в сам знаешь какой сети Link to post Share on other sites
madf 279 Posted 2013-01-21 15:27:38 Share Posted 2013-01-21 15:27:38 С какого перепугу? Потому, что проблема 100% повторяема из месяца в месяц 28 числа, после ротации IP адресов в сам знаешь какой сети А какое отношение к этому имеют одновременные дисконнекты? Если бы проблема была в этом - она проявлялась бы чаще, особенно на участках сети с потерями и "семафорами" у абонов. А в сам знаешь какой сети проблема проявляется только при смене IP, при которой дисконнект... Ммм... Достаточно побочное явление. Да и вообще, имеет место только для InetAccess. А с AO проблема сходного характера. Так что скорее всего проблема где-то глубже. Link to post Share on other sites
Роман Погосян 0 Posted 2013-01-21 15:57:06 Share Posted 2013-01-21 15:57:06 да при смене IP с подключенным ИА тоже часто наблюдается этот глюк , кстате наблюдался он так же когда rlm_stg пускал онлайнового юзера подключатся по VPN Link to post Share on other sites
Роман Погосян 0 Posted 2013-01-21 16:00:06 Share Posted 2013-01-21 16:00:06 еще волнует то, что иногда ОнДисконнект не отрабатывает Link to post Share on other sites
madf 279 Posted 2013-01-21 16:15:04 Share Posted 2013-01-21 16:15:04 еще волнует то, что иногда ОнДисконнект не отрабатывает Не-ве-рю! Link to post Share on other sites
madf 279 Posted 2013-01-21 16:16:58 Share Posted 2013-01-21 16:16:58 ... кстате наблюдался он так же когда rlm_stg пускал онлайнового юзера подключатся по VPN Можно более подробно? Link to post Share on other sites
Роман Погосян 0 Posted 2013-01-22 08:20:44 Share Posted 2013-01-22 08:20:44 в принципе стандартный рлм_стг пускает авторизироватся пользователя даже если тот уже онлайн через ИА. пришлось решать эту проблему Link to post Share on other sites
Роман Погосян 0 Posted 2013-01-22 08:25:47 Share Posted 2013-01-22 08:25:47 еще волнует то, что иногда ОнДисконнект не отрабатывает Не-ве-рю! тогда как обьяснить следующее клиент подключился , его IP был добавлен в таблицу файрвола клиент отключился , но из таблицы не удалился. в старгайзере он офлайн, не залип ничего подобного , может снова подключится и отключится и после этого интернет отрубится , т.е. удалится из таблицы. Случается крайне редко, но случается Link to post Share on other sites
Роман Погосян 0 Posted 2013-01-22 08:31:01 Share Posted 2013-01-22 08:31:01 в случае конекта через радиус в функции int RADIUS::ProcessAutzPacket(RAD_PACKET * packet) нет проверки на онлайность и он авторизирует пользователя и выдает ему тот айпишник что указан в базе само собой серверу это выност мозг подлечил так: // Fix authorization process if user online if(ui->GetConnected()!=0) { packet->packetType = RAD_REJECT_PACKET; return 0; } Link to post Share on other sites
madf 279 Posted 2013-01-22 09:10:08 Share Posted 2013-01-22 09:10:08 в принципе стандартный рлм_стг пускает авторизироватся пользователя даже если тот уже онлайн через ИА. пришлось решать эту проблему Не вижу здесь проблемы. СИстема как раз так построена что можно авторизоваться одновременно из разных мест. еще волнует то, что иногда ОнДисконнект не отрабатывает Не-ве-рю! тогда как обьяснить следующее клиент подключился , его IP был добавлен в таблицу файрвола клиент отключился , но из таблицы не удалился. в старгайзере он офлайн, не залип ничего подобного , может снова подключится и отключится и после этого интернет отрубится , т.е. удалится из таблицы. Случается крайне редко, но случается Проблема в скриптах. Link to post Share on other sites
madf 279 Posted 2013-01-22 09:11:28 Share Posted 2013-01-22 09:11:28 в случае конекта через радиус в функции int RADIUS::ProcessAutzPacket(RAD_PACKET * packet) нет проверки на онлайность и он авторизирует пользователя и выдает ему тот айпишник что указан в базе само собой серверу это выност мозг подлечил так: // Fix authorization process if user online if(ui->GetConnected()!=0) { packet->packetType = RAD_REJECT_PACKET; return 0; } Не понял про айпишник и почему это кому-то выносит мозг. GetConnected, к стати, это не проверка на авторизацию. Link to post Share on other sites
Роман Погосян 0 Posted 2013-01-22 09:19:33 Share Posted 2013-01-22 09:19:33 в принципе стандартный рлм_стг пускает авторизироватся пользователя даже если тот уже онлайн через ИА. пришлось решать эту проблему Не вижу здесь проблемы. СИстема как раз так построена что можно авторизоваться одновременно из разных мест. еще волнует то, что иногда ОнДисконнект не отрабатывает Не-ве-рю! тогда как обьяснить следующее клиент подключился , его IP был добавлен в таблицу файрвола клиент отключился , но из таблицы не удалился. в старгайзере он офлайн, не залип ничего подобного , может снова подключится и отключится и после этого интернет отрубится , т.е. удалится из таблицы. Случается крайне редко, но случается Проблема в скриптах. В скрипте только ipfw table X add $IP и ifw table X del $ip. Там не может быть проблема Link to post Share on other sites
Роман Погосян 0 Posted 2013-01-22 09:25:39 Share Posted 2013-01-22 09:25:39 в случае конекта через радиус в функции int RADIUS::ProcessAutzPacket(RAD_PACKET * packet) нет проверки на онлайность и он авторизирует пользователя и выдает ему тот айпишник что указан в базе само собой серверу это выност мозг подлечил так: // Fix authorization process if user online if(ui->GetConnected()!=0) { packet->packetType = RAD_REJECT_PACKET; return 0; } Не понял про айпишник и почему это кому-то выносит мозг. GetConnected, к стати, это не проверка на авторизацию. Когда юзер онлайн GetConnected возвращает 1 иначе 0. Так что с задачей он справляется. про IP : Есть юзер с прописным айпи 10.х.х.х он зашел через ИА и авторизовался стал онлайном. С другого компа злоумышленник подключился этим же логин и паролем через VPN (или тот же пользователь в роли злоумышленника). После этого он остается в онлайне, даже если отключит все виды авторизации у него будет интернет и после окончания баланса у него будет интернет. Link to post Share on other sites
madf 279 Posted 2013-01-22 09:38:14 Share Posted 2013-01-22 09:38:14 ... Проблема в скриптах. В скрипте только ipfw table X add $IP и ifw table X del $ip. Там не может быть проблема Да ладно! А код возврата ipfw проверяется? Link to post Share on other sites
madf 279 Posted 2013-01-22 09:40:46 Share Posted 2013-01-22 09:40:46 в случае конекта через радиус в функции int RADIUS::ProcessAutzPacket(RAD_PACKET * packet) нет проверки на онлайность и он авторизирует пользователя и выдает ему тот айпишник что указан в базе само собой серверу это выност мозг подлечил так: // Fix authorization process if user online if(ui->GetConnected()!=0) { packet->packetType = RAD_REJECT_PACKET; return 0; } Не понял про айпишник и почему это кому-то выносит мозг. GetConnected, к стати, это не проверка на авторизацию. Когда юзер онлайн GetConnected возвращает 1 иначе 0. Так что с задачей он справляется. Юзер может быть авторизованным но не онлайн. GetConnected вернет 0. Хотя юзер авторизован. про IP : Есть юзер с прописным айпи 10.х.х.х он зашел через ИА и авторизовался стал онлайном. С другого компа злоумышленник подключился этим же логин и паролем через VPN (или тот же пользователь в роли злоумышленника). После этого он остается в онлайне, даже если отключит все виды авторизации у него будет интернет и после окончания баланса у него будет интернет. Почему так? Link to post Share on other sites
Роман Погосян 0 Posted 2013-01-22 09:44:53 Share Posted 2013-01-22 09:44:53 ага .. два раза одно IP ipfw в одну таблицу не ввернет. так что "почему так?" Link to post Share on other sites
Роман Погосян 0 Posted 2013-01-22 09:46:00 Share Posted 2013-01-22 09:46:00 "Юзер может быть авторизованным но не онлайн. GetConnected вернет 0. Хотя юзер авторизован." в данном случае ничему это не грозит Link to post Share on other sites
madf 279 Posted 2013-01-22 10:11:33 Share Posted 2013-01-22 10:11:33 ага .. два раза одно IP ipfw в одну таблицу не ввернет. так что "почему так?" Все равно непонятно. Как у вас файрвол работает? "Юзер может быть авторизованным но не онлайн. GetConnected вернет 0. Хотя юзер авторизован." в данном случае ничему это не грозит Ну тогда надо говорить не об авторизации а о состоянии: подключен или нет. Это разные вещи. Link to post Share on other sites
Роман Погосян 0 Posted 2013-01-22 12:28:58 Share Posted 2013-01-22 12:28:58 Все равно непонятно. Как у вас файрвол работает? ipfw allow all from any to table X ipfw add allow table X to any ipfw add deny all from any to any при старте системы stg остается только добавлять и удалять ip в таблице Ну тогда надо говорить не об авторизации а о состоянии: подключен или нет. Это разные вещи. Сори. учту. Link to post Share on other sites
madf 279 Posted 2013-01-22 13:40:17 Share Posted 2013-01-22 13:40:17 У юзеров в базе IP прописаны? Или у всех "*"? Т.е. я не вижу ничего плохого: авторизнулся юзер через авторизатор, сработал OnConnect, адрес попал в файрвол. Авторизнулся он-же через VPN - т.к. уже авторизован то OnConnect второй раз работать не будет. Отключится авторизатор - будет продолжать работать через VPN. Отключится VPN - будет продолжать работать через авторизатор. Но как только закончатся деньги, не важно уже как был авторизован и сколько раз, - сработает OnDisconnect и юзер работать перестанет. В чем проблема? Единственную проблему вижу если адреса назначаются автоматом - тогда возможен конфликт IP. Но это уже не проблема биллинга. Link to post Share on other sites
Роман Погосян 0 Posted 2013-01-22 14:27:31 Share Posted 2013-01-22 14:27:31 я не говорил что это проблема билинга. Чел у которого на лан карте стоит 10.х.х.х получает тот же адрес. Систему глючит с непредсказуемым результатом. один из результатов залипание. из за IP конфликта тоже такое происходит. Происходит какое то не корректное завершение обработки выключения пользователя при получении какого-то кривого пакета от ИА клиента, он становится так сказать полузакрытым , Плугин считает что его нет в онлайне а ядро думает совсем иначе. как то так Link to post Share on other sites
Роман Погосян 0 Posted 2013-01-22 14:28:37 Share Posted 2013-01-22 14:28:37 У юзеров в базе IP прописаны? Или у всех "*"? это не важно, важно спертва подключтся ИА клинтом , потом ВПН Link to post Share on other sites
madf 279 Posted 2013-01-22 14:43:16 Share Posted 2013-01-22 14:43:16 ... Происходит какое то не корректное завершение обработки выключения пользователя при получении какого-то кривого пакета от ИА клиента, он становится так сказать полузакрытым , Плугин считает что его нет в онлайне а ядро думает совсем иначе. Нет. Это работает не так. Отключение авторизатора, в отличии от процесса авторизации очень простое: 1. Клиент шлет DISCONN_SYN. 2. Сервер переходит в фазу 4 и шлет DISCONN_SYN_ACK. 3. Клиент отвечает DISCONN_ACK. 4. Сервер снимает авторизацию и шлет FIN. Если п.3 не происходит - сервер возвращается в фазу 3, т.е. "авторизован". Аналогично работает и клиент. Link to post Share on other sites
Polo 0 Posted 2013-01-22 16:07:26 Author Share Posted 2013-01-22 16:07:26 ... Происходит какое то не корректное завершение обработки выключения пользователя при получении какого-то кривого пакета от ИА клиента, он становится так сказать полузакрытым , Плугин считает что его нет в онлайне а ядро думает совсем иначе. Нет. Это работает не так. Отключение авторизатора, в отличии от процесса авторизации очень простое: 1. Клиент шлет DISCONN_SYN. 2. Сервер переходит в фазу 4 и шлет DISCONN_SYN_ACK. 3. Клиент отвечает DISCONN_ACK. 4. Сервер снимает авторизацию и шлет FIN. Если п.3 не происходит - сервер возвращается в фазу 3, т.е. "авторизован". Аналогично работает и клиент. Это все гуд, но что конкретно мона сделать? может таймауты увеличить между этими событиями? или еще че? 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