Система: CentOS + UTM5 + pppoe-server + MySQL
Описание проблемы:
- со стороны клиента: первоначально соединение работает нормально, при зависании компьютера или обрыве линии при попытке повторного соединения с интернет через PPPoE - выдает ошибку 691: "Доступ запрещен поскольку данное имя пользователя и пароль не допустимы в этом домене." Если для устранения проблемы со стороны провайдера перезапускают радиус: /etc/init.rd/utm_radius stop затем /etc/init.rd/utm_radius start, то авторизация начинает работать, но возникает вторая проблема: соединение происходит а трафик не идет. Принимаются только служебные 191 байт на PPPoE соединении и всё.
- со стороны провайдера: после перезапуска радиуса авторизация проходит, но старый интерфейс ppp, через который работал клиент "повисает". То есть интерфейс есть, но ничейный, не рабочий. При накоплении "критической массы" повисших ppp интерфейсов радиус начинает выдавать повторяющиеся IP адреса на ppp соединения и такие соединения создаются, но трафик через них не идет, за исключением служебных 191 байт.
Решение: нашел в книге Д.Н.Колисниченко "Линукс сервер своими руками" скачать можно на торрентах: http://torrents.ru/forum/viewtopic.php?t=231009 на странице 381: в файле /etc/ppp/pppoe-server-options добавил две строки:
lcp-echo-interval 20
lcp-echo-failure 6
Эти параметры позволяют автоматически вырубать повисшие соединения ppp если они не подают признаков жизни в 6 опросах, которые проводятся каждые 20 секунд. При обрыве повисших сессий авторизация начинает работать автоматически.
Замечания: в конфигурации радиуса /netup/utm5/radius5.cfg есть параметр interim_update_interval, который должен делать тоже самое. Но у меня это не работает ни в отдельности, ни в связке с настройками ppp указанными выше.
Решена проблема повторной выдачи IP адресов.
Re: Решена проблема повторной выдачи IP адресов.
Это совсем не то же самое. Радиус получает с Interim-Update промежуточный трафик/время сессии.Аким писал(а):Замечания: в конфигурации радиуса /netup/utm5/radius5.cfg есть параметр interim_update_interval, который должен делать тоже самое. Но у меня это не работает ни в отдельности, ни в связке с настройками ppp указанными выше.
Re: Решена проблема повторной выдачи IP адресов.
Что используешь в качестве pppoe-serverа??? rp-pppoe???Аким писал(а):Система: CentOS + UTM5 + pppoe-server + MySQL
Описание проблемы:
- со стороны клиента: первоначально соединение работает нормально, при зависании компьютера или обрыве линии при попытке повторного соединения с интернет через PPPoE - выдает ошибку 691: "Доступ запрещен поскольку данное имя пользователя и пароль не допустимы в этом домене." Если для устранения проблемы со стороны провайдера перезапускают радиус: /etc/init.rd/utm_radius stop затем /etc/init.rd/utm_radius start, то авторизация начинает работать, но возникает вторая проблема: соединение происходит а трафик не идет. Принимаются только служебные 191 байт на PPPoE соединении и всё.
- со стороны провайдера: после перезапуска радиуса авторизация проходит, но старый интерфейс ppp, через который работал клиент "повисает". То есть интерфейс есть, но ничейный, не рабочий. При накоплении "критической массы" повисших ppp интерфейсов радиус начинает выдавать повторяющиеся IP адреса на ppp соединения и такие соединения создаются, но трафик через них не идет, за исключением служебных 191 байт.
Решение: нашел в книге Д.Н.Колисниченко "Линукс сервер своими руками" скачать можно на торрентах: http://torrents.ru/forum/viewtopic.php?t=231009 на странице 381: в файле /etc/ppp/pppoe-server-options добавил две строки:
lcp-echo-interval 20
lcp-echo-failure 6
Эти параметры позволяют автоматически вырубать повисшие соединения ppp если они не подают признаков жизни в 6 опросах, которые проводятся каждые 20 секунд. При обрыве повисших сессий авторизация начинает работать автоматически.
Замечания: в конфигурации радиуса /netup/utm5/radius5.cfg есть параметр interim_update_interval, который должен делать тоже самое. Но у меня это не работает ни в отдельности, ни в связке с настройками ppp указанными выше.
dk, да это совсем не тоже самое, но в моем представлении, в отношении описанной выше проблемы, абстрагируясь от остальных свойств этого параметра, он должен решать описанную проблему. Что касается более глубокого понимания этого параметра, то я ещё общаюсь на эту тему в хотлайн.
detx, я не разбираюсь пока что в таких тонкостях названий, но похоже, что да. В тех. поддержке NetUP мне сообщили, что нам поставили rpppoe.
detx, я не разбираюсь пока что в таких тонкостях названий, но похоже, что да. В тех. поддержке NetUP мне сообщили, что нам поставили rpppoe.
Как я корректно установил параметр interim_update_interval в параметрах радиуса:
1. Заходим на сервер (система CentOS в моем случае), в файл: /etc/radiusclient/dictionary добавляем строчку (если там её нет):
ATTRIBUTE Acct-Interim-Interval 85 integer
2. Заходим в интерфейс администратора -> настройки -> список NAS -> редактировать нужный NAS (сервер доступа, в моем случае это rp-pppoe) -> установка радиус параметров -> Добавить -> Vendor 0, Attr 85, Значение 120 (120 секунд, период обновления и выдачи interim_update пакетов), выбрать Номер -> Ok -> Ok -> Ok
3. Редактируем /netup/utm5/radius5.cfg и добавляем строку interim_update_interval=120
4. Выключаем UTM, в моем случае:
/etc/init.d/utm5_radius stop
/etc/init.d/utm5_rfw stop
/etc/init.d/utm5_core stop
5. Перезагружаем rp-pppoe
/etc/init.d/pppoe-server restart
6. Включаем UTM, в моем случае:
/etc/init.d/utm5_radius start
/etc/init.d/utm5_rfw start
/etc/init.d/utm5_core start
7. Смотрим логи радиуса:
tail -f /netup/utm5/log/radius.log | grep 'nterim'
и видим там строки:
...
?Debug : Feb 25 23:36:43 RADIUS DBA: Correctly interim updated session <604> found. Leave untouched.
?Debug : Feb 25 23:36:43 RADIUS DBA: Null interim updated session <611> found. Setting last update for current datetime.
...
?Debug : Feb 25 23:36:44 AcctServer: Acct-Interim-Update packet
?Debug : Feb 25 23:36:44 RADIUS DBA: Interim updating session <49A58E54569A00> with timestamp <1235594204>
...
?Debug : Feb 25 23:36:38 RADIUS DBA: Setting interim interval <120> for session id <49A5ABD61C5600>
...
Значит всё получилось.
Хочу пояснить, что после выполнения 2-го пункта радиус каждый раз при установлении новой сессии будет давать команду NAS-у (серверу доступа) для данной сессии посылать interim_update пакеты радиусу. То есть пакеты interim должен слать NAS, но сказать об этом (что он должен) ему должен радиус.
После выполнения 3-го пункта радиус будет проверять в своих записях "мертвые" сессии, на которые NAS не прислал interim_update пакеты и удалять их, в том числе освобождать занятые такими сессиями IP адреса. В 1-м пункте NAS-у дается пояснения, что это за параметр 85.
Кроме того, что параметр interim_update_interval обновляет данные о трафике, он удаляет в своих записях данные о свободных IP адресах, согласовывает занятые и свободные IP адреса с NAS-ом.
1. Заходим на сервер (система CentOS в моем случае), в файл: /etc/radiusclient/dictionary добавляем строчку (если там её нет):
ATTRIBUTE Acct-Interim-Interval 85 integer
2. Заходим в интерфейс администратора -> настройки -> список NAS -> редактировать нужный NAS (сервер доступа, в моем случае это rp-pppoe) -> установка радиус параметров -> Добавить -> Vendor 0, Attr 85, Значение 120 (120 секунд, период обновления и выдачи interim_update пакетов), выбрать Номер -> Ok -> Ok -> Ok
3. Редактируем /netup/utm5/radius5.cfg и добавляем строку interim_update_interval=120
4. Выключаем UTM, в моем случае:
/etc/init.d/utm5_radius stop
/etc/init.d/utm5_rfw stop
/etc/init.d/utm5_core stop
5. Перезагружаем rp-pppoe
/etc/init.d/pppoe-server restart
6. Включаем UTM, в моем случае:
/etc/init.d/utm5_radius start
/etc/init.d/utm5_rfw start
/etc/init.d/utm5_core start
7. Смотрим логи радиуса:
tail -f /netup/utm5/log/radius.log | grep 'nterim'
и видим там строки:
...
?Debug : Feb 25 23:36:43 RADIUS DBA: Correctly interim updated session <604> found. Leave untouched.
?Debug : Feb 25 23:36:43 RADIUS DBA: Null interim updated session <611> found. Setting last update for current datetime.
...
?Debug : Feb 25 23:36:44 AcctServer: Acct-Interim-Update packet
?Debug : Feb 25 23:36:44 RADIUS DBA: Interim updating session <49A58E54569A00> with timestamp <1235594204>
...
?Debug : Feb 25 23:36:38 RADIUS DBA: Setting interim interval <120> for session id <49A5ABD61C5600>
...
Значит всё получилось.
Хочу пояснить, что после выполнения 2-го пункта радиус каждый раз при установлении новой сессии будет давать команду NAS-у (серверу доступа) для данной сессии посылать interim_update пакеты радиусу. То есть пакеты interim должен слать NAS, но сказать об этом (что он должен) ему должен радиус.
После выполнения 3-го пункта радиус будет проверять в своих записях "мертвые" сессии, на которые NAS не прислал interim_update пакеты и удалять их, в том числе освобождать занятые такими сессиями IP адреса. В 1-м пункте NAS-у дается пояснения, что это за параметр 85.
Кроме того, что параметр interim_update_interval обновляет данные о трафике, он удаляет в своих записях данные о свободных IP адресах, согласовывает занятые и свободные IP адреса с NAS-ом.