效果
首先是连接情况,双端都连接上自建的 Headscale
,
手机使用移动流量,测试一下 ping
值
再试试进入游戏
可以看到是没问题的!
为什么要用 Headscale
比较 Wireguard
,Headscale
增加了 p2p
的模式,Headscale
会在保证两台异地设备相连的同时,尝试升级到 p2p
云服务器安装 Headscale
可以看 Headscale 的官网的安装教程 ,进入云服务器,然后输入如下命令
这里的 HEADSCALE_VERSION
以及 HEADSCALE_ARCH
是版本和你云系统的架构的变量名,填写对应的值,回车
bash
HEADSCALE_VERSION="0.23.0" # See above URL for latest version, e.g. "X.Y.Z" (NOTE: do not add the "v" prefix!)
HEADSCALE_ARCH="amd64" # Your system architecture, e.g. "amd64"
wget --output-document=headscale.deb \
"https://github.com/juanfont/headscale/releases/download/v${HEADSCALE_VERSION}/headscale_${HEADSCALE_VERSION}_linux_${HEADSCALE_ARCH}.deb"
然后等待下载即可,或者可以下载到本地,然后上传到服务器中
下载完成后安装 Headscale
bash
sudo apt install ./headscale.deb
开机自动启动
bash
sudo systemctl enable --now headscale
配置 config.yaml
修改 etc/headscale/config.yaml
文件
bash
# 这里改成你云服务器的 ip 加上 开放的 tcp 端口
server_url: http://你自己的ip/tcp端口
创建反向代理
bash
apt install -y nginx
这里会卡一下
然后到 /etc/nginx/sites-available
这个目录下,编辑 default
文件,替换一下的命令
bash
map $http_upgrade $connection_upgrade {
default keep-alive;
'websocket' upgrade;
'' close;
}
server {
listen 3355;
listen [::]:3355;
server_name 云服务器IP;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $server_name;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
}
location /web {
index index.html;
alias /var/www/web;
}
}
搭建管理 UI
然后下载这个 ui
项目 https://github.com/gurucomputing/headscale-ui
,解压到制定目录
之后开启 headscale
服务,重启 nginx
bash
systemctl start headscale
systemctl restart nginx
创建一个 apikeys
用于给网页授权
bash
headscale apikeys create --expiration 9999d
之后访问 http://ip:端口号/web
就可以了
授权管理 UI
接着把生成的密钥粘贴到这里
添加互联设备
之后新增一个User view
即可,这是我添加的两个设备
然后我在安卓端,用流量连接服务器,并 ping
我的 mac
之后我的 mac
端也可以链接并 ping
通我的手机