如何让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连接
85条评论
大佬您好,想请问一下,我朋友家的网络是restricted cone NAT(测试结果有时候会变成full cone ),我的是symmetric NAT的,为啥我们直接不能建立P2P,只能PSP,我看到您这边写的是有一方是restricted NAT的话 就可以建立成功P2P的啊。请问这个有没有解决方法呀,谢谢大佬
光猫里使用dmz功能指向了我自己的台式电脑,然后家里就只有我一台电脑,惨遭厄运,被网络攻击了
表现为玩游戏的时候突然被锁屏, 上密码。
然后解开以后所有文件资料全变成了乱码格式,百度了一下是遭遇了勒索病毒,
心态崩了,这如何是好。
@超级树
深感抱歉,是本文的疏漏
大佬我尝试了很多方法,也看了你好多文章,目前我已经解决了nat类型,但是还是解决不了ping自己不通,朋友也ping不到我,这个问题怎么解决,麻烦大佬告诉个方法,我该设置的都设置了
@L6B
检查是否给予edge(客户端)管理员权限,导致程序无法给虚拟网卡分配IP
检查本机是否存在多张TAP网卡(比如TeamView就可能会和N2N虚拟网卡冲突),使用 -d “网卡名称” 来指定EasyN2N使用的网卡
@L6B
大佬我现在是手动设置虚拟网卡ip,和小黄鸭ip设置成一样的,然后现在能ping通了,但是这样会有什么缺点吗
老板你好,我想让我的服务器调用我电脑上的接口。服务器公网,我电脑是大内网。能不能实现对接以后服务器调用接口时使用localhost而不是ip地址来调用?因为有跨域问题,所以想用local host
我两台都是sym nat,但还是能点对点。延迟2ms
想咨询下 本来是两台电脑接的同一个路由器下 NAT都是第二种可以显示直连 但我把一台电脑换了个位置之后直接连得光猫不再经过路由器 NAT测试后依然也是2 但是变成了中转 这有什么办法吗
请问大佬 GTFO这样类型的游戏 也是3位玩家加入另一个房主的房间 用另一位羽翼城大佬的某个软件可以连 N2N这个能适用吗 因为不太清楚原理是否一样
站长您好,麻烦问一下,我想用这个跟朋友联机老游戏盟军敢死队,问题是同城同区同运营商(移动的)都延迟特别高,都超过300ms了,试了试您说的这两种办法貌似都没什么用,net类型一直没变化,该咋办呢?
BUG侠请问一下如果N2N放在服务器上启动supernode后,在服务器上搭建游戏服务端但是需要他们进行组网游戏,服务器固定IP后【10.1.0.1】玩家使用N2N链接游戏服务端IP填写10.1.0.1:XXXX,请问使用P2P联机稳定还是中转更稳定!
@大大!
联机稳定性得具体测试才能判断,比如https://bugxia.com/2071.html
上述文章就贴出了一个中转反而比P2P更稳定的例子
@Bug侠
使用N2N服务器中转进行局域网联机,如我之前所说人数10+后,网卡没有关闭但会掉线,WIn系统N2N是否能通过参数来调整虚拟网卡的默认网关,
请教下站长,之前修改了朋友们光猫的Upnp及DMZ主机,都是Full Cone。有阵子没上,最近回来提示端口更改。现在发现我们的NAT类型都变成了Symmetrict NAT。检查光猫的设置并动。
@ftxjmhh
N2N服务端的端口改变,不会影响你本地网络的NAT类型(这两者完全不沾边),建议还是排查本地网络情况
不知道2023年還能不能獲得回覆,我現在用tailscale組虛擬局域網用moonlight,所在城市離家300公里左右,電信和聯通組,互相ping是30-40左右,這算是直連嗎?一直沒辦法做到個位數的延遲。而且經常瞬時高到2 300的延遲又恢復,很影響遊戲體驗,不知道有沒有設置什麼是可以緩解呢
@jeston
1.通过距离和延迟判断是否P2P还真不好说,tailscale是支持P2P的,它提供的中转服务器应该大概率是国外的,所以如果用它的服务器走中转,那延迟应该至少3位数,你的30~40ms延迟应该就是P2P无疑了,参考https://tailscale.com/kb/1094/is-all-traffic-routed-through-tailscale/
2.个位数的延迟很理想,我这边是同城(<10km)同运营商下才能做到,更何况你那边距离远还跨了运营商
3.从几十ms的延迟跨到几百ms,如果这个几百ms是持续性的,那很有可能是从P2P切换到PSP了,说明你的某一方的网络环境出现了波动(原因未知)
4.为了获得一个稳定的延迟,建议你走中转模式,可以搜索“tailscale自定义中转节点”
@Bug侠
我用系統cmd去ping,ttl是128,我查了一下,好像這就意味著中間沒有中轉路由直連的意思麽,幾百ms倒不是持續,可能幾秒鐘又好了,就這幾秒遊戲會串流卡頓,如果確定是直連我也放棄折騰了,中轉應該更超過30-40ms吧,還是說穩定的延遲,即使比30 40高,玩遊戲體驗反而更好
@jeston
1.既然已经判断出是P2P了,如果P2P还不能满足你,那只能走中转模式了
2.中转的延迟及速度质量取决于那台做中转的服务器,假设两台客户端A\B,那中转情况下【A到B的延迟 = A到服务器的延迟 + B到服务器的延迟】。比如是一台美国服务器,从中国出发,不管是A还是B,它们到美国的延迟最低都120ms左右,所以A到B走美国中转,那延迟大概在200~300ms之间,当然还必须保证A和B到服务端的延迟都稳定,这么高的延迟,玩游戏就别想了
3.所以,想要中转情况下的稳定延迟,这台中转服务器一般都是选择不管到A和B延迟都很低的服务器作为中转(比如国内线路服务器),这样才能保证中转时,A到B的延迟做到最低
@Bug侠
另外,补充一点,如果是中转模式,除了延迟,还有得考虑服务器的带宽,如果中转服务器的带宽太小,比如5M(512KB/s),那高码率的串流也就可以放弃了
@Bug侠
我剛剛查了下,tailscale可以使用tailscale status查看連接的方式,顯示:active; direct 就是p2p直連,我看我已經是了,看來延遲已經是不能再縮短了,已經是直連
站长,我想问下达成P2P直连的标志是什么?
我的两台设备组网成功,使用的服务器延迟是50ms,互相ping延迟只有17ms,这样算是P2P连接了吗?
我是想利用局域网传输一些文件的,如果不是P2P好像会被会被封IP,所以很担心。
请问能否在软件某个位置做一个标记,显示当前是否是P2P直连。
最好是有一个开关或者附加参数,强制P2P连接,如果无法实现P2P,就显示连接不上。
大概就这意思,不知道好不好实现
@卖菜小哥
1.P2P的标志目前只有简单的通过【和强制中转下的延迟去比较】,或者【内置的主机列表下的PSP或P2P标识】来判断,后者不准确
2.对,到服务器延迟50ms,如果中转,那AB客户端的延迟至少在50ms以上,你这边才17ms,必须是P2P无疑了
3.如果不是P2P,通过PSP模式大流量的传输,目前的表现是:ISP这边会短暂的封禁该服务器的UDP端口,若干时间后自动恢复(所谓的UDP阻断)
4.强制P2P连接的开关在n2n官方的git上有朋友已经提出了
https://github.com/ntop/n2n/issues/784
只不过目前还没实现……
站长您好!请问edge有固定的教程么?我的网络由电信光猫和小米路由器组成,小米路由器已经设置了DMZ,但是光猫没有超级密码,只能设置端口映射
@ReDawn
客户端附加参数里使用 -p [端口] 即可固定edge的连接端口
参考 https://bugxia.com/n2n_launcher_param
@Bug侠
谢谢大佬!另外还想请教一个事情,因为我们这边群里有少部分人是在国外,可以连上p2p但是延迟不如腾讯云低,虽然可以加-s1但是因为带宽有限(实际上群里的憨憨都会无脑选择服务器中转),有没有办法多开easyn2n呢,我目前设置的参数如下
-a 10.228.87.1
-E
-x 1
-p 52218
-d T1
我是想同时再开一个设置成
-a 10.228.87.2
-E
-x 1
-p 52219
-d T2
-S1
这样网络好的连10.228.87.1走p2p,网络不好的联10.228.87.2走中转
@ReDawn
可以使用命令直接启动edge.exe,参数就是你写的这些,如果不想用配置文件加载,直接拉通行也行。关键就在于安装多个虚拟网卡,让每个edge.exe使用不同的tap网卡,-d 参数就行。安装多个tap网卡本站也记录了:https://bugxia.com/2275.html
———
还有个问题,我发现你举例的两个IP是一个段的,如果用-x都指定为1的话,数据经网关时会冲突,建议设置成一个1,一个2(话说这个-x好像有问题,建议手动修改跃点数)
@ReDawn
我又回想了一下,请忽略我上面补充的那些……
你好,我因为在跟朋友玩文明6,所以直接买了您这边的捐助用户服务器,可是还是一直不稳定,进去玩一会就会ping失败,试了软件里面自带的好几种方法都行不通,明明延迟很低但就是不稳定,p2p直连也试过了我这边是Full Cone,我朋友是Symmetric NAT,但是看说明应该是可以直连的,它是只要有一方是就可以自动连接还是需要别的操作,另外您这边说可以用-S1的命令直接中转,我也试了好像还是一样的问题
@戏子
1.如果出现不稳定的情况,可能是遭遇到了UDP阻断,参阅EasyN2N问题解答【连接正常,但容易中断】部分 https://bugxia.com/2518.html
2.如果有一方是Fullcone,那么不用你操作,一般会自动打通P2P
3.根据第1条,即便使用 -S1 参数,N2N还是走的UDP协议传输
@戏子
网工学习路过 UDP是一种尽力而为的传输协议 换句话说 不稳定
本来我们只是想简简单单的玩个局域网游戏,没想到被逼着学了些奇奇怪怪的知识。我想请教下作者,我跟朋友想远程组局域用p2p,我现在网络状态是动态公网IP,DMZ开启了,端口也映射了54320,我这边N2N配置好了(还在研究中),我朋友加进来是不是只要在他的N2N服务器列表上面填入公网IP加端口就可了?如果局域网组成功了是不是就可以共享文件夹?这样上传下载带宽就会按照我的最大带宽传输数据?
站长请问一下,类型4的话开付费能不能联机
@AAA
NAT类型仅和能否成功建立P2P有关系,和组网没关系。联机成功与否取决于游戏是否支持~
话说,是不是我只要吧这个nat改了之后就会自动给我p2p直连?
@jackpcg1
对,只要NAT类型不是类型4(Symmetric),大概率都可以任意打通P2P
站长超赞! 站长我想请教一下ipv6的问题
前段时间开了个七日杀服务器,服务器本身是full cone类型的网络,用站长easyn2n工具进行联机,总共十来个玩家同时在线基本都是p2p,10-20ms延迟,偶尔才会飙高+丢包;有一个玩家是ipv6直连,延迟直接个位数,十分稳定
所以最近一直在鼓捣ipv6联机,尝试各种方式想达成在客户端做最少的操作甚至无操作或一次性操作,就能通过ipv6来直接进行联机游戏
掉了一堆头发之后基本是没什么成果hhh
ipv6痛点还是比较多,我个人觉得最大有两点
1.很多游戏服务器不支持ipv6
2.很多人没有ipv6,(尽管其实可以有,但不是每个人都会&愿意设置路由器和光猫
第1点我这两天刚好在尝试用端口转发,但终究还是没那个技术又没有前人造轮子,最终成效还是差点意思,而且强依赖客户端有v6,回过头想想感觉可能不如老老实实用n2n
那么问题就来了,N2N我记得是也有ipv6支持的,如果所有人统一走n2n,第1点就不成问题,那么两个同样有ipv6的玩家,通过n2n联机,是否会优先通过ipv6达成稳定高速的p2p呢?公益服务器又是否支持ipv6呢?
如果是的话,n2n应该就是目前网络环境下,小规模游戏联机最好的方案了,既能让没有ipv6的玩家通过p2p来联机,又不怎么影响ipv6玩家之间原本就有的直连体验、还能绕过游戏不支持ipv6的问题,也可以免去服主开放防火墙端口等操作(反正我是觉得能少麻烦一点是一点hh
哦对了,easyn2n的进程守护、服务自启、定时重启这些功能更是相当好用,由衷感谢站长!
@Koishi
非常感谢这么走心的评论!
但是这里有个问题,N2N和大多数软件一样,不支持服务端到客户端之间通过IPv6连接(所以你说的10~20ms的延迟,应该是IPv4下的P2P)
根据官方的文档,目前仅能做到“N2N隧道内传输 IPv6 数据包”,所以前提是你已经和对方通过IPv4组建了N2N,才能走IPv6
那么,既然已经打通了N2N,那还要IPv6搞毛线呢……
ipv6痛点确实很多,尤其是支持的生态还不是很完善,只能是期待将来越来越好吧
————
感谢使用EasyN2N~
@Bug侠
破案了,原来我一直看的不是官方github项目,是这个别人专门为ipv6改过的项目(https://github.com/mxre/n2n),声称支持supernode以v4only、v6only、v4+v6三种模式运行,edge node以v4或v6地址连接supernode
站长,如何强制走中转啊,我和我朋友用自建服务器联机时走的P2P,但P2P丢包率特别高,大概有90%,用L2TP的时候延迟很低无丢包但是搜索不到对方房间
@siri
这里:https://bugxia.com/2071.html
大佬,我这边整成全锥形了,怎么直连呀?直接用我这个电脑开服务器吗?
@唐子峻
不用开服务器,当你们双方组网成功后,N2N会自动尝试进行P2P直连,如果是full cone,成功率会很高
@Bug侠
是直接用免费服务器进行组网吗?
@唐子峻
是的,你直连成功与否和服务器没关系,只要成功连接到N2N服务器,你这边会自动尝试和对方进行P2P组网
@Bug侠
好的,谢谢大佬
新手,成功将自己的类型改为full cone后
获得外网ip就不知道怎么办了,和朋友摸索了半天得不出结果
希望能得到解答,非常感谢
@HXG
噢鬼哥!!
请问我跟朋友在命令窗口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的开关……不能让大家都买个软路由吧……