前言
最近Steam上线了小时候最爱玩的游戏--红色警戒2, 但是西木工作室早就已经不复存在, EA这个垃圾也非常的不负责任. 上线了Steam, 用情怀圈了一波钱之后, 并没有提供任何的网络联机服务. 这一点甚至不如红警之家. 但为了补票还是为情怀冲了值.
但是呢? 为什么对战平台就可以正常联机呢? 那就不得不提这篇文章介绍的技术--虚拟局域网.
虚拟局域网就是通过互联网来将几台计算机连接起来组成一个假的局域网, 这个局域网中的每个机器都可以拥有同一个网段的内网IP,这一点刚好符合红警2局域网连接的要求.
而如何创建一个属于自己的"局域网"呢?
这就用到一种技术--n2n
正文
安装n2n
承载机器
首先我们需要一个具有公网IP的服务器, 我的服务器是由腾讯云提供的轻量级云服务器,系统则为ubantu20.
确定了承载机器之后,我们就进行安装...
安装步骤
我们选择使用编译安装的方式进行安装
既然是编译安装, 我们首先就需要一个C语言编译器 -- gcc是个不错的选择
apt-get install autoconf make gcc -y
下载n2n, 并进行编译和安装
# 下载n2n的源码
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
如何测试安装是否完成呢?
supernode -h
如果返回了版本以及帮助信息,那么恭喜你,安装完成.
至此安装完成
启动服务端
我们先了解一下帮助信息里都写了哪些参数?
-p 端口 | Supernode监听端口,默认 7654
-F federation名称 | supernode federation名称,默认为 *Federation
-l 主机:端口 | 和 -F 配合,已知的一台Supernode地址和端口
-M | 关闭非用户名密码认证的群组的MAC和IP地址欺骗保护功能
-V 文本 | 自定义字符串(最长19位),用于在管理输出日志中展示
-c 组名称配置文件路径 | 该配置文件中包含允许使用的组名称
-a IP段 | 用于自动分配IP,格式如 -a 192.168.0.0-192.168.255.0/24
-t 端口 | 用于管理supernode
--management_password 文本 | 管理端的密码
-v | 输出更多日志
了解了之后我们就可以启动服务端了
# 实际使用时,可以去掉 -f 参数,使其后台运行
supernode -p 端口号 -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)
至此,服务端编译安装以及启动就完成了!
使用EasyN2N连接服务器
服务端安装完成了,我肯定需要使用我的电脑来注册进这个局域网里
首先下载EasyN2N
启动EasyN2N
在服务器中填入刚在安装的服务端ip以及端口号,并用冒号分割
如果你和我一样没有配置dhcp服务的话,我们就需要自己填写虚拟网IP地址
小组名称就用它随机给的好了
填写好后,单机启动,如果运行日志有如下返回的话,即为客户端启动成功.
但是局域网光有你一个人肯定不行.
邀请你的朋友,也下载EasyN2N
填写内容除了虚拟网IP不能为一样的之外,其他内容和你填写的一模一样.
另外值得注意的是,局域网中的所有电脑的虚拟网IP必须在一个网段内,即为10.10.10网段内的IP
例如:
10.10.10.11
10.10.10.12
10.10.10.13
只有这样你们才可以相互连接
如果好朋友的客户端也像上文一样启动成功之后.
那你就可以在CMD中,通过ping命令和虚拟网IP来和好朋友的电脑建立连接了
结语
参考
鸣谢
N2N技术的开发者
EasyN2N程序的开发者 https://bugxia.com/
帮我做连接测试的好朋友 金鱼 (KOOK里有一群人只有她没在玩游戏)
评论区