今天介绍Tailscale的玩法,重点是白嫖域名和SSL,在这之前先简单介绍一下Tailscale
1、是什么?
Tailscale属于一种虚拟组网工具,基于WireGuard。他能帮助我们把安装了Tailscale服务的机器,都放到同一个局域网。也就是我在家里的NAS和PC,还有父母家的PC,甚至云服务器都能放到同一个局域网。
2、怎么用?
到Tailscale官网下载对应平台的应用。
比如windows安装成功后,登录你的Tailscale账号就可以了,此时会给你分配一个ip,相当于就是局域网的ip
所有平台都登录这一个账号相当于都加入到了局域网,此时就根据局域网里操作一样的
访问window共享直接可以资源管理器里 输入其它设备的ip即可
需要远程访问,打开远程桌面直接输入就可以了
接下来是如何白嫖域名,一般情况下使用局域网ip就可以了,之所以需要域名还是因为有SSL证书的需求:
1、登录Tailscale账户,然后点击DNS,红圈的地方可以自己随机生成二级域名
2、滑到页面最底部,如果这两项不是Disable,就点击打开
3、此时回到Machines界面,找到你的群晖,然后点击ip的下拉箭头,第二个地址就是你的群晖域名地址,点击就可以访问了,但是此时是http而非https协议
4、给群晖上SSL
这一步折腾挺长时间,最好提供简单方式
①打开群晖SSH
②SSH登录后运行如下代码,其中my-domain替换成第一步你生成的域名
sudo tailscale cert my-domain
③将生成的证书下载下来
④打开如下页面新增证书
⑤然后为每个服务配置好
⑥最终效果就是这样
5、现在可以SSL访问了,但是上面步骤太麻烦,所以整理了一个脚本,通过添加任务计划自动更新域名ssl并完成设置
脚本内容如下
#!/bin/sh
TEMPDIR=~/tailscale_cert_update
TS_DNS="dsm918.brill-platy.ts.net"
SYNO_ID=$(cat /usr/syno/etc/certificate/_archive/DEFAULT)
mkdir $TEMPDIR
# Configure certificate for Synology
tailscale cert --cert-file $TEMPDIR/$TS_DNS.crt --key-file $TEMPDIR/$TS_DNS.key $TS_DNS
openssl pkcs8 -topk8 -nocrypt -in $TEMPDIR/$TS_DNS.key -out $TEMPDIR/p8file.pem
cp $TEMPDIR/$TS_DNS.crt /usr/syno/etc/certificate/_archive/$SYNO_ID/cert.pem
cp $TEMPDIR/$TS_DNS.crt /usr/syno/etc/certificate/_archive/$SYNO_ID/fullchain.pem
cp $TEMPDIR/p8file.pem /usr/syno/etc/certificate/_archive/$SYNO_ID/privkey.pem
# Create dir for tailscale in ssl
mkdir -p /etc/ssl/tailscale
cp $TEMPDIR/$TS_DNS.crt /etc/ssl/tailscale/
cp $TEMPDIR/$TS_DNS.key /etc/ssl/tailscale/
/usr/syno/bin/synosystemctl reload nginx
#Clean up
rm -rf $TEMPDIR
6、关于其它Docker容器如何也使用SSL
群晖反向代理服务器中把SSL的地址代理到本地内网IP的服务上就可以了