SOCAT重定向UDP don';不行!

SOCAT重定向UDP don';不行!,udp,network-protocols,lan,wan,socat,Udp,Network Protocols,Lan,Wan,Socat,我正在尝试将UDP数据报中的数据传输到外部位置的客户端,然后传输到本地lan中的pc。 但我的网络是通过ADSL调制解调器发送到带有Slackware的pc,这台pc将软件包重定向到其他pc。 我正在使用socat重定向UDP: socat -v udp-listen:1935,fork,reuseaddr udp:192.168.0.40:37000 在局域网中连接正常,但外部IP不工作。 有人帮助吗? < P> >我不认为 SOCAT < /C>是罪魁祸首,但是考虑使用 Stase而不是

我正在尝试将UDP数据报中的数据传输到外部位置的客户端,然后传输到本地lan中的pc。 但我的网络是通过ADSL调制解调器发送到带有Slackware的pc,这台pc将软件包重定向到其他pc。 我正在使用socat重定向UDP:

socat -v udp-listen:1935,fork,reuseaddr udp:192.168.0.40:37000
在局域网中连接正常,但外部IP不工作。
有人帮助吗?

< P> >我不认为<代码> SOCAT < /C>是罪魁祸首,但是考虑使用<代码> Stase<代码>而不是<代码> SoCAT,因为对于每个收到的包使用<代码> Frk()/Cux>有点奇怪。在您的案例中,Stone是这样称呼的(我认为):

stone-n-d-d-d-d192.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(对称等),也有几种方法可以打开路由器上的端口(配置、UPnP等),因此,在路由器上打洞的方法始终取决于您的硬件能力。这一切在这里无法回答

还有一些其他可能出错的想法:

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

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

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

可能还有另一个技巧可以让连接正常工作:

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