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

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

最近在折腾的一件事:朋友天南海北,如何进行局域网游戏?

若干年前,一伙同学约战网吧,CS、红警之类的联机游戏玩的不亦乐乎,如今再想找回当年的感觉已经非常不容易。其中一个比较直接的原因是,不在一个局域网内。

捣鼓了一些很古老的虚拟局域网软件Hamachi和LAN Bridger。问题很多,延迟奇高,放弃……

接着就是各种尝试不同的方案,最终找到了一个比较完美的解决方案:N2N

相对于其他虚拟局域网方案,N2N在网络环境良好的情况下,能够实现P2P直连,有效的降低虚拟局域网的延迟,即便无法直连,通过服务器中转,也能获得不错的延迟

只要支持局域网的联机游戏,N2N都支持。目前我个人已测试成功的有:

CS、红警2、红警3、星际争霸1、魔兽争霸3、DOTA、方舟生存进化、文明6、群星Stellaris

流星蝴蝶剑、人类一败涂地、百战天虫、求生之路1&2、我的世界、火炬之光2、帝国时代2

……

直连状态Ping:

非直连状态Ping(服务器中转):

客户端

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

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

搭建服务器准备

一台有公网IP的服务器、VPS等,作为服务端

服务端(Linux)

N2N根据功能特性不同,分为官方版(v2)和分支版(v2s),官方版v1和分支v2s由于年久缺更,已经不再推荐使用

注:git最新dev分支兼容性较差,不推荐使用旧版edge(客户端)连接新版supernode(服务端)

这里以CentOS 7 下编译N2N(92dfa67)为例,该版本支持自动分配IP

yum install autoconf automake libtool git -y
git clone https://github.com/ntop/n2n.git -b dev
cd n2n/
git reset --hard 92dfa67
./autogen.sh
./configure
make && make install

启动服务端,一行命令的事

supernode -l 端口号 -f

参数说明
-l 指定监听的端口
-f 前台运行(若不加该参数,则为前台运行)
-u 指定运行所用的UID(可选)
-g 指定运行所用的GID(可选)
-v 输出比较详细的log(可选)

服务端如开启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

服务端(Windows)

win下的客户端(包含服务端)

v.2.7.0 r523 92dfa67 for Windows x86 & x64

https://file.bugxia.com/s/YkMisJagRejZSL2/download

解压到任意目录,比如:E:\SystemFile\Desktop\n2n_win

管理员模式打开CMD,运行

cd E:\SystemFile\Desktop\n2n_win
supernode.exe -l 9527 -v

和Linux端类似,开启了防火墙的机器请注意放行指定的端口