【Tealscale + Headscale + 自建服务器】异地组网笔记

效果

首先是连接情况,双端都连接上自建的 Headscale

手机使用移动流量,测试一下 ping

再试试进入游戏

可以看到是没问题的!

为什么要用 Headscale

比较 WireguardHeadscale 增加了 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 通我的手机

参考

  1. Tailscale玩法之内网穿透、异地组网、全隧道模式、纯IP的双栈DERP搭建、Headscale协调服务器搭建,用一期搞定,看一看不亏吧?
  2. Tailscale 官方手册
相关推荐
袁煦丞20 分钟前
跨平台终端王者Tabby:cpolar内网穿透实验室第632个成功挑战
前端·程序员·远程工作
Sailing22 分钟前
Grafana-mcp-analyzer:基于 MCP 的轻量 AI 分析监控图表的运维神器!
前端·node.js·mcp
阿山同学.42 分钟前
AWS 亚马逊 S3存储桶直传 前端demo 复制即可使用
前端·javascript·aws
Jolyne_1 小时前
grid 实现完美的水平铺满、间隔一致的自适应布局
前端·css
西洼工作室1 小时前
【解决导航栏字体图标渲染导致文本闪烁问题】采用腾讯视频的解决方案
前端·css·css3
WindrunnerMax1 小时前
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
前端·架构·github
CodeSheep1 小时前
宇树科技,改名了!
前端·后端·程序员
Hilaku1 小时前
为什么我们用了 Vite 还是构建慢?——真正的优化在这几步
前端·javascript·vite
XI锐真的烦1 小时前
横向对比npm和yarn
前端·npm·node.js
国家不保护废物1 小时前
🧩 React 组件化进阶:像乐高大师一样搭建你的应用世界!
前端·react.js·ai编程