使用N2N搭建虚拟局域网联机游戏(服务端)

N2N, 分享, 折腾 2018/04/14

客户端

本站已搭建免费公益N2N服务端,并制作了N2N的启动器,如需直接联机游戏,请移步:

使用N2N搭建虚拟局域网联机游戏(客户端)

服务端(Linux)

以下安装编译基于CentOS 7 64bit,版本为n2n 3.0.0尽量使用同版本服务端和客户端,避免发生兼容性问题,导致无法连接

注:以下安装方式二选一

RPM安装

yum install libzstd -y
wget https://github.com/ntop/n2n/releases/download/3.0/n2n-3.0.0-1038.x86_64.rpm
rpm -i n2n-3.0.0-1038.x86_64.rpm

编译安装

编译环境

#CentOS
yum install autoconf automake libtool git kernel-headers -y
#Ubuntu
apt-get install autoconf make gcc -y

开始编译

wget https://github.com/ntop/n2n/archive/refs/tags/3.0.tar.gz
tar xzvf 3.0.tar.gz
cd n2n-3.0
./autogen.sh
./configure
make && make install

启动服务端

详细的服务端参数见这里 EasyN2N 服务端(Supernode)附加参数

#实际使用时,可以去掉 -f 参数,使其后台运行
supernode -p 9527 -f

若服务器开启了如iptables\firewalld\ufw等防火墙,需要放行supernode所设置的端口,否则客户端无法连接

#firewalld
firewall-cmd --zone=public --add-port=9527/udp --permanent
firewall-cmd --reload
#iptables
iptables -I INPUT -p udp --dport 9527 -j ACCEPT
service iptables save
service iptables restart
#ufw
ufw allow 9527/udp

另外,如果使用的阿里云、腾讯云等云服务器,还需要单独再在安全组中放行使用的端口(UDP)

服务端(Windows)

下载 EasyN2N,界面菜单中打开服务端

选择服务端的版本(默认v3,推荐v3),一键启动

详细的服务端参数见这里 EasyN2N 服务端(Supernode)附加参数

和Linux端类似,开启了Windows防火墙的机器需要注意放行指定的端口,或关闭防火墙

另外,如果使用的阿里云、腾讯云等云服务器,还需要单独再在安全组中放行使用的端口(UDP)



265 条评论

  • 小小崽 评论于 回复

    站长好,请问cmd客户端下的操作,能做到一个程序里填点基本参数直接傻瓜运行吗?没有电脑基础的表示有很大的困难。。。

    • Bug侠 评论于 回复

      @小小崽
      本站做的N2N启动器就是edge命令行的傻瓜式操作……不知道是不是你想要的……https://bugxia.com/357.html

  • 小小崽 评论于 回复

    楼主你好,请问有windows版的N2N服务器吗?我处于公司的内网环境下,想跟其他的处于内网环境下的同事一起游戏,但是找不到方法。我们没有Linux的电脑、、、

    • Bug侠 评论于 回复

      @小小崽
      有的啊,就在本页,请往上翻翻……

      • 小小崽 评论于 回复

        @Bug侠
        今天的网站怎么回事,图片都打刷不开了,已经刷新N次了。。。想看看图片教程的。。

  • 扇子 评论于 回复

    Bug侠 你好(听说你能立刻收到通知,,)
    我准备用N2N联机星际争霸1,游戏局域网采用UDP联机
    WIN7用V1 网络搭建并能 PING通,和实现共享文件
    无法搜索到游戏(双方均关闭防火墙,无第三方防御软件)

    • Bug侠 评论于 回复

      @扇子
      不好意思,这两天没注意到消息……
      星际我还没试过,但是理论上来说,一般没有N2N搞不定的联机游戏,出问题基本都是客户端这边的问题。
      我晚上下个星际1,试试以后再回复你 :笑哭:

      • 扇子 评论于 回复

        @Bug侠
        :笑哭: 谢谢大哥,等你消息啦

        • Bug侠 评论于 回复

          @扇子
          晚上记录一篇折腾的教程……

          • 扇子 评论于 回复

            @Bug侠
            如果需要我可以配合你 测试

    • Bug侠 评论于 回复

      @扇子
      嗨~我这边测试了,两个版本,一个3G多的什么官方原版(可以选择UDP和IPX),和一个100多M的那个1.08中文版(只可以选IPX),配和【Win10免IPX补丁】,前者无论UDP和IPX都无法搜索到对方,后者打上补丁,就可以使用IPX方式搜到对方,可以正常联机。

      • 扇子 评论于 回复

        @Bug侠
        3G 是重置版,,1.09版本可以用UDP 连吗 ? 什么补丁有链接吗,WIN7 有相关补丁吗?

        • Bug侠 评论于 回复

          @扇子
          UDP协议后续我再折腾看看,我这边试了,也是无法搜到
          不过IPX协议已成功,请参阅 https://bugxia.com/1749.html

  • 墨绿 评论于 回复

    你好站长 我想问一下能ping通对方而且防火墙也关了 但在 无主之地3 还是搜不到对方,其他游戏又可以

    • Bug侠 评论于 回复

      @墨绿
      不好意思啊,我也没细研究过无主之地3的联机,我猜想很多游戏联机机制可能不太一样,导致无法搜到。如果其他游戏可以的话,那说明n2n组虚拟网是没有问题的,所以还得从游戏这边排查一下。 :害羞:

  • Hosigus 评论于 回复

    站长好,首先感谢您的教程,非常有用。
    想向您询问一个特殊情况:我的服务端是ubuntu,启动了服务。客户端是windows。两个都是我自己用ntop/n2n的dev分支编译(交叉编译)的。服务端端口能正常通信(使用nc测试连接),服务端启动服务后客户端连接在”edge started”过后没有日志输出,即没有正常连接,也没有报错信息。当客户端连接一个错误的端口时,有错误信息输出。
    请问您可以给我一些提示或建议吗?

    • Bug侠 评论于 回复

      @Hosigus
      唉,我也是一知半解,所以只能是盲猜一番了。
      =============
      1.有没有尝试使用其他人编译的?或者是meyerd的n2n?同样是没有输出吗?
      2.拿着你编译的edge,换到别人的电脑或者其他网络环境再测试一次呢?
      3.nc是通的,应该是只能说明端口没有问题,问题还是发生在edge和supernode通信的过程中导致打洞不成功,这个得翻源代码逐行分析。

  • 有信 评论于 回复

    站长你好,问题是这样的,能ping通,我的外网ip是192.168.0.105,在本机上创建游戏服务器,房间名称是192.168.0.105:7777,我设的n2n是192.168.10.4,小伙伴是192.168.10.1,小伙伴搜不到服务器。

    • Bug侠 评论于 回复

      @有信
      有几个不太明白的地方:
      1.外网ip是192.168.0.105?是你的路由器给的地址对吧,192.168.10.4是N2N指定的地址,然后房间名称是192.168.0.105:7777?7777是什么端口?这里有点不太明白
      2.你和朋友在不同的网络环境下,需要通过N2N联机对吧

      • 有信 评论于 回复

        @Bug侠
        1.是路由器ip,7777是游戏的端口,应该可以忽略,感觉上猜测需要connect 192.168.0.105才能连上游戏
        2.不在同一个地方,他家和我家的样子。

        • Bug侠 评论于 回复

          @有信
          明白了,也就是使用N2N组网的时候无法搜到对方,我把问题好像想复杂了。
          几个排查步骤:
          1、确认双方的N2N客户端均出现” Rx REGISTER_SUPER_ACK myMAC=……“的字样,表示连接上supernode服务器
          2、尝试ping对方的虚拟IP,如果确认已连上supernode服务器,并且双方都在同一个虚拟局域网网段内,但无法ping通,建议关闭windows防火墙再试。
          3、如果能ping通,但搜不到,可以尝试使用CS之类的自带调试台的游戏,使用connect命令手动连接到对方房间

          • 有信 评论于 回复

            @Bug侠
            1,2没问题,能ping通的,有一些其他游戏可以玩。
            3,问题在于不是所有游戏都能调出控制台,connect。假如可以connect,猜测这个游戏需要connect 192.168.0.105才可以。
            4,有没有可能让游戏只使用n2n的虚拟网卡
            (war3搜不到房间,晚上用cs试试。)

            • Bug侠 评论于 回复

              @有信
              我也不清楚有些游戏搜寻房间的机制
              之前有个评论和你的情况类似,当时我对war3也测试了一下,情况如下:
              ============
              我这边和朋友下了魔兽3测试了一下,同时也测试了CS、流星,都是可以正常联机的。见图:
              https://s2.ax1x.com/2019/02/07/ktQu4J.png
              https://s2.ax1x.com/2019/02/07/ktQmEF.png
              https://s2.ax1x.com/2019/02/07/ktQnN4.png
              不过测试过程中,发现一个问题:
              A建立的房间,B能看见也能加入;而B建立的房间,A无法看见也无法加入,但是双方都能ping通。
              于是就尝试把B的电脑防火墙关闭,重启游戏,再次建立房间,A就可以看见B的房间并成功加入游戏。
              ============

              • 有信 评论于 回复

                @Bug侠
                我想知道你用的是什么系统测试的,win7还是win10。
                可以确定不是防火墙的问题,试过双方都关闭防火墙,war3依旧搜不到房间,互相看不见
                cs是connect连上的,不是搜到的
                有没有可能让电脑以虚拟网卡为主

                • Bug侠 评论于

                  @有信
                  这是当时的截图,Win10 1803,我和我朋友都是Win10。
                  自定义程序使用指定网卡,这个路子我还没研究过,不过我这边确实是折腾了半天防火墙、路由器什么的就能搜到了,具体是不是防火墙导致的,还不能下定论。
                  不过既然能connect连上,说明N2N是通的,服务端是没问题的,更多的还得从客户端这边下手研究研究。

                • Bug侠 评论于

                  @有信
                  对了,还有一位博主对N2N有很深的研究,你可以参考参考他博客里的文章:http://www.lucktu.com/archives/783.html

  • 阿杜 评论于 回复

    站长你好,我的意思是V2版本的那个管理端口怎么用(默认是5645),如何管理?这个端口能否修改?

    • Bug侠 评论于 回复

      @阿杜
      不好意思,这个参数我也没细研究过 :笑哭:

  • 阿杜 评论于 回复

    您好,请问这个服务端在WIN7 命令行下如何运行?能详细说下吗?本人菜鸟,您上文只说了一句很简单带过,不懂:((

      • 阿杜 评论于 回复

        @Bug侠
        非常感谢,!!测试成功。另外问下如果我要自己定义管理端口的话,是不是就需要自己重新编译服务端,自己定义端口了?

        • Bug侠 评论于 回复

          @阿杜
          -l 可以指定端口,比如上面命令的9527,可以任意替换其他未被占用的端口

    评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)