Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Unifi — использование нескольких RADIUS-серверов — резервирование или балансировка нагрузки?, UniFi Network
 
У меня есть несколько вопросов о том, как работают несколько RADIUS-серверов в прошивке Unifi 4.6.6.  
1. Это только отказоустойчивость? Если да, то как часто система проверяет основной сервер, чтобы понять, восстановился ли он?  
2. Есть ли балансировка нагрузки? Если есть, используется ли круговая очередь или какой-то другой метод?  
3. Список RADIUS-серверов в версии 4.6.6 задан для каждого SSID отдельно или для всего контроллера (или точки доступа)? Например, можно ли указать по 4 RADIUS-сервера для 4 разных SSID, чтобы в итоге использовалось 16 RADIUS-серверов?
 
Не все балансировщики нагрузки умеют балансировать UDP (например, HAProxy). Балансировка нагрузки и anycast во многом похожи, и один не лучше другого. Обычно один из методов подходит больше, чем другой. Для radius больше подходит anycast. То, что ваши NPS-серверы находятся в разных сегментах или сетях, для anycast значения не имеет. У меня есть Linux-машина, которая выполняет функции фаервола, роутера, балансировщика нагрузки и шлюза в интернет. Еще у меня два Linux-сервера, которые участвуют в OSPF вместе с роутером. Я создаю виртуальный интерфейс на loopback для каждого anycast IP, который использую. Каждый виртуальный интерфейс и, соответственно, виртуальный IP — это своя область OSPF. Я анонсирую маршрут /32 для каждого anycast IP через физические интерфейсы на каждом из серверов. Вот неплохая ссылка с объяснением, как я всё настраивал: http://ddiguru.com/blog/122-anycast-dns-part-4-using-ospf
 
Интересная идея. Раньше я не слышал об anycast. Но, похоже, это больше подходит, когда Radius-серверы находятся в разных сетях, разделённых роутерами. У меня в работе два Windows NPS-сервера на одном сегменте сети, вся маршрутизация статическая. Я пытаюсь сделать довольно простое: хочу перезагрузить основной NPS-сервер, не отключая RADIUS для всех Wi-Fi соединений, но при поломке резервирования именно это и происходит. Второй RADIUS, похоже, лишь для красоты. Хотелось бы, чтобы он работал нормально. Балансировка нагрузки была бы вообще супер, а так я бы уже согласился хотя бы на резервирование.
 
Вместо того чтобы запускать radius-серверы на отдельных IP-адресах, требуя определения каждого из них и заставляя вас возиться со сложной логикой отказоустойчивости, почему бы не запустить все ваши radius-инстансы через anycast? Когда один инстанс перестает работать, маршрут к нему удаляется, и по мере того, как обновление маршрута распространяется, происходит переключение. Radius, как и dns, ntp, http и kerberos, — это бессостоянный протокол, который можно эффективно использовать с anycast.
 
Кто-нибудь получил внятный ответ по этому вопросу или заставил это работать? Я честно считаю, что это сломано намеренно, и если раньше в каких-то версиях работало, то сейчас уже нет. В любом случае, я сам немного покопался.

У меня стоит AP-AC v2 на версии v3.7.55 с контроллером v5.4.18. Раньше, когда использовали hostap (v2.x), можно было редактировать и настраивать failover, и он работал. Сейчас unifi перешли на madwifi, и многое поменялось — я не могу найти никакой специальной настройки для включения failover.

Проблема в сегодняшней версии вот в чем: у AP конфигурация хоста хранится в /etc/aaa1.cfg через aaa3.cfg. Там же хранятся настройки Radius, но их правка не помогает исправить проблему с failover, даже если они указаны. В /tmp/running.cfg я вижу оба сервера аутентификации, но когда один перестаёт отвечать, трафик на резервный не уходит.

Кроме того, контроллер больше не хранит конфигурации AP в папке site, а складывает их в какой-то странный файл для mongodb, я нашёл его в /usr/lib/unifi/data/db, называется ace.0 — и отредактировать его как обычный текст нельзя.

Открывать чат или тикет в поддержку бессмысленно — у них ноль понятия, о чём ты вообще спрашиваешь.

Кто-нибудь что-то придумал или есть обходные пути?
 
Привет, seirui, возможно, я могу ответить на твои вопросы 1 и 2.

2. Конечно, нет. Протокол RADIUS не умеет делать балансировку нагрузки. Обычно для аутентификации используется первый RADIUS-сервер, а если он не отвечает на ICMP Echo-запрос, то подключается второй сервер. В этом и проблема RADIUS-аутентификации — второй сервер почти никогда не используется, если хост отвечает на Echo-запрос, но сам процесс RADIUS не работает. Вот почему разрабатываются другие протоколы аутентификации.

1. Я точно не знаю стандартное время ожидания для проверки доступности RADIUS. Можно посмотреть в RFC по RADIUS. Обычно оно довольно длинное из-за стандартных таймаутов UDP в IP. Именно поэтому такие компании, как Cisco, Juniper и другие, дают возможность настраивать таймауты для RADIUS-клиента.

С уважением, ryder
 
На самом деле у меня такая же проблема. Я добавил два radius-сервера при создании нового SSID, но, к сожалению, переключение на резервный так и не происходит, когда первый в списке (назовём его основным) недоступен и не отвечает. Я проверял и выяснил, что пакеты всё равно пытаются достучаться до основного radius, когда он не работает. TCPDUMP показывает следующее: ..... RADIUS, Access Request (1), id: 0x2d length: 201.....ICMP ... udp порт 1812 недоступен, длина 237. Я использую последнюю прошивку на точках доступа — 3.7.8.5016, последнюю версию контроллера — 5.2.9 (Build: atag_5.2.9_8748). Можете объяснить такое поведение и подсказать, как заставить freeradius корректно переключаться при отказе? Спасибо!
 
Да, у меня версия 4.7.5.
 
Ты на версии 4.7.5? Мы тестировали последние пару дней, и здесь всё работало так, как я описал.
 
Оба radius-сервера были добавлены при создании SSID. Мы используем нашу собственную инфраструктуру PKI для развертывания сертификатов на серверах NPS и клиентах, так что я не думаю, что проблема в сертификатах. Проблема в том, что переключение на резервный сервер так и не происходит.
 
Не добавляйте второй Radius после настройки. Оба нужно сконфигурировать сразу при создании SSID. Дело в том, что их потом не перепроявляют (почему именно — это другой вопрос). Поскольку недавно мне пришлось обновлять сертификат сервера, я решил добавить в него subject alternate names с будущим именем нашего второго RADIUS-сервера, но и ваш способ тоже подойдет. Да, шаблоны с подстановочными знаками только создают проблемы с Windows, это уже обсуждалось не раз в списке FreeRADIUS, и если хотите узнать подробности, советую посмотреть вот эту страницу в вики FR: http://wiki.freeradius.org/guide/Certificate-Compatibility
 
Не добавляйте второй Radius потом. Оба должны быть настроены при создании SSID. Переключение на второй radius здесь занимает от 1 до 3 минут. Мы решили использовать один и тот же сертификат на обоих radius-серверах (никаких wildcard сертификатов, потому что Windows их не принимает), чтобы клиенты не спрашивали подтверждения для изменённого сертификата.
 
Я даже не могу заставить переключение RADIUS сработать. Использую RADIUS/NPS на Windows Server 2012 R2. Добавил два RADIUS-сервера в Unifi Controller (вер. 4.7.5), но когда останавливаю сервис RADIUS на первом сервере, клиенты не проходят аутентификацию. Они просто не переключаются на второй RADIUS-сервер. Есть идеи?
 
Думаю, это не связано с ICMP/пингом. В ходе моих тестов я просто остановил сервис radius. Переключение на второй сервер занимает около 3 минут, если я деактивирую radius на первом.
 
Привет, я сейчас тестирую fallback для radius. Получается, что это именно fallback, а не балансировка нагрузки, как я заметил. Таймаут после выключения первого radius-сервера действительно очень долгий. Также заметил, что AP не перепрошиваются, если я добавляю второй radius в SSID — возможно, это баг и стоит проверить. Похоже, что SSID с добавленным radius не переключается на запасной сервер даже при перепрошивке AP из-за других изменений в конфигурации. Другой SSID, где оба radius-сервера настроены сразу в параметрах SSID, переключается корректно.

Хочешь, чтобы я проверил ещё что-то?

P.S. Тестирую с freeradius 3.0.9, unifi 4.7.5 и UAP-AC-LR (бета-версия).

P.P.S. Похоже, что radius2 становится сервером по умолчанию, если первый не отвечает после 600-секундной попытки (при перезагрузке AP radius1 снова становится основным). Но я заметил ещё важный момент: клиент видит новый сертификат запасного сервера и просит принять его (iOS9).
 
К сожалению,

@seirui, я не могу дать ответ по пунктам 1 и 2 с проверкой на практике, однако по пункту 3: я видел (на версиях 4.7.5 и ранее, например 3.2.10), что сервер RADIUS настраивается для каждого SSID отдельно (и в 3.2.10, и сейчас в 4.7.5). Планирую добавить второй RADIUS-сервер, когда на работе появится время. Поскольку (даже в первом поколении AP-AC) внутри, видимо, используется hostapd, они, скорее всего, ведут себя как обычный hostapd, что подтверждается комментарием в дефолтном hostapd.conf: переключение с повторной попыткой на первый сервер.

# Вторичные RADIUS-серверы; используются, если основной не отвечает на RADIUS-пакеты. Они опциональны, и их может быть несколько.
[...]
# Интервал повторных попыток возврата к основному RADIUS-серверу (в секундах). Код клиента RADIUS автоматически попробует использовать следующий сервер, если текущий не отвечает на запросы. Если этот интервал установлен, основной сервер будет переопрашиваться спустя заданное время, даже если используемый сейчас вторичный сервер работает.
[...]

Имейте в виду, что Ubiquiti могли изменить hostapd, чтобы он вел себя иначе. Поскольку hostapd лицензируется по BSD, Ubiquiti не обязаны публиковать эти изменения (что не решает проблему с тем, что они до сих пор не выкладывают архив с исходниками GPL для прошивки на базе Linux — но это уже другая тема).

Редактирование: уточнил по поводу BSD-лицензии hostapd.
 
К сожалению, нет. Однако меня запланировали работать над этим вопросом в ближайшие недели у клиента, который его поднял, так что, скорее всего, я узнаю всё на собственном опыте.
 
Привет, Seirui! Ты получил какой-нибудь ответ по этому поводу? Мне тоже очень хотелось бы понять, зачем в Unifi Controller можно указывать несколько radius-серверов. На самом деле, я указал в контроллере два radius-сервера, но когда отключил один из них, аутентификация через radius перестала у меня работать. С уважением.
Страницы: 1
Читают тему (гостей: 1)