『壹』 udp穿透nat 必须依赖一个在公网的服务端才能实现吗单纯的端口映射实现不了吗
可以实现的,应该是你方法不对。
『贰』 TCP、UDP穿透NAT
A与B如果IP相同,则用内网方案。
A与B的IP不相同的话,
A请求服务器让B给A发个打洞消息。如果能接收到B的应答,就说明通了。(在这里是通过线程,有一个最大尝试次数)
A -> 发送打洞请求给C
C -> 发送命令给B,B接到命令后
B -> 发送打洞回应消息给A,一直尝试N次
如果A能接受到B的回应,就通了。
不知道描述的对不对。
『叁』 NAT保持端口信息的最长时间
ip nat translation udp-timeout ?
<0-536870> Timeout in seconds
never Never timeout
可以自己设置的
『肆』 关于UDP的问题
不可以,路由器的NAT默认只允许由内向外的UDP透传。如果路由器没有做转发规则映射,则发送到202.16.1.5:888 的UDP数据包会被路由器的NAT自动丢弃掉。
如果你想收到数据包,有两种方法可以实现:
方案一:配置转发表
登陆路由器,配置转发规则,将发送给888端口的UDP数据转发给192.168.1.5:888。该配置生效后,发向202.16.1.5:888的UDP数据会被路由器自动转发到192.168.1.5:888端口上。
方案二:STUN打洞
另外,可以通过周期性STUN打洞来迫使路由器的NAT将包转进来。
『伍』 如何解决NAT对UDP校验产生的影响
UDP的校验和本来就是操作系统层来处理的,路由器转发数据时,又会重新计算一下。而且,大多数的中间路由设备,都不会管校验和的结果,直接按目的IP端口来转发UDP数据包。所以一方面应用程序解决不了,另一方面可以说完全没有影响。
请采纳,谢谢
『陆』 UDP之NAT穿透问题,请牛人指点,万分感谢。
我的情况跟你一样,也是在内网测试OK,一到公网就不行了
『柒』 NAT类型检测是UdpBlocked,不能连怎么办
这方面我也刚刚开始看,交流下心得吧
nat类型好像关系不大吧,nat使内部网络中的计算机可以访问外部公共网络,但不允许外部网络对内部的访问。如果在内部网络的计算机首先向外部网络发送数据,就可以收到该外部网络的数据了(可以理解为,在访问了某个外部网络后,nat为该外部网络的ip留了一个“洞”,这个来自这个ip的数据可以穿透nat)。
两个nat内的内部网络要实现通信的话,先要知道对方的公共网络ip地址,让后通过分别向对方发送数据(udp的数据包,或者tcp的ACK),来给对方的公网ip留“洞”,让后就可以实现穿透了。
通过STUN可以帮助本机找到想要通信的那端的公网ip。
在穿越nat的时候还要进行内部ip和公网ip的转换,这个好像是可以自动完成的。
具体细节我也在摸索中..有结果了分享下~
『捌』 路由器NAT协议私网到公网转换的临时端口租用时限
你应该说的事端口映射 这个值是可以设定的~ 最短可以是3分钟(设备不同时间也不通)最长就是24小时换算成分钟~
『玖』 游戏提示 检测到严格的NAT. UPnP 无效. 请转发UDP端口4950&4955到192.168.x.x
这种情况比较奇怪,因为家用的路由器UPnP应该都是开着的。
进路由器看看,UPnP是否打开了,如果没有,那就打开。
另外映射是在路由器上设置的,按照游戏提示的要求填写参数就行了
顺带看看WAN口(广域网)运行状态,如果获得的IP是私网IP。那就是运营商坑爹,没辙了。
『拾』 UDP P2P 穿越 NAT 的问题
AB已经通了,你又把AC和BC都打通了,当然是三者都通了。
如果AB通后只把AC或者BC其中一组打通,那么根据Cone NAPT的原则:
只要本地绑定的UDP端口相同, 发出的目的地址不管是否相同, 都使用同一个Session.三者也是通的。
希望你不要碰到Symmetric NAPT