由于云服务器高配价格高,很多人想要利用家里的电脑主机运行方舟服务器
而由于没有内网,只能使用内网穿透技术,但是无法实现多通服务器
这边提供一个技术解决方案


一、问题分析

出现情况: 方舟服务器能够启动,且能通过收藏列表找到,但是在服务器进行传送时,无法搜索到其他的服务器

原因分析: 是由于本地服务器访问方舟官网服务器访问进行类似的信息注册流程的问题,出口流量是通过内网服务器所在的网络进行访问的。
(盲猜,让游戏客户端可以再非官方服务器进行搜索)
所以从方舟官网的角度来讲,你的出口ip是本地的对外出口网络,而不是反向穿透代理的公网ip,所以方舟官网无法通过验证访问。

解决方案: 如果能够让服务器进行注册的时候,也走的公网ip服务器的代理,是不是就能够解决问题(PS:确实可以)

技术方案: 思路就是让内网服务器的对外访问的流量也走公网代理服务器。
应该有更简单的方案,针对进程进行单独的路由转发,或者是针对ip,
这边当时是为了实验,简单实验考虑使用了虚拟VPN技术,也就是openvpn 或是 wireguard,由于openvpn已经过时,且搭建麻烦,故选择 wireguard,将服务器所有流量都转到了公网服务器。


二、解决流程

1、搭建wireguard服务器端

具体每个操作系统的搭建都比较类似,可以自行百度,也可以查看官网:https://www.wireguard.com/install/

1.1、安装

centos:

  yum install epel-release elrepo-release
  yum install yum-plugin-elrepo
  yum install kmod-wireguard wireguard-tools

debian:

apt install wireguard

1.2、配置

先生成秘钥,用于服务器与客户端的认证

wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

然后生成或者编辑配置文件

vim /etc/wireguard/wg0.conf
[Interface]
##虚拟ip网段
Address = 10.13.13.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = 上面生成的秘钥
##启动指令,eth0是你可以对外网络访问网卡
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
##停止指令,eth0是你可以对外网络访问网卡
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

启动关闭指令:

 wg-quick up wg0
 wg-quick down wg0

修改sysctl.conf,允许ip的流量转发

net.ipv4.ip_forward = 1
 sysctl -p

设置 iptables 的 filter 表 FORWARD 链,允许来自 wg0 和发往 wg0 的包流量通过

$ iptables -t filter -A FORWARD -i wg0 -j ACCEPT
$ iptables -t filter -A FORWARD -o wg0 -j ACCEPT

2、搭建wireguard客户端

2.1、安装

与服务器端安装一致,查看上文

apt install wireguard

2.2、配置

一样的先生成秘钥,用于认证

wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

编辑配置文件

vim /etc/wireguard/wg0.conf
[Interface]
PrivateKey = 客户端私钥
## 当前服务想要的虚拟网段ip
Address = 10.13.13.5/24


[Peer]
PublicKey = 服务器的公钥
Endpoint = 服务器ip:51820
AllowedIPs = 0.0.0.0/0

一样的启动关闭指令:

 wg-quick up wg0
 wg-quick down wg0

2.3 服务器配置

来到服务器,设置允许客户端

 wg set wg0 peer 客户端公钥 allowed-ips 10.13.13.5

然后就可以尝试看一下当前的公网ip

curl "http://api.k780.com/?app=ip.local&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json"

然后就可以启动服务器了


未完待续…

上一篇 下一篇