我已经在AWS上设置了Nginx负载平衡器,将UDP数据包转发到一系列半径服务器(UDP:1812)。我正在努力使透明模式正常工作 - proxy_bind...
正确。我需要源IP!
使用以下配置,数据包未转发到服务器(我使用上游服务器上的TCPDUMP检查了)。我可以看到在日志中和通过NGINX服务器上的TCPDUMP收到的数据包。
user root;
worker_processes 1;
daemon off;
events {
worker_connections 1024;
}
stream {
upstream auth_servers {
server radius.xxx:1812;
}
server {
listen 1812 udp;
error_log /var/log/nginx/radius.log debug;
proxy_responses 0;
proxy_bind $remote_addr transparent;
proxy_pass auth_servers;
}
}
所以我尝试启用IPv4转发:
sudo sysctl -w net.ipv4.ip_forward=1
仍然没有任何击中上游。
所以,我尝试添加以下iptables规则:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
和繁荣!我在上游服务器上看到流量。...但是源IP是Nginx服务器的流量(我猜是因为darn伪装规则)。
所以,我在本地尝试了几个o'virtualbox图像。如果我将侦听器绑定到机器的IP,我就可以使转发开始工作。
在这种情况下,我尝试使用VPC IP进行操作 - 完全没有成功。
尝试了三个分布 - 现在实际上一切...
我正在寻找一种获取实际源IP的方法。
对于那些仍然想要此用途答案的人:
server {
proxy_bind $remote_addr:$remote_port transparent;
}