Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
UniFi и FreeRadius: динамическая VLAN, UniFi Network
 
Я настроил сервер FreeRadius в своей сети и сконфигурировал SSID с WPA Enterprise и динамическим назначением VLAN. Аутентификация работает идеально — подключение к сети проходит, но при этом мне всё равно присваивается IP из стандартной сети без VLAN. В файле eap.conf у меня стоит "use_tunneled_reply = yes". Что ещё могло быть упущено? В сети у меня два EdgeSwitch, и VLAN, который я пытаюсь назначать динамически, промаркирован на всех портах вплоть до SonicWall (который хостит VLAN и DHCP сервер для него). Могу предоставить любую полезную информацию.  
FreeRadius 2.2.8  
UniFi 5.6.30  
UniFi AP: AP-AC-In Wall fw 3.9.19.8123
 
Вот что я вижу в FreeRadius на базе freeradius3-3.0.17 в pfSense.  
# Вместо «use_tunneled_reply» измените в этом месте «if (0)» на «if (1)».  
#  
if (1) {  
 #  
 # Эти атрибуты предназначены только для inner-tunnel и НЕЛЬЗЯ копировать во внешний ответ.  
 #  
 update reply {  
  User-Name !* ANY  
  Message-Authenticator !* ANY  
  EAP-Message !* ANY  
  Proxy-State !* ANY  
  MS-MPPE-Encryption-Types !* ANY  
  MS-MPPE-Encryption-Policy !* ANY  
  MS-MPPE-Send-Key !* ANY  
  MS-MPPE-Recv-Key !* ANY  
 }  

 #  
 # Копируем атрибуты внутреннего ответа во внешний список session-state.  
 # Политика после аутентификации позаботится о копировании внешнего session-state в внешний ответ.  
 #  
 update {  
  &outer.session-state: += &reply:  
 }  
}  

Даже после изменения на «if (1)» я всё равно не могу получить IP из нужного VLAN, вместо этого выдают IP из дефолтного MGMT VLAN. Уже провёл несколько часов в исследовании, чтобы это заработало, но решения пока не нашёл. Есть какие-нибудь мысли?
 
Это помогло и мне — спасибо, @UBNT-AdamD.

Для сохранения информации: в документации указано, что use_tunneled_reply считается устаревшим начиная с FreeRADIUS 3.0.5, поэтому вместо его включения я раскомментировал два блока update в sites-available/inner-tunnel:

#
# Вместо "use_tunneled_reply" раскомментируйте
# следующие два блока "update".
#
update {
   &outer.session-state: += &reply:
}

#
# Эти атрибуты относятся только к внутренней сессии.
# Они НЕЛЬЗЯ отправлять во внешнем ответе.
#
# Если раскомментировать предыдущий блок,
# а этот оставить закомментированным, WiFi НЕ БУДЕТ РАБОТАТЬ,
# потому что клиент получит два MS-MPPE-ключа
#
update outer.session-state {
   MS-MPPE-Encryption-Policy !* ANY
   MS-MPPE-Encryption-Types !* ANY
   MS-MPPE-Send-Key !* ANY
   MS-MPPE-Recv-Key !* ANY
   Message-Authenticator !* ANY
   EAP-Message !* ANY
   Proxy-State !* ANY
}
 
Мы попробовали то, что предложил AdamD, и теперь динамическое назначение VLAN через AC-LITE работает как надо. Спасибо, AdamD!!!
 
В вашем файле eap.conf на сервере FR вы включаете туннелированные ответы для EAP-PEAP и EAP-TTLS (если это нужно)?
 
Я тоже сталкиваюсь с такой же проблемой: в трассировке Wireshark видно, что FreeRadius отправляет правильный VLAN ID, но точка доступа UBNT вообще, похоже, никак это не обрабатывает. Пользователь проходит аутентификацию нормально, но оказывается на VLAN по умолчанию (1), хотя это неверно. У точки доступа три SSID. Первый использует VLAN по умолчанию (без тега) — VLAN 1 и WPA2 Personal, второй работает с тегированным VLAN (33) и WPA2 Personal. Третий SSID настроен на использование RADIUS-профиля с WPA Enterprise. Этот RADIUS-профиль ссылается на сервер FreeRadius и должен динамически назначать VLAN 128, 129 или 130 в зависимости от аутентифицируемого пользователя. В данном случае мы аутентифицируемся как Test128, и точка доступа должна назначить пользователю VLAN 128. FreeRadius отправляет правильные данные на UBNT AP, но пользователь всё равно попадает в VLAN 1. Версия контроллера UBNT у нас 5.8.24, а точка доступа UBNT AP-AC-LITE работает на прошивке версии 3.9.42.9152.
 
Не хочу вмешиваться, но, возможно, это будет полезно и для @Computer_Dude95 и @UBNT-AdamD.  

Я сделал захват пакетов, как вы описали (pcap во вложении). Вижу, что Tunnel-Private-Group-Id отправляется от FreeRADIUS к AP в третьем AVP в пакете 4, но дальше в остальной переписке он больше не упоминается. Боюсь, я недостаточно хорошо разбираюсь в RADIUS, чтобы понять, в чём проблема — вы можете подсмотреть, что не так?
 
@tman222

К сожалению, у меня VLAN номер хранится в виде строки, и проблема всё равно остаётся точно такая же, как у @Computer_Dude95.
 
Привет, @Computer_Dude95!

Я понимаю, что это немного тонко, но, возможно, это изменит ситуацию: присваивается ли VLAN, если вместо числового значения для Tunnel-Private-Group-ID использовать строку? То есть в вашем пользовательском файле написать "30" вместо просто 30.

Я ориентировался на этот источник: https://help.ubnt.com/hc/en-us/articles/219654087-UniFi-Using-VLANs-with-UniFi-Wireless-Routing-Switching-Hardware#UAP

Надеюсь, это поможет.
 
Так как точка доступа работает в роли аутентификатора, вы сможете захватывать двунаправленный трафик на порту 1812 между ней и вашим сервером FreeRADIUS.

Чтобы сделать захват пакетов, нужно знать, на каком интерфейсе снимать трафик:

Физический порт точки доступа.

Введите команду ifconfig, чтобы узнать, какой интерфейс использует управляющий IP.

Команда tcpdump в SSH-сессии:
sudo tcpdump -npi <интерфейс> port 1812 -w /tmp/radius.pcap

Когда tcpdump запущен, начните пытаться аутентифицироваться с клиентом. Вывод сохраняется в файл, поэтому в командной строке ничего не будет отображаться. Как только почувствуете, что процесс занял достаточно времени, остановите tcpdump сочетанием ctrl + c.

Файл с логами будет сохранён в каталоге /tmp/ и его можно скопировать с точки доступа через SCP для анализа. В Wireshark вы сможете просматривать RADIUS-атрибуты, которые отправляет сервер, изучая содержимое пакетов. Если увидите, что атрибут vlan_id действительно передаётся правильно, будете знать, куда двигаться дальше.

Если возникнут вопросы по этому процессу, дайте знать.
 
@UBNT-AdamD Спасибо за ответ! Нет, я не использую статические VLAN на других SSID. Я ещё не делал захват пакетов — не подскажете, как мне это сделать?
 
@Computer_Dude95

Твои RADIUS-атрибуты выглядят правильно, тут особо вопросов нет. Ты уже используешь VLAN 30 статически на каком-то другом своём SSID? Есть ли возможность, что ты сделал захват пакетов RADIUS-сообщений на AP?
 
К сожалению, нет. Скоро я снова возьмусь за это, так что если что-то узнаю, обязательно сообщу тебе.
 
Привет, я столкнулся с похожими проблемами, когда freeradius на Ubuntu не раздаёт VLAN клиентам, хотя radtest на самом сервере работает. Ты решил эту проблему?
Страницы: 1
Читают тему (гостей: 1)