使用 nginx 进行 Radius 负载均衡
Radius loadbalancing using nginx
我正在尝试使用 nginx 对 radius 流量进行负载平衡。对于我有两台服务器的场景 运行ning 海鸥半径 server/client.
现在我在中间放了一个raspberry-pi 运行ning nginx作为loadbalnacer。所以我的 seagull-redius 客户端调用 raspberry-pi 的开放端口,nginx 将它重定向到 seagull-redius 服务器。
我在 raspberry-pi 中的 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-radius client/server 示例正常工作。
我已经找到了答案。在 nginx 配置和 seagull client/server 端都需要做一些修改以发送 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 对 radius 流量进行负载平衡。对于我有两台服务器的场景 运行ning 海鸥半径 server/client.
现在我在中间放了一个raspberry-pi 运行ning nginx作为loadbalnacer。所以我的 seagull-redius 客户端调用 raspberry-pi 的开放端口,nginx 将它重定向到 seagull-redius 服务器。
我在 raspberry-pi 中的 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-radius client/server 示例正常工作。
我已经找到了答案。在 nginx 配置和 seagull client/server 端都需要做一些修改以发送 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;
}
}
我希望这对以后的人有所帮助。