ari*_*kfr 7 ubuntu proxy iptables udp
我有一台在端口 50000 上运行 UDP 服务器的服务器。该服务器接收来自客户端的更新,并每 5 秒将客户端 ping 回客户端连接到的套接字。
现在我想通过另一台服务器重定向进出该 UDP 服务器的所有流量。基本上我想在这台服务器前面设置一个透明代理。原因是我希望能够轻松控制哪个服务器处理 UDP 流量,而无需更改 DNS 设置。
起初我尝试使用 socat 创建这个代理:
socat UDP-LISTEN:50000,fork UDP:myserver:50000
但这对于传入流量似乎很有效,但是从我的服务器到客户端的返回流量没有到达目的地。此外,似乎 socat 为每个连接分叉了另一个进程,因此当客户端断开连接/切换 IP 时,我可能会遇到太多进程和死进程。
我意识到我可以为此使用 iptables NAT 功能,但它似乎对我不起作用。我试过的配置是:
sudo iptables -t nat -A PREROUTING -p udp --dport 50000 -j DNAT --to-destination myserver:50000
但它似乎不起作用——我什至看不到我服务器上的连接。我不确定是由于配置错误还是由于其他一些问题。
一些问题:
更新:实际处理流量的服务器与我尝试在其上设置 iptables 的机器位于不同的机器上。
您在描述中没有提到一些要点:
FORWARD
链默认策略设置为ACCEPT
或允许特定流量(ip/端口)来完成。要启用 IP 转发,请取消注释以下行/etc/sysctl.conf
:
net.ipv4.ip_forward=1
Run Code Online (Sandbox Code Playgroud)
然后,执行:sudo sysctl -p
。
使用iptables
命令添加规则只会将它们添加到内存中(重启后它们会丢失)。您需要使用将它们保存到文本文件中iptables-save
,并在需要时使用iptables-restore
.
归档时间: |
|
查看次数: |
13126 次 |
最近记录: |