Балансировка нагрузки Radius с помощью nginx

Я пытаюсь сбалансировать трафик радиуса с помощью 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 и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
1
0
1 065
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел ответ на это. Необходимо внести некоторые изменения как в конфигурацию 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;
    }
}

Я надеюсь, что это поможет кому-то в будущем.

я не понимаю, как это балансирует нагрузку. у вас есть один nginx, один радиус. это просто прокси.

Mark Lybarger 20.08.2020 20:31

@MarkLybarger Извините, это была моя ошибка. Я обновил ответ. Это было протестировано и подтверждено с помощью tcpdumps.

Sachith Muhandiram 21.08.2020 05:38

Другие вопросы по теме