Tailscale实现内网穿透、异地组网、远程访问
Tailscale实现内网穿透、异地组网、远程访问
文章目录
Tailscale简介
Tailscale实现内网穿透、异地组网、远程访问,纯IP搭建DERP服务器,点对点传输,更好的使用体验!轻松打通内外网!群晖、威联通NAS,替代zerotier。
Tailscale 是一种用于在互联网上安全连接设备的网络即服务 (NaaS) 产品。它可以帮助您轻松地将您的设备连接到一个虚拟网络中,无论它们位于何处。Tailscale 使用 WireGuard 协议进行加密,提供强大的安全性和可靠性。
主要功能
- 简单易用:Tailscale 易于设置和使用,即使您没有网络方面的专业知识。
- 安全可靠:Tailscale 使用 WireGuard 协议进行加密,提供强大的安全性和可靠性。
- 灵活可扩展:Tailscale 可以扩展以支持各种规模的网络。
适用场景
Tailscale 适用于各种需要安全连接设备的场景,例如:
- 远程工作:Tailscale 可以帮助您安全地连接到您的工作网络,无论您在家中、咖啡馆还是其他地方工作。
- 团队协作:Tailscale 可以帮助您的团队成员安全地连接到共享的资源和应用程序。
- 物联网 (IoT):Tailscale 可以帮助您安全地连接您的物联网设备。
使用Tailscale的优势
- 提高安全性:Tailscale 使用 WireGuard 协议进行加密,可以保护您的数据免遭窃听和攻击。
- 降低成本:Tailscale 可以帮助您节省网络管理和维护的成本。
- 提高效率:Tailscale 可以帮助您提高工作效率,让您可以轻松地访问您需要的资源。
如何开始使用Tailscale
要开始使用 Tailscale,请按照以下步骤操作:
- 创建一个 Tailscale 帐户。
- 下载并安装 Tailscale 客户端软件。
- 将您的设备连接到您的 Tailscale 网络。
总结
Tailscale 是一种安全、可靠且易于使用的网络即服务产品。它可以帮助您轻松地将您的设备连接到一个虚拟网络中,无论它们位于何处。
参考资料
下面是使用Tailscale的详细教程。
注册登录Tailscale账号并下载客户端
注意:Windows操作系统版本至少为Windows 10。免费版本可以支持100台设备。
1、官网地址:https://tailscale.com/
2、下载客户端
点击右上角的download
接下来就是常规的下载安装啦!
等待安装完成。
3、注册登录Tailscale账号
安装完成之后会跳转到登录界面。

这里我使用谷歌账号登录。下面是登录成功界面。
登录成功之后会跳转到下面的界面。

点击跳过介绍。会来到Tailscale控制台。

禁用秘钥过期
禁用秘钥过期,设备就能长期使用,否则180天后会过期,需要重新添加。
简单使用
可以看到每个设备有个内网IP。图中显示的设备是咱们Windows电脑添加的设备,可以远程连接去使用。

复制内网IP。Win + R输入mstsc。回车。打开远程连接。
点击连接。输入此设备的用户名和密码就能登录。
此时连接速度会很慢,原因是流量会走官方的drep中转服务器,路程很远,下面可以搭建自己的drep中转服务器。
设备添加 - 组网
在tailscale上的设备都是能相互访问的。

需要添加设备,只需在相应设备上下载客户端,登录账号即可。
Linux安装Tailscale,实现设备添加
1、安装docker
安装教程可以参考以下博客。
VPS安装Docker、docker-compose
2、拉取镜像
docker pull tailscale/tailscale
3、获取Tailscale 身份验证密钥并运行容器
获取秘钥,点击设置。
点击keys
生成key
随便输入描述,点击生成key
复制key,注意:这个key是一次性的,也可以勾选上面的Reusable。
运行容器 - 这里需要替换为自己的秘钥
docker run -d --name=tailscaled -v /var/lib:/var/lib -v /dev/net/tun:/dev/net/tun --network=host --cap-add=NET_ADMIN --cap-add=NET_RAW --env TS_AUTHKEY=这里替换为自己的身份验证秘钥 tailscale/tailscale

可以看到服务器运行tailscaled 成功。再看控制台。此时设备成功添加。
Tailscale 中的 DERP 简介
由于 Tailscale 官方的 DERP 服务在中国大陆地区并没有服务提供,并且使用的人也非常的多,以至于中继的体验并不好,因此可以自建一个中继服务来改善这个问题。
什么是 DERP?
DERP 是 Tailscale 自研的一种通用目的包中继协议,运行在 HTTP 之上。它用于帮助 Tailscale 设备之间建立连接,尤其是在某些情况下,直接点对点连接不可行时,DERP 充当中继站点。
DERP 的优势
可靠性: DERP 使用 HTTP 协议,可以穿透大多数防火墙和 NAT 设备,提高连接可靠性。
安全性: DERP 使用加密协议传输数据,保证数据安全。
易用性: DERP 无需配置,自动建立连接,方便使用。
DERP 的工作原理
Tailscale 设备会尝试建立点对点连接。
如果点对点连接失败,设备会尝试使用 DERP 中继服务器建立连接。
设备会向 DERP 中继服务器发送连接请求,其中包含目标设备的 IP 地址和端口号。
DERP 中继服务器会将连接请求转发给目标设备。
目标设备收到连接请求后,会建立与 DERP 中继服务器的连接。
DERP 中继服务器会将数据转发给目标设备和源设备。
DERP 的应用场景
在内网环境中,DERP 可以帮助 Tailscale 设备建立连接,即使设备不在同一个局域网内。
在公网环境中,DERP 可以帮助 Tailscale 设备穿透防火墙和 NAT 设备,建立连接。
在移动环境中,DERP 可以帮助 Tailscale 设备在不同网络环境下保持连接。
自建 DERP - docker版本
准备:域名解析,小伙伴如果是用来测试的话最好用国外的服务器,比较方便。
创建 [derper/] 目录,将 derper 相关的配置都放在改目录下。
1、创建 derper/docker-compose.yaml 文件,内容如下:
version: '3'
services:
derper:
container_name: derper
image: fredliang/derper
restart: always
ports:
- 3478:3478/udp
- 19850:19850
environment:
- DERP_DOMAIN=derper.dengzhilin.fun
- DERP_CERT_MODE=letsencrypt
- DERP_ADDR=:19850
- DERP_VERIFY_CLIENTS=false
volumes:
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
networks:
headscale-network:
networks:
headscale-network:
external: false
说明:
环境变量:详细的环境变量可以参考镜像页面。
DERP_DOMAIN: derper 的域名。一定要修改成你的域名。一会儿 Caddy 配置需要使用该容器名。
DERP_CERT_MODE: letsencrypt。帮你申请 HTTPS 证书。
DERP_ADDR: [:19850],监听端口在 19850 端口上面。因为都挂在 headscale-network 网络上,所以 caddy 是可以找到同一个网络中的 derper:19850 服务。
备注:这里我尝试使用默认的 443 端口,在配置 Caddy 反向代理时就会出错。
DERP_VERIFY_CLIENTS:默认为 false,大家都可以使用,也就是只要别人的 tailscale ACLs 里面配置你的 DERP 信息,就可以白嫖。修改 true 后,你就需要在 DERP 的节点上安装 tailscale,只有你自己 tailscale 连接的节点才可以使用你这个 DERP
derper镜像使用的是fredliang/derper地址:https://hub.docker.com/r/fredliang/derper
使用它的原因是,使用者最多,并且最近有更新。
2、运行docker-compose
docker compose up -d
3、云主机开放端口
上面使用了端口3478 和19850注意协议类型,3478是udp协议。
检查derp是否可用,在浏览器输入服务器IP:19850。出现如下所示表示可用。
4、配置caddy反向代理
创建Caddyfile并粘贴以下内容:服务器IP和域名填自己的
# 域名换成自己的
caddy.xxxxx.fun {
reverse_proxy 服务器IP:19850
encode gzip
}
启动caddy
docker run -d --name=caddy -p 80:80 -p 443:443 -p 443:443/udp -v $PWD/Caddyfile:/etc/caddy/Caddyfile --restart=always caddy:latest
通过域名测试derp服务是否好使。

5、在tailscale上使用
在tailscale的访问控制里面配置如下:
注意需要HostName填写自己解析的域名。
{
"derpMap": {
"OmitDefaultRegions": true,
"Regions": {
"900": {
"RegionID": 900,
"RegionCode": "customderpRegionCode",
"RegionName": "customderpRegionName (dzl)",
"Nodes": [
{
"Name": "customderpNodeName",
"RegionID": 900,
"STUNPort": 3478,
"DERPPort": 443,
"HostName": "derp.hk.xxxxx.fun",
"InsecureForTests": false,
},
],
},
},
},
"acls": [
{"action": "accept", "src": ["*"], "dst": ["*:*"]},
],
}
点击保存配置

测试derp配置好后能不能正常使用。
打开cmd,ping tailscale提供的设备IP。没有出现超时则表示正常。下面我测试的延迟比较高是因为我用的是香港的服务器,因为解析到国内服务器需要备案,很是麻烦。
更多推荐




所有评论(0)