但我的网络是通过ADSL调制解调器发送到带有Slackware的电脑,这个电脑重定向包到其他电脑.
我正在使用socat来重定向UDP:
socat -v udp-listen:1935,fork,reuseaddr udp:192.168.0.40:37000
在局域网中,连接很好,但外部IP不起作用.
有人帮忙吗?
石头-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