经验一:通过OAuth client secre避免key过期
使用docker安装tailscale客户端,对于TS_AUTHKEY变量,其实可以设置成OAuth client secre避免key过期
但有两个条件:
①:必须通过TS_EXTRA_ARGS变量指定设备标签,例如:TS_EXTRA_ARGS=–advertise-tags=tag:container
②:在Access controls中开启自定义设备标签的使用
经验二:阿里云安装tailscale后,更新无法联网问题
这个问题之前困扰了我好久,偶然看到的一篇博文帮助我解决了这个问题。
大致原因是因为安装Tailscale后,会设置一条屏蔽100.64.0.0/10 IP段的防火墙规则,而正好阿里云内网的一些服务位于这些IP段而被屏蔽。
解决方法是:启动tailscale时加入–netfilter-mod=off参数
具体详情查看这篇博文:CGNAT冲突:Tailscale出口节点无网络问题的调试与分析 - Frank's Weblog
最后,附上我的docker-compose
services:
tailscale:
image: tailscale/tailscale:unstable
container_name: tailscale
network_mode: "host"
hostname: aliyun-lite
environment:
- TS_AUTHKEY=tskey-client-xxx?ephemeral=false&preauthorized=true
- TS_EXTRA_ARGS=--advertise-tags=tag:container --netfilter-mode=off
- TS_STATE_DIR=/var/lib/tailscale
- TS_USERSPACE=false
volumes:
- ./state:/var/lib/tailscale
- ./run:/tmp
devices:
- /dev/net/tun:/dev/net/tun
cap_add:
- net_admin
restart: unless-stopped