微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ubuntu – 如何使用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

但它似乎不起作用 – 我甚至没有看到我的服务器上的连接.我不确定这是由于配置错误还是由于其他一些问题.

一些问题:

>添加nat配置后,是否需要以某种方式重新启动iptables?
>我是否需要允许流量进入传入端口或NAT设置是否足够?

更新:实际处理流量的服务器所在的机器与我尝试设置iptables的机器不同.

您的描述中没有提到一些要点:

>如果您将iptables机器收到的流量转发给另一台机器.您需要启用IP转发.请参阅下文了解详情.
>此外,您需要允许转发的流量通过.这可以通过将FORWARD链认策略设置为ACCEPT,或允许特定流量(ip / port)来完成.

要启用IP转发,请在/etc/sysctl.conf中取消注释以下行:

net.ipv4.ip_forward=1

然后,执行:sudo sysctl -p.

使用iptables命令添加规则只会将它们添加到内存中(重启后会丢失).您需要使用iptables-save将它们保存到文本文件中,并在需要时使用iptables-restore恢复它们.

原文地址:https://www.jb51.cc/ubuntu/348168.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐