当前位置 : 主页 > 网页制作 > HTTP/TCP >

SOCAT重定向UDP不起作用!

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

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

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

我不认为socat是罪魁祸首,但是考虑使用stone而不是socat,因为对每个接收到的数据包使用fork()有点奇怪.像你这样在你的情况下调用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.x.y.z范围内分发IP,您可以看到这一点.

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

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

HTH

网友评论