使用n2n自建虚拟局域网,解决游戏联机问题
背景
在我们玩魔兽争霸,cs1.6这种老游戏通常是通过局域网联机,现在也有很多游戏是通过p2p进行联机比如博德之门3,雨中冒险2等等,在这个时候我们缺少一个局域网的环境,各种传统的网游加速器可能作用不太大了,这个时候我们可以考虑通过n2n,自组一个虚拟局域网,可以保证游戏的流畅不丢包。
n2n示意图:
其中这里有两个重要概念:
Supernode(超级节点): 超级节点是在 n2n 网络中具有特殊角色的节点。它通常是具有公网 IP 地址的节点,它们用于帮助建立和维护 n2n 网络中的连接。超级节点充当了中继服务器的角色,它们允许处于不同子网中的 Edge 节点建立连接,即使它们无法直接进行通信。超级节点维护一个节点列表,帮助节点发现和连接其他节点,从而构建了一个点对点的加密通信网络。
Edge(边缘节点): 边缘节点是 n2n 网络中的普通节点,它们是实际的数据发送和接收节点。Edge 节点连接到超级节点,并通过超级节点来与其他 Edge 节点建立连接。当数据需要在不同节点之间传递时,Edge 节点会通过超级节点进行中继传输。在 n2n 中,每个 Edge 节点都可以与其他节点直接通信,而不必依赖集中式服务器。
所以呢,作为玩家,我们只需要关注边缘节点如何连接中继服务器就行了,网上有一些免费公开的中继服务器(supernode),当你和好伙伴都连接到同一个服务器,并设置好对应的配置,则可以实现虚拟局域网
而作为比较喜欢折腾和有动手的能力的同学,对免费公开的中继服务器延迟等不太满意,可以自己搭建一个中继服务器,并且本文章将在最后分享我自己在使用的一套方案
如何连接n2n的中继服务器,和好伙伴愉快联机
这里我是使用EasyN2N,一个强大的软件,提供了n2n的ui界面,并集成PING、TCP\UDP、iPerf、NAT类型等测试套件
EasyN2N: https://bugxia.com/357.html
我们启动EasyN2N
点击自定义服务器,输入自己搭建的服务器地址,或者获取免费的也可以
点击右上角时钟图标可以查看延迟
然后和小伙伴协商一个名称,需要都填一样
然后点击启动
当有绿色小勾则表示连接成功了
若无法ping通,可能是电脑防火墙没放行
如何构建n2n的中继服务器(supernode)
拥有一个公网ip
可以购买云服务器,或者内网穿透,等等,网上都有教程,建议国内云服务器,低延迟且不掉包
这里我使用国内某云服务器作为演示,操作系统是 Ubuntu 22.04.1 LTS
n2n安装
有多种方式
github项目地址:
https://github.com/ntop/n2n/
- release下载安装
wget https://github.com/ntop/n2n/releases/download/3.0/n2n_3.0.0-1038_amd64.deb
sudo dpkg -i n2n_3.0.0-1038_amd64.deb
- 自己构建源码
git clone https://github.com/ntop/n2n.git
cd n2n
./autogen.sh
./configure
make
supernode 启动
启动非常简单
supernode -p [端口]
# 比如运行在8333端口
supernode -p 8333
记得防火墙开放8333端口的UDP
然后就大功告成了,