Я пытаюсь сбалансировать трафик радиуса с помощью nginx. Для сценария у меня есть два сервера, на которых работает сервер/клиент радиуса чайки.
Теперь я поставил raspberry-pi с nginx в качестве loadbalnacer посередине. Итак, мой клиент seagull-redius обращается к открытому порту raspberry-pi, а nginx перенаправляет его на сервер seagull-redius.
Мой nginx.conf
в raspberry-pi
stream {
upstream syslog_udp {
server 123.456.789.1:1813;
}
server {
listen 1800 udp;
proxy_pass syslog_udp;
proxy_responses 0;
}
}
Я открываю порт 1800 с помощью sudo nc -lk 1800
Когда я запускаю клиент seagull-radius, я получаю какую-то тарабарщину на консоли Raspberry. но пакеты не перенаправляются на сервер чайки.
Как я могу выполнить это правильно? Пример клиента/сервера seagull-radius работает правильно.
Я нашел ответ на это. Необходимо внести некоторые изменения как в конфигурацию nginx, так и на сторону клиента/сервера Seagull для отправки UDP-пакетов (Radius).
Первый клиент Seagull должен иметь
<define entity = "transport"
name = "trans-ip-v4"
file = "libtrans_ip.so"
create_function = "create_cipio_instance"
delete_function = "delete_cipio_instance"
init-args = "type=udp">
</define>
<define entity = "channel"
name = "trans-ip-v4"
protocol = "radius-accounting-v1"
transport = "trans-ip-v4"
open-args = "mode=client;dest=123.456.789.50:1800;source=123.456.789.100">
</define>
Здесь очень важной частью является source=123.456.789.100
, которого нет в официальном руководстве по радиусу чайки. Это клиентский сервер радиуса чайки.
На стороне сервера нужно только изменить init-args = "type=udp
с tcp
:
<define entity = "transport"
name = "trans-ip-v4"
file = "libtrans_ip.so"
create_function = "create_cipio_instance"
delete_function = "delete_cipio_instance"
init-args = "type=udp">
</define>
В raspberry pi порт должен открываться как sudo nc -lku 1800
, его IP-адрес 123.456.789.50
В nginx.conf
stream{
upstream radius_loadbalance{
server 123.456.789.1:1813;
server 123.456.789.2:1813;
}
server {
listen 1800 udp;
proxy_pass radius_loadbalance;
proxy_responses 1;
#error_log logs/radius_lb.log;
}
}
Я надеюсь, что это поможет кому-то в будущем.
@MarkLybarger Извините, это была моя ошибка. Я обновил ответ. Это было протестировано и подтверждено с помощью tcpdumps
.
я не понимаю, как это балансирует нагрузку. у вас есть один nginx, один радиус. это просто прокси.