目前主流的格斗游戏一般都是采用的P2P方式进行对战,国内的网络环境参差不齐,游戏对战体验极差,主流的加速器也仅仅是加速了大厅,对于对局并没有加速效果.最终在大佬的推荐下找到了N2N!
版本选择
N2N
存在众多的版本,如v1
、v2
、v3
、v2s
,如何选择适合自己的版本呢?
V1
此版本为官方N2N
项目v1
版本的修改版,最后一次Commit
为2017
年,目前已被弃用,不建议使用。
V1
项目地址:https://github.com/meyerd/n2n/tree/master/n2n_v1
V2
官方N2N
项目重启后,在各路大神的贡献下,一直在维护并不断完善的版本,也是目前最常用的版本。
V2
项目地址:https://github.com/ntop/n2nV
V3
官方的另一个新版本,使用人数较少,这里不多赘述了。
V2S
此版本为官方N2N
项目v2
版本(v2
项目重启前)的修改版,最后一次commit
为2018
年,极小部分用户仍在使用,但是此版本确是效果
最好的,也是本文选择的版本。
V2S的优点:
1、更容易直连。
2、建立非中转的连接以后,关闭中心节点,只要有通讯,连接关系就不会断。
V2S
项目地址:https://github.com/meyerd/n2n/tree/master/n2n_v2
已编译版本下载
lucktu
大神收集并整理了网友上传编译的可执行版本,包含Windows
、Linux
(包含ARM
)、Mac
、Android
等。
已编译版本下载地址: https://github.com/lucktu/n2n
V2S服务端安装及运行
前往https://github.com/lucktu/n2n 下载已编译的V2S
服务端版本(supernood
)并上传至服务器解压。
修改文件权限为777
sudo chmod 777 supernood
运行服务端程序
supernode -l 端口号 -f
参数说明
-l 指定监听的端口
-f 前台运行(若不加该参数,则为前台运行)
-u 指定运行所用的UID(可选)
-g 指定运行所用的GID(可选)
-v 输出比较详细的log(可选)
服务端如开启iptables\firewalld\ufw
等防火墙,需要放行supernode
所设置的端口,否则客户端无法连接,若端口为8888
则按着以下设置。
#firewalld
firewall-cmd --zone=public --add-port=8888/udp --permanent
firewall-cmd --reload
#iptables
iptables -I INPUT -p udp --dport 8888 -j ACCEPT
service iptables save
service iptables restart
#ufw
ufw allow 8888/udp
V2S客户端使用
前往https://github.com/lucktu/n2n 下载已编译的V2S
对应客户端版本(edge.exe
)。
进入edge.exe
文件所在目录,使用CMD
或powershell
以管理员模式执行以下命令
edge -a 10.10.10.10(使用的内网网关IP(随意填写)) -c username(使用的用户名,连接双方需保持一致) -k password(使用的密码,连接双方需保持一致) -r -l 1.1.1.1:8888(服务器IP及端口)
如之前未安装过虚拟网卡驱动,则还需要安装虚拟网卡驱动。
虚拟网卡驱动下载地址:http://build.openvpn.net/downloads/releases/tap-windows-9.21.2.zip
关于N2N的传输方案
直连
当你和朋友的网络环境比较纯净,NAT状态良好(比如同城市同电信宽带)的情况下,N2N会在参与方之间建立P2P连接
所有的通信都不会经过服务器,延迟能够极大程度降到最低
中转
相反,当参与方网络环境相对复杂(比如校园网,有多层交换),就无法建立P2P连接,所有的通信都会经过服务器来中转
中转模式下,A到B的延迟 ≈ A到服务器的延迟 + B到服务器的延迟
通过NAT
类型解释传输方案
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服务器中转