TailScale子网路由设置
通过设置子网路由设置,让子网路由器充当网关,将流量从Tailscale网络中继到物理子网来,访问这些没接入tailscale组网的设备(如打印机、嵌入式设备等)。也就是说,内网地址可以在局域网中使用,也可以在加入tailscale组网的机器中远程直接访问。
通过设置子网路由设置,让子网路由器充当网关,将流量从Tailscale网络中继到物理子网来,访问这些没接入tailscale组网的设备(如打印机、嵌入式设备等)。也就是说,内网地址可以在局域网中使用,也可以在加入tailscale组网的机器中远程直接访问。
1.安装
curl https://get.acme.sh | sh -s email=my@example.com
wget -O - https://get.acme.sh | sh -s email=my@example.com
2.切换CA
默认使用 ZeroSSL环境,切换为 Let's Encrypt
#./acme.sh --set-default-ca --server letsencrypt
[Sat Mar 16 18:18:38 CST 2024] Changed default CA to: https://acme-v02.api.letsencrypt.org/directory
3.注册账号
# ./acme.sh --register-account -m my@example.com
[Sat Mar 16 18:18:50 CST 2024] Create account key ok.
[Sat Mar 16 18:18:50 CST 2024] Registering account: https://acme-v02.api.letsencrypt.org/directory
[Sat Mar 16 18:18:53 CST 2024] Registered
[Sat Mar 16 18:18:53 CST 2024] ACCOUNT_THUMBPRINT='W6bnhp6UFPHuOC4C60_wcAVaf4DW2CFmEcX0PEVNyD4'
4.生成证书
使用nginx服务器模式, acme.sh 可以从nginx的配置中自动完成验证, 不需要指定网站根目录
# ./acme.sh --issue -d www.mydomain.com --nginx
acme.sh生成cert、cert key、CA cert、 full chain certs证书
5.生成derper需求证书
# .acme.sh/acme.sh --install-cert -d www.mydomain.com --key-file /root/ssl/www.mydomain.com.key.pem --fullchain-file /root/ssl/www.mydomain.com.cert.pem
[Sat Mar 16 22:53:38 CST 2024] The domain 'www.mydomain.com' seems to have a ECC cert already, lets use ecc cert.
[Sat Mar 16 22:53:38 CST 2024] Installing key to: /root/ssl/www.mydomain.com.key.pem
[Sat Mar 16 22:53:38 CST 2024] Installing full chain to: /root/ssl/www.mydomain.com.cert.pem
# mv www.mydomain.com.cert.pem www.mydomain.com.crt
derper包含证书名称必须同hostname名称
# derper -c=/root/derper.conf -hostname=www.mydomain.com -a :8443 -stun -http-port=8445 -certmode=manual -certdir=/root/ssl/
其中/root/ssl/目录下必须有www.mydomain.com.crt、www.mydomain.com.key文件
DERP 即 Detoured Encrypted Routing Protocol,这是 Tailscale 自研的一个协议:
它是一个通用目的包中继协议,运行在 HTTP 之上,而大部分网络都是允许 HTTP 通信的。
它根据目的公钥(destination’s public key)来中继加密的流量(encrypted payloads)。
Tailscale 会自动选择离目标节点最近的 DERP server 来中继流量
Tailscale 使用的算法很有趣,所有客户端之间的连接都是先选择 DERP 模式(中继模式),这意味着连接立即就能建立(优先级最低但 100% 能成功的模式),用户不用任何等待。然后开始并行地进行路径发现,通常几秒钟之后,我们就能发现一条更优路径,然后将现有连接透明升级(upgrade)过去,变成点对点连接(直连)。
因此,DERP 既是 Tailscale 在 NAT 穿透失败时的保底通信方式(此时的角色与 TURN 类似),也是在其他一些场景下帮助我们完成 NAT 穿透的旁路信道。 换句话说,它既是我们的保底方式,也是有更好的穿透链路时,帮助我们进行连接升级(upgrade to a peer-to-peer connection)的基础设施。
1.安装go环境
wget https://golang.org/dl/go1.22.1.linux-amd64.tar.gz
tar -xzf go1.22.1.linux-amd64.tar.gz
sudo mv go /opt/go
sudo ln -s /opt/go/bin/* /usr/local/bin/
设置环境变量
echo "export GOROOT=/opt/go" >> /etc/profile
echo "export GOPATH=/home/root/.go" >> /etc/profile
echo "export PATH=$GOPATH/bin:$GOROOT/bin:$PATH" >> /etc/profile
source /etc/profile
检查go是否安装成功
go version
2.安装derper服务
go install tailscale.com/cmd/derper@main
如果安装失败,换国内镜像安装:
go env -w GOPROXY=https://goproxy.cn,direct
TailScale
属于底层组网工具,能帮助我们把安装了Tailscale服务的机器,都放到同一个局域网。TailScale
底层依赖于wireguard
,但在此基础上,分离了控制平面和数据平面。
数据平面:以WireGuard
在您的计算机、VM或节点与网络中的任何其他节点之间创建一组极其轻量级的加密隧道。
控制平面:密钥交换和协调,引入coordination server
用于公钥的共享放置,coordination server
只负责交换一些密钥及下发配置,不负责转发数据流量。
特点
WireGuard®
保护Tailscale
用户共享您的设备CL
限制对设备的访问。