使用Nginx进行Radius负载平衡

时间:2019-06-07 10:45:07

标签: nginx radius

我正在尝试使用nginx负载均衡半径流量。对于这种情况,我有两台运行seagull radius服务器/客户端的服务器。

现在,我在中间放置了一个运行nginx的树莓派作为负载平衡器。因此,我的seagull-redius客户端调用raspbeery-pi的开放端口,然后nginx将其重定向到seagull-redius服务器。

我在树莓派中的nginx.conf

stream {
  upstream syslog_udp {
    server 123.456.789.1:1813;
  }
  server {
    listen 1800 udp;
    proxy_pass syslog_udp;
    proxy_responses 0;
  }
}

我使用sudo nc -lk 1800打开端口1800 当我运行seagull-radius客户端时,我在树莓派控制台上得到了一些乱码。但是数据包不会重定向到Seagull服务器。

如何正确执行此操作? seagull-radius客户端/服务器示例正常工作。

1 个答案:

答案 0 :(得分:2)

我找到了答案。在nginx配置和海鸥客户端/服务器端都需要进行一些修改,以发送UDP数据包(半径)。

第一个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>

在树莓派中,pi端口应打开为sudo nc -lku 1800,其IP地址为123.456.789.50

nginx.conf

stream{
    upstream radius_loadbalance{
        server 123.456.789.1:1813;
    }

    server {
        listen 1800 udp;
        proxy_pass radius_loadbalance;
        proxy_responses 1;
        #error_log logs/radius_lb.log;
    }
}

我希望这会对遇到此问题的人有所帮助。