Tailscale自建drep实现低延迟访问内网

很多人都有特殊需求需要远程访问家庭内网环境,但基本都没有公网ip。即使是有公网ip的服务器,使用frp等将内网映射到公网存在不安全隐患,因此本篇教程通过Tailscale自建drep实现低延迟访问内网并保证安全性。

Tailscale自建drep实现低延迟访问内网

1
2
3
4
5
6
7
8
9
10
11
适合环境:

有自己的公网IP (推荐)

本地ipv6环境

域名一枚

SSL证书

会一点命令基础
  1. 注册Tailscale

https://login.tailscale.com/,进入这个网站注册好你的账户,并添加你的设备,如看不懂英文可使用浏览器自带的网页翻译功能

如果你没有公网ip,到这一步就可以直接使用了。

  1. 自建derp

由于官方自带的derp都在国外,在国内连接延迟高,速度慢,同时又有太多人使用,安全性也得不到保证,因此使用自建的derp中继节点

derp需要域名,如果是国内服务器,域名需要备案,国外的则不需要,国外服务器最好选择香港,台湾,日本等地方,这些地区离国内近,延迟相对来说比较低

2.1 申请证书

首先要将你的公网IP解析到你的域名,然后创建 /root/certs 文件夹

1
mkdir -p /root/certs

安装 acme ,并申请证书

1
2
3
4
5
apt install socat -y
curl https://get.acme.sh | sh
~/.acme.sh/acme.sh --register-account -m xxxxx@gmail.com
~/.acme.sh/acme.sh --issue -d derp.xxx.com --standalone
~/.acme.sh/acme.sh --installcert -d derp.xxx.comg --key-file /root/certs/derp.xxx.com.key --fullchain-file /root/certs/derp.xxx.com.crt

注意将命令中的 xxxx@gmail.com 改为你自己的邮箱,derp.xxx.com改为你自己的域名,证书格式一定要是 derp.xxx.com.crt 和 derp.xxx.com.key

2.2 docker安装derp

本文默认你已经安装好了docker,如果没有安装请参考这个教程进行安装 https://u.sb/debian-install-docker/

1
2
3
4
5
6
7
8
docker run --restart always \
--name derper -p 57860:12345 -p 57861:3478/udp \
-v /root/certs/:/app/certs \
-e DERP_CERT_MODE=manual \
-e DERP_ADDR=:12345 \
-e DERP_DOMAIN=derp.xxx.com \
-e DERP_VERIFY_CLIENTS=true \
-d fredliang/derper:latest

安装完成后访问 https://derp.xxx.com:57860 ,出现这个页面说明配置成功

image

  1. 使用自建的derp服务器

登录到Tailscale网站,找到Access Controls,添加一个自建的derp服务器,如下图所示

image

  1. 通过Tailscale客户端连接到自建的derp服务器

按照以下的配置模板填入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
"derpMap": {
"OmitDefaultRegions": true,
"Regions": {
"900": {
"RegionID": 900,
"RegionCode": "ip",
"RegionName": "Telecom Jiujiang",
"Nodes": [
{
"Name": "900a",
"RegionID": 900,
"DERPPort": 57860,
"STUNPort": 57861,
"HostName": "derp.xxx.ccom",
"InsecureForTests": true,
},
],
},
},
}

如果你只想使用自建的derp服务,将 OmitDefaultRegions 设为true,如果你想创建多个derp服务,代码中的 RegionID 不能相同,RegionCode RegionNam 这两个可以自定义,方便自己管理。

最后点击左下角的 save 保存即可。

  1. 测试使用

使用 tailscale netcheck 命令可以查看你的derp节点

image

使用 tailscale status 命令可以查看你是什么模式,显示 direct 表示你正在使用直连,网络速度取决于的宽带上传

因此,我推荐在有公网ipv6的双端上使用,双端又公网ipv6很容易打洞成功,直接直连使用,而且目前宽带对ipv6的上传限制不是很大,所以用ipv6访问速度非常快,可以达到秒开家里内网4k视频的效果

image

如果显示的是你derp名称,说明打洞失败,使用的是你服务器的公网,速度取决于你服务器的带宽大小,一般是ipv4打洞失败

如果不清楚你网络是否具体ipv6,可以打开 https://ipv6.test6.ustc.edu.cn ,正常打开就说明有ipv6,同时也可以测试你本地的ipv6上传速度。

  1. 防止 DERP 被白嫖

如果你是自建的derp,默认情况下是可以被白嫖,只要别人知道你的derp地址和端口就可以直接使用,因此我们需要修改配置来防止被白嫖。

在derp服务器上安装Tailscale,然后执行以下命令:

1
2
3
4
5
6
7
8
9
docker run --restart always \
--name derper -p 57860:12345 -p 57861:3478/udp \
-v /root/certs/:/app/certs \
-e DERP_CERT_MODE=manual \
-e DERP_ADDR=:12345 \
-e DERP_DOMAIN=derp.xxx.com \
-e DERP_VERIFY_CLIENTS=true \
-v /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock \
-d fredliang/derper:latest

快去愉快的开始你的看片之旅吧!

有什么欢迎在评论区留言


Tailscale自建drep实现低延迟访问内网
http://blog.qyide.cn/2023/12/28/Tailscale自建drep实现内网穿透/
作者
A大
发布于
2023年12月28日
更新于
2023年12月28日
许可协议