由于家庭宽带一般没有IPV4公网地址,如果需要访问内网部署的服务,则需要进行内网穿透。Tailscale是一个基于wireguard协议的内网穿透工具,所有部署Tailscale的客户端可以异地相互访问,透过子网路由,可以访问该设备下局域网的服务。博主的就是在内网armbian服务器上部署Tailscale,armbian开启子网路由供内网穿透。像istoreos等提供可视化Ui,并且有Tailscale插件,配置更简单直观。
前期准备
在官网注册账号,登录后台,点击setting->Keys->Generate auth Key,起个名字,有效期最大90天,Reusable开关控制一个或者多个设备认证。保存keys,以后查看不了。后台可以查看加入的设备。
Docker部署
docker和docker-compose配置都已经提供了子网路由功能,根据自己局域网的IP进行替换。
docker run -d --name=tailscaled \
-v /var/lib/tailscale:/var/lib/tailscale \
-v /dev/net/tun:/dev/net/tun \
--network=host \
--cap-add=NET_ADMIN \
--cap-add=NET_RAW \
--env TS_AUTHKEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
--env TS_EXTRA_ARGS="--accept-routes=192.168.50.0/24" \
tailscale/tailscale:latest tailscaled
如果想使用docker-compose部署,可以参考下面的配置。
version: "3.7"
services:
tailscale:
image: tailscale/tailscale:latest
hostname: tailscale
environment:
- TS_AUTHKEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- TS_ROUTES=192.168.50.0/24
- TS_EXTRA_ARGS=--accept-routes=true
- TS_STATE_DIR=/var/lib/tailscale
volumes:
- ${PWD}/tailscale/state:/var/lib/tailscale
- /dev/net/tun:/dev/net/tun
cap_add:
- NET_ADMIN
- SYS_MODULE
restart: unless-stopped
验证总结
在手机上安装Tailscale,登录后会自动加入,手机本身会显示在线的设备,在网页后台也可以查看,然后就可以用手机流量进行测试,经过验证访问局域网部署的服务是没有问题的,但是自己遇到了两种情况不能访问的情况,一个是ddns-go,ddns-go开启了禁止公网访问,一个是使用macvlan网络的docker部署的openwrt,用surge tvos ponte测试完全没问题,由此来看,Tailscale并不是真正的局域网,surge ponte倒是完全的局域网。总之,Tailscale是一个不错的选择。