【硬核教程】外网访问家庭局域网!真正实现设备间互联互通!| Tailscale + 自建DERP服务器

【硬核教程】外网访问家庭局域网!真正实现设备间互联互通!| Tailscale + 自建DERP服务器 | D1科技站

影片教学

bilibili
https://www.bilibili.com/video/BV1zLaPz6Ep3/

准备工作

首先使用SSH远程登录到云服务器(VPS),然后在其命令行执行下面的指令。

切换至超级管理员用户
sudo su
进入root用户目录
cd ~
更新包管理工具,获取最新软件列表
apt update
进入root用户目录
apt install wget git openssl curl -y

搭建Go语言环境

检测是否已经安装有Go环境
go version
下载Go语言压缩包(海外地区)
wget https://go.dev/dl/go1.25.0.linux-amd64.tar.gz
下载Go语言压缩包(大陆地区)
wget https://golang.google.cn/dl/go1.25.0.linux-amd64.tar.gz
移除可能存在的Go语言文件残余
rm -rf /usr/local/go
解压Go压缩包到/usr/local/路径下
tar -C /usr/local -xzf go1.25.0.linux-amd64.tar.gz
将Go语言持久化加入系统环境变量,并立即生效
echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
source /etc/profile
检查Go语言是否已经安装好
go version
*大陆地区切换使用内地下载源 (Go 1.13 及以上)
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

搭建Derp服务

编译并安装tailscale derper模块
go install tailscale.com/cmd/derper@latest
创建文件夹并移动derper到合适位置
mkdir /usr/local/derp
mkdir /usr/local/derp/bin

mv /root/go/bin/derper /usr/local/derp/bin
创建系统服务配置文件(务必完整复制粘贴这串多行指令,并替换自己服务器的IPv4地址)
cat > /etc/systemd/system/derper.service << EOF
[Unit]
Description=Tailscale DERP Server
After=network.target
Wants=network.target

[Service]
User=root
Group=root
ExecStart=/usr/local/derp/bin/derper -certmode=manual -certdir=/usr/local/derp -hostname=你的服务器公网IPv4地址 -a :33331 -http-port=33332 --verify-clients
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target
EOF
启用并立即启动Derp服务
systemctl enable derper 
systemctl start derper
检查Derp服务运行状态,并点击键盘q键退回命令行
systemctl status derper
进入Derp目录检查生成的HTTPS证书密钥
cd /usr/local/derp 
ls

配置Linux防火墙

安装ufw防火墙
apt install ufw
检查防火墙状态
ufw status
开放必要端口,如果你的云服务器上还自定义了其他服务,请开放对应的端口
ufw allow 22 
ufw allow 33331 
ufw allow 33332 
ufw allow 3478
启用ufw防火墙
ufw enable

配置云服务器提供商的防火墙

在服务器控制台,找到配置防火墙的菜单,按照以下配置手动开放这几个端口

测试Derp服务是否上线

在浏览器访问以下网址,忽略不安全提示,点击继续访问,若出现Derp页面,说明服务已上线

https://你的服务器公网IPv4地址:33331

将服务器加入Tailscale局域网

安装Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
开启Tailscale
tailscale up
复制命令行中出现的https://login.tailscale.com/x/xxxxxxxx网址,粘贴到浏览器中,登录后即可将服务器加入Tailscale网络

使用自建Derp替代官方Derp

进入Tailscale控制台,点击顶部菜单栏的“Access controls”,点击“JSON editor”,在第一层大括号内粘贴以下内容,之后点击底部“Save”保存更改

"derpMap": {
		"OmitDefaultRegions": true,
		"Regions": {
			"900": {
				"RegionID":   900,
				"RegionCode": "myRegion1",
				"Nodes": [
					{
						"Name":             "900",
						"RegionID":         900,
						"DERPPort":         33331,
						"IPv4":             "你的服务器公网IPv4地址",
						"InsecureForTests": true,
					},
				],
			},
		},
	},

后续操作

将各个设备加入Tailscale局域网后,可以使用设备的Tailscale局域网IP地址对其进行跨互联网访问,若P2P直连可以建立,那么网速和延迟都可以达到最好的效果。若不能建立直连,使用自建Derp进行中继仍能提供可接受的效果。家庭运营商可以提供公网IPv6地址,借助公网IPv6,设备可以实现P2P直连,这需要在家庭路由器和光猫中开启公网IPv6(IPv6 WAN),并保证Windows网卡已开启IPv6协议支持,有兴趣的朋友可以尝试。借助Tailscale实现基于IPv6的P2P直连比直接使用IPv6进行远程访问要安全很多,因为不需要将IPv6设备直接暴露到公网,也不需要手动开放防火墙或是做端口映射或端口转发。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部