使用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客户端下的操作,能做到一个程序里填点基本参数直接傻瓜运行吗?没有电脑基础的表示有很大的困难。。。
@小小崽
本站做的N2N启动器就是edge命令行的傻瓜式操作……不知道是不是你想要的……https://bugxia.com/357.html
楼主你好,请问有windows版的N2N服务器吗?我处于公司的内网环境下,想跟其他的处于内网环境下的同事一起游戏,但是找不到方法。我们没有Linux的电脑、、、
@小小崽
有的啊,就在本页,请往上翻翻……
@Bug侠
今天的网站怎么回事,图片都打刷不开了,已经刷新N次了。。。想看看图片教程的。。
Bug侠 你好(听说你能立刻收到通知,,)
我准备用N2N联机星际争霸1,游戏局域网采用UDP联机
WIN7用V1 网络搭建并能 PING通,和实现共享文件
无法搜索到游戏(双方均关闭防火墙,无第三方防御软件)
@扇子
不好意思,这两天没注意到消息……
星际我还没试过,但是理论上来说,一般没有N2N搞不定的联机游戏,出问题基本都是客户端这边的问题。
我晚上下个星际1,试试以后再回复你
@Bug侠
谢谢大哥,等你消息啦
@扇子
晚上记录一篇折腾的教程……
@Bug侠
如果需要我可以配合你 测试
@扇子
嗨~我这边测试了,两个版本,一个3G多的什么官方原版(可以选择UDP和IPX),和一个100多M的那个1.08中文版(只可以选IPX),配和【Win10免IPX补丁】,前者无论UDP和IPX都无法搜索到对方,后者打上补丁,就可以使用IPX方式搜到对方,可以正常联机。
@Bug侠
3G 是重置版,,1.09版本可以用UDP 连吗 ? 什么补丁有链接吗,WIN7 有相关补丁吗?
@扇子
UDP协议后续我再折腾看看,我这边试了,也是无法搜到
不过IPX协议已成功,请参阅 https://bugxia.com/1749.html
你好站长 我想问一下能ping通对方而且防火墙也关了 但在 无主之地3 还是搜不到对方,其他游戏又可以
@墨绿
不好意思啊,我也没细研究过无主之地3的联机,我猜想很多游戏联机机制可能不太一样,导致无法搜到。如果其他游戏可以的话,那说明n2n组虚拟网是没有问题的,所以还得从游戏这边排查一下。
站长好,首先感谢您的教程,非常有用。
想向您询问一个特殊情况:我的服务端是ubuntu,启动了服务。客户端是windows。两个都是我自己用ntop/n2n的dev分支编译(交叉编译)的。服务端端口能正常通信(使用nc测试连接),服务端启动服务后客户端连接在”edge started”过后没有日志输出,即没有正常连接,也没有报错信息。当客户端连接一个错误的端口时,有错误信息输出。
请问您可以给我一些提示或建议吗?
@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,小伙伴搜不到服务器。
@有信
有几个不太明白的地方:
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.不在同一个地方,他家和我家的样子。
@有信
明白了,也就是使用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试试。)
@有信
我也不清楚有些游戏搜寻房间的机制
之前有个评论和你的情况类似,当时我对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连上的,不是搜到的
有没有可能让电脑以虚拟网卡为主
@有信
这是当时的截图,Win10 1803,我和我朋友都是Win10。
自定义程序使用指定网卡,这个路子我还没研究过,不过我这边确实是折腾了半天防火墙、路由器什么的就能搜到了,具体是不是防火墙导致的,还不能下定论。
不过既然能connect连上,说明N2N是通的,服务端是没问题的,更多的还得从客户端这边下手研究研究。
@有信
对了,还有一位博主对N2N有很深的研究,你可以参考参考他博客里的文章:http://www.lucktu.com/archives/783.html
站长你好,我的意思是V2版本的那个管理端口怎么用(默认是5645),如何管理?这个端口能否修改?
@阿杜
不好意思,这个参数我也没细研究过
您好,请问这个服务端在WIN7 命令行下如何运行?能详细说下吗?本人菜鸟,您上文只说了一句很简单带过,不懂:((
@阿杜
win下的服务端也是一样的启动方式:
1.打开命令行(cmd)
2.输入命令 D:\test\supernode -l 9527 -f
如图:
https://s2.ax1x.com/2019/10/30/KfL6UO.png
@Bug侠
非常感谢,!!测试成功。另外问下如果我要自己定义管理端口的话,是不是就需要自己重新编译服务端,自己定义端口了?
@阿杜
-l 可以指定端口,比如上面命令的9527,可以任意替换其他未被占用的端口