如何让N2N虚拟局域网走P2P?简单测试
废话就不展开说了。开始!
家里台式机A:192.168.123.1
公司台式机B:192.168.123.2
测试
通过 EasyN2N 自带的NAT类型测试,分别测的:家里、公司的网络NAT类型均为 Symmetrict NAT
PING延迟
分析
N2N是可以进行P2P通信的,在P2P连接下,虚拟局域网下的客户端连接延迟和稳定性都很不错,但前提是客户端所在网络NAT类型符合条件才可以实现P2P连接。
网络上关于NAT和P2P的关系这里就不啰嗦了,可以参考这篇文章 :NAT的四种类型及类型检测(详细介绍)
简单学习后,可以了解到P2P建立条件:
当联机的双方NAT类型有一方为Cone NAT时(以下前三种)才 有概率 建立P2P连接,如果双方都是Symmetric NAT,必然无法成功建立P2P连接
几种常见的NAT类型:
1.Full Cone
2.Restricted Cone
3.Port Restricted Cone
4.Symmetric NAT
结合上面的P2P条件,由于家里和公司的NAT类型均为 Symmetric NAT,所以无法建立P2P连接,只能通过N2N服务器中转通信
引用一段恩山论坛大佬总结的:
1.双方中只要有一方是Full Cone,可以直连
2.双方都是Restricted Cone或Port Restricted Cone,这种情况可以打洞,通过N2N服务器握手以后,双方的数据不再经过服务端
3.一方为Restricted Cone,另一方为Symmetric NAT,可以打洞,通过N2N服务器握手以后,双方的数据不再经过服务端
4.一方为端口Port Restricted Cone,另一方为Symmetric NAT,这种情况无法打洞,数据要走N2N服务器中转
5.双方都为Symmetric NAT,这种情况也是无法打洞的,数据要走N2N服务器中转
折腾
如果需要走P2P,则要调整当前网络的NAT类型,以符合P2P连接的条件
因为公司的网络比较固定(专线),并且上层交换设备无权操作,所以公司的网络这边只能放弃
同理,有些校园网、手机的4G\5G、公用WIFI等,都是这样的情况
方法1
来自 lucktu 大佬分享的方法:
方法1:edge使用固定端口,上级路由器使用端口转发过来
方法2:最新的支持upnp的edge下,打开路由器的upnp支持
方法2
打开路由器中的DMZ,将DMZ的IP指向台式机
注意:此步骤会将DMZ指向的设备完全暴露在公网下,易受到恶意攻击,请慎重开启
最后的效果:
再次测试
注意
本文所说的“有概率”,请看下图:
当我的NAT类型为Fullcone,公司是Symmetric,理论来说,是可以P2P的
但P2P不是一个开关(不是即开即生效)
在不断ping了200次左右时,NAT类型发生转变,延迟降低,可以判断为已建立P2P连接
100 条评论
请问我跟朋友在命令窗口ping值4ms应该是直连状态,但是n2n测试工具ping下来确是60ms非直连,这是为什么呢
@Yokirot
呃……不应该啊,EasyN2N的ping和Windows的Ping原理都是ICMP协议。可以尝试用TCP\UDP的Ping试试延迟
@Bug侠
我们命令窗口ping的是物理ipv4地址,ping虚拟网ip的话倒是和n2n测试的一样。但主机列表看我们是直连状态,但还是延迟70ms 请问为啥直连延迟还这么高
@Yokirot
我有点懵逼,不好意思
ping的物理ipv4地址是啥意思?你们本身就在一个物理局域网内吗?那为啥要组N2N呢?
@Bug侠
我小白,不太会描述问题,先跳过这部分吧。想问下EasyN2N的小组名称旁边的主机列表显示我跟我朋友是P2P直连,但延迟依旧在60ms,这正常吗
@Yokirot
你和你朋友分别在哪里呢?什么运营商?
@Bug侠
贵州和山东,移动和联通
@Yokirot
贵州到山东的物理距离决定了你俩的直连延迟都不会低,更何况还跨了运营商。所以60ms的直连延迟的正常的。
本文所贴图里的5ms延迟情况:同城市同运营商下,虚拟网下的直连延迟。
mc服务器也能用p2p直连吗
@busy
必须的是可以的,p2p或psp都是在虚拟网下的连接模式
首先感谢作者!
最近两天使用了各种方法,想尝试直连我朋友的电脑,但最终依然是走了中转的延迟结果,作为门外汉,无奈只能寻求作者的帮助!以下是我俩的具体操作情况:
我和我的朋友为同一校园网(同运营商、nat类型、在同一栋楼且是同款路由器),但双方无法通过p2p直连(延迟为70ms),期间我尝试过DMZ,检测自己的nat也变成了full cone,但依然没有直连成功。
期间也确认了以下状况:
双方的原始nat类型均为restricted cone;
我的路由器确认开启了upnu状态;
双方均一键关闭了防火墙并可以ping通不丢包;
双方均设置n2n虚拟网卡约点数为最低;
直接tracert 自动分配的对方ip,只显示对方电脑(没有其他设备);
双方可以用线下局域网游戏直接发现、联机,延迟结果均为70左右。
至今依然无法查明原因,恳望作者阅后能指点一二,不胜感谢!
@Cognition
客气了,不过不好意思,我这边只能盲猜一波,几个点:
1.P2P是概率事件,且不能仅以NAT类型来确定是否能够成功P2P。
2.既然你们都是同一校园网了,内网IP不通吗?
3.如果上述内网IP不通,并且可以做到full cone,那可以判断你们校园网用了VLAN隔离,大概就相当于你们看似在物理上是一个局域网内的,但每个子网又是独立的。
4.你和你朋友N2N组网后,是在一个虚拟局域网内的,路由表是写好的,所以tracert一跳直达
5.综上,我盲猜还是因为校园网的问题
@Bug侠
就是校园网问题,一个寝室局域网联机能看见房间,就是无法解析
站长,我的路由器设置DMZ只能设置最后一个点后面的数字,这就造成了小黄鸭启动会有个不能和局域网ip相同的限制,这怎么搞
@Jx
???
DMZ指向的IP是你物理局域网的IP,和N2N的虚拟IP没关系的
@Bug侠
我的路由 ip是 192.168.31.1,DMZ只能改192.168.31.xx,比如我改成了192.168.31.11,启动小黄鸭输入虚拟ip为192.168.31.1,就会提示不能相同,谢谢站长
@Jx
虚拟IP和物理真实IP需要分属不同的段,否则就会冲突。
比如你台式机是192.168.31.x,那N2N的IP就不能在31.x这个段内,随便指定一个别的,比如192.168.13.x
@Bug侠
好的,谢谢站长,这样也有几率实现 full cone 是吧
我自己电脑以及把-p 20486的20486开启公网同端口(路由器支持,且有公网IP)
对端peer1是服务器,全端口开放
为什么我ping peer1延迟是140ms【不连接n2n单独ping是30ms】,也就是说还是走了supernode
以及tracerte只有一跳
但这不合理啊qwq……
@Enoch
我这边也没啥思路。不过可以简单分析一波:
1.通过延迟判断走的是PSP,也就是P2P没成功,P2P没成功需要检查双方NAT,既然对端是服务器(假设其NAT正常),那大概率是你本地的问题,DMZ大法试了没?
2.排查完NAT后,可以持续ping,看看是否有变化点(比如我这边有时候ping50次左右的时候,就从PSP切到P2P了)
3.N2N情况下tracert只有一跳我还没遇到过
4.配合edge、supernode日志再排查分析吧
@Bug侠
DMZ试过了,而且公网ip从其他服务器测试tcping成功的
另外又遇到了另外一个问题
按照github教程里面使用username-password和A4
用 -I -J -P -k -A4 登录之后,登录成功了,edge和supernode通信成功
但是无法和其他edge通信
确认-c指定了同一个社区,尝试过用相同账号和不同账号,都无法互通
确认不使用 -I -J -P -k -A4时可以互通
站长尝试过用username-password验证咩
恳请提供一点解决思路
万分感谢~~~!
站长,我和我朋友有时候是p2p,有时候是中转,有没有强制走p2p的端口设定啊,这样随机切换有点懵
还有就是双方ping通的情况下有时候小组列表会打不开,显示打开列表失败,想问一下是什么原因导致的
@林钟寒艳
1.没有强制P2P,P2P是个概率事件,大部分随机切的情况,是因为双方中至少有一方的NAT环境发生了改变,建议先从优化网络NAT环境开始折腾。
2.EasyN2N 2.4修改了小组列表的功能,逻辑是发送数据给本机edge的管理端口(默认是5644),然后返回用户列表数据,应该不会出现这个提示啊,这个我暂时没有头绪
@Bug侠
好的,谢谢站长,我把防火墙的N2N相关设置都放开了,打开列表失败的机率小了很多,应该是和防火墙设置有关系
其实,不用打开dmz,那个太霸道了:
1、方法一,edge使用固定端口,上级路由器使用端口转发过来;
2、最新的支持upnp的edge下,打开路由器的upnp支持。
@lucktu
感谢大佬分享方法。我后来换了路由器,里面直接就有FullCone的开关,打开以后就再没管过
@Bug侠
请问站长是什么路由器,也想开启远程玩单机大作
@不会蹦的兔子
这款:https://bugxia.com/1481.html
现在跑的PVE,下挂OpenWRT(https://www.right.com.cn/forum/thread-4053752-1-2.html)
新手可以直接刷OpenWRT
我和朋友建立网络,他的是Full Cone,我的是restrict nat,怎么不会建立p2p连接,数据经过服务器中转了
tun/tap网卡能共享网络给PS4这类主机使用吗(类似netch),如果主机能加入虚拟局域网,那P2P游戏的延迟能改善好多
@Siphon
这个问题还真是第一次遇见……好像也没有直接的方法。不过我倒是有个思路,比较麻烦
假设:
A\B是两台不分属两个不同的物理局域网下的PS4
可以通过N2N的网对网的方法(https://bugxia.com/2228.html),实现两个PS4的物理局域网互通,也就间接的实现了加入同一个虚拟局域网
但是验证起来不太方便,这里就仅提供个思路。
@Bug侠
想加群找人试验一下
@Siphon
PS4或者ns可以用lanplay工具配合n2n进行局域网联机,比如玩高达exvs mb的局域网联机
@亮一光
lanplay工具无需n2n地址,目前我有多个公网地址组建。
站长 最关键的nat调整你怎么没写啊
@svenmax
牵扯的东西太多了,没法做到一个通用的方案,比如最基本的路由器,大家都不一样,而且也不一定开DMZ什么的就能改善NAT类型。只能写一个大概的东西,我这边是软路由,集成Fullcone的开关……不能让大家都买个软路由吧…… ,等我折腾明白了,再补充