当前位置:  开发笔记 > 程序员 > 正文

SOCAT重定向UDP不起作用!

如何解决《SOCAT重定向UDP不起作用!》经验,为你挑选了1个好方法。

我正在尝试将UDP数据报中的数据传输到外部位置的客户端到本地局域网中的pc.但我的网络是通过ADSL调制解调器发送到带有Slackware的电脑,这个电脑重定向包到其他电脑.我正在使用socat来重定向UDP:

socat -v udp-listen:1935,fork,reuseaddr udp:192.168.0.40:37000

在局域网中,连接很好,但外部IP不起作用.有人帮忙吗?



1> Tino..:

我不认为socat是罪魁祸首,但考虑使用stone而不是socat,因为fork()对每个收到的数据包使用a 有点奇怪.像你这样在你的情况下调用Stone(我认为):

stone -n -d -d -d -d 192.168.0.40:37000/udp 1935/udp

现在为什么外部IP可能不起作用.可悲的是,你的文字并没有说明你的设置,所以我不得不猜测:

这取决于您的防火墙/调制解调器/路由器是否能够转发UDP数据包.通常,如果从内部发起UDP请求,路由器将打开NAT连接,这通常意味着不仅数据包的源IP发生变化,而且源端口也发生变化.由于UDP是无连接的,因此如果没有数据传输,UDP NAT连接通常会很快超时,例如5分钟后.

如果UDP必须以相反的方向打开(从Internet到Intranet),路由器通常会丢弃所有来自Internet的UDP数据包,因为它不知道将它们转发到哪里.路由器不能只选择一些任意机器,这将是一个安全漏洞.因此,在"连接到路由器后面的计算机的Internet"中,您必须打开路由器上的UDP端口并将其转发到正确的计算机.在这种情况下,从内部计算机发送的数据包将获取其源IP并重写源端口,因此Internet上的计算机始终会看到数据包来自路由器.因此除了路由器中的附加规则外,这种情况与传出情况相同.

请注意,有几种不同的方法可以进行NAT(对称等)以及如何在路由器上打开端口的几种方法(Config,UPnP等),因此将一些洞戳入其中的方法总是取决于你的硬件功能.这一切都无法在这里得到解答.

其他一些想法也可能出错:

一些UDP协议编码有效载荷内的IP地址.在这种情况下,只转发数据包是不够的,您还必须更改有效负载以更正交换的IP地址,以使所有计算机能够一起通信.无论如何,这样的UDP协议设计得很糟糕,因为你永远不应该假设两台任意机器可以直接相互通信,所以所有好的协议都应该支持简单的代理.

一些ISP出于任意原因过滤某些UDP端口.如果您在从Internet到DSL的谈话时遇到问题,请尝试使用直接连接到不同ISP的两台外部计算机.如果这些可以通过UDP进行通话检查您是否可以从Intranet与其中一台外部计算机进行通信.如果这仍然有效,这意味着你也可以倒退,因为通常UDP不是定向协议,但如果涉及到某些NAT,你必须确保通信端口保持打开状态.

移动互联网计划通常不支持P2P.这可能意味着,这些计划根本不支持互联网,因为根据定义,IP是P2P.互联网服务提供商真正想用"无P2P"说的是(我的猜测),不支持从互联网到移动设备的连接.在这种情况下,您始终必须从移动设备启动连接,因此您无法使用推送方法(Internet到移动设备),移动设备始终必须拉(来自Internet的数据).一些宽带/有线电视提供商可能会这样做.通常,如果您的ISP在10.xyz范围内分发IP,您可以看到这一点.

如何使连接工作可能还有另一个技巧:

请求您的ISP获取一些IPv6.也许用6to4.使用IPv6,您可以完全消除NAT,然后本地LAN可以直接在IPv6上互联互联.确保在IPv6接口上的Intranet主机上激活防火墙/ iptables,否则您可能会很快看到入侵者.

HTH

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有