Windows下使用N2N搭建虚拟局域网联机游戏(重写)

折腾 2018/08/02

之前写了一篇《使用N2N搭建虚拟局域网联机游戏》,但是流程不是很明白,就重写一篇比较傻瓜的教程。

服务端

1.有公网IP?有服务器?想自己搭建服务器(supernode)?

看这里:https://bugxia.com/336.html

2.想自己编译服务端和客户端?

看这里:https://bugxia.com/327.html

3.没有服务器、也不想自建服务器,只想三两朋友组个虚拟局域网联机打游戏?

可以使用本站搭建的服务器(supernode)

本站自建N2N服务端(Supernode)×
服务器:n2n.s1.bugxia.com 端口:9527(v2s版本)
服务器:n2n.s2.bugxia.com 端口:9527(v2s版本)
服务器:n2n.s3.bugxia.com 端口:9527(v2s版本)

下载客户端(edge)

Windows下的N2N 客户端启动器下载:https://bugxia.com/357.html

客户端A

1.解压上述下载的压缩包

比如解压到 D:\n2n_client_windows 如图:

2.设置权限

启动器 v1.2版本后,不再需要单独指定edge文件的权限

打开n2n_client目录,分别选择edge_v1.exe和edge_v2.exe,右键选择属性

设置edge执行文件以管理员身份运行此程序权限

3.安装虚拟网卡

启动器 v1.2版本后,首次运行会自动安装虚拟网卡驱动

运行tap-windows-9.21.2.exe,安装虚拟网卡,一路点击下一步即可。

详细步骤见此:https://bugxia.com/336.html

安装完毕后会在网络适配器界面出现TAP-Windows Adapter V9

4.返回上级目录,运行n2n.exe启动器

点击启动

客户端B

客户端B,包括后续新加入的客户端,除IP设置不同而外,其他设置均需保持一致

一句话:同IP段但不同IP,同服务器和端口,同小组和密码,同版本,是成功组网的前提

如:

朋友A:IP地址:192.168.66.1,组名称:bugxia,组密码:123456
朋友B:IP地址:192.168.66.5,组名称:bugxia,组密码:123456
朋友C:IP地址:192.168.66.12,组名称:bugxia,组密码:123456
朋友D:IP地址:192.168.66.110,组名称:bugxia,组密码:123456
……
……

测试

简单使用PING测试互通情况

键盘Win+R键,打开运行,输入cmd,回车,在命令行窗口下,输入ping 192.168.100.101

关于延迟

引用 lucktu 站长的话:

我认为N2N的边缘节点之间的通讯方式有3种:
一是中转,就是边缘节点(edge)上所有的流量都要通过中心节点,速度最慢;
二是借道,就是边缘节点之间的通讯借用其他的通道来完成。例如当你在两个边缘节点之间运行了多个edge,那么新版的v2.1会借用速度较快的其他edge通道;
三是直连,就是边缘节点之间直接连接通讯,不借助第三方。

恩山论坛 也有相关的解释:

关于打洞的问题,这取决于网络环境了,简单说下:
1、双方中只要有一方是完全锥形NAT(NAT1),可以直连;
2、双方都是非对称型的NAT(受限型NAT:NAT2和端口受限型NAT:NAT3),这种情况可以打洞,通过supernode握手以后,双方的数据不再经过服务端;
3、一方为受限型NAT(NAT2),另一方为对称型NAT(NAT4)可以打洞,通过supernode握手以后,双方的数据不再经过服务端;
4、一方为端口受限型NAT(NAT3),另一方为对称型NAT(NAT4),这种情况无法打洞,数据要走supernode中转;
5、双方都为对称型NAT,这种情况也是无法打洞的,数据要走supernode中转。

我也做了测试:

A和B为同一个物理局域网的设备,并建立N2N虚拟局域网

理论上讲,物理局域网下,A和B的延迟在1ms左右,而N2N网络下,A和B的延迟也应该在5ms~10ms左右

但实际的ping情况是,一开始A到B的延迟在50ms左右(非直连),在不断ping了200次左右时,N2N自动切换为直连模式,ping值只有5ms左右,如图:

所以,想要N2N直连,本地的网络环境也很重要。而关于NAT的东西很玄乎,我到现在也是很迷糊…… :笑哭:

常见问题

无法连接服务器时会重复提示WARNING:Supernode not responding – moving to 0 of 1

成功连接Rx REGISTER_SUPER_ACK myMAC=

常见问题解决方法

1.无法ping通

如果出现一方可以ping通,另一方无法ping通,则很有可能为对方开启了防火墙,关闭防火墙即可

2.无法搜索到对方建立的游戏(房间)

尝试关闭Windows自带防火墙或第三方安全软件 ps.谁建立的游戏,谁关闭,最好都关 :doge: 

参考:https://jingyan.baidu.com/article/17bd8e52083ce685ab2bb839.html

3.无法连接到服务器

检查客户端填写的服务器端口是否正确

检查服务器端口是否在iptables等防火墙中放行

检查客户端是否以管理员权限运行

4.客户端不断重复ERROR等信息

若能正常联机,则可以忽略错误提示

本文标签:


38条评论

  • 许彪 评论于

    站长,两台win10都连接上了centos7的supernode,但是都ping不通对方,显示请求超时,supernode is listening on UDP 9527 (main),两台win10 都关闭了防火墙,都是用的自己家的路由器,没有公网ip,您能帮忙分析一下问题可能出在哪么~~谢谢

    • 许彪 评论于

      @许彪 supernode is listening on UDP 9527 (main)是服务器开启supernode的提示,windows这边ping对方只显示请求超时,表述不清,见谅~~

      • Bug侠 评论于

        @许彪 确定成功连接到supernode了吗(调试窗口返回Rx REGISTER_SUPER_ACK myMAC=)?
        如果连不上supernode,排查建议:
        1、supernode端防火墙是否关闭或放行N2N端口
        2、运营商对UDP数据包是否封锁
        如果能连上supernode,但ping不通,排查建议
        1、检查edge双方组名称、密码、IP段是否一致
        2、更换网络环境、增加edge
        ============
        抱歉,暂时只能想到这么多了,一步一步的排查问题

        • 许彪 评论于

          @Bug侠 谢谢站长,确实已经正常连接到了supernode,CMD窗口:
          Rx REGISTER_SUPER_ACK myMAC=00:FF:36:72:BC:70 [IP:端口号] (external IP:端口号)
          ,edge的IP只有最后一位不同,应该是处于同一段的,后续我再多找几台电脑试一下,如果有小伙伴遇到一样的问题,欢迎一起讨论~~~

    评论(*号为必填项)