【虚拟内网】Tailscale在Docker中部署,组建虚拟局域网以及内网穿透,

链接引导

tailscale官网:https://tailscale.com/download

tailscale的docker官网页面:https://hub.docker.com/r/tailscale/tailscale

获取Auth key(认证key)

打开官网,登录后,点击右上角 setting-Keys-Generate auth key

key的配置如下

拉取镜像

官方命令:

docker run --name=tailscaled -d -v /var/lib/tailscale:/var/lib/tailscale --network=host --cap-add=NET_ADMIN --cap-add=NET_RAW -e TS_AUTHKEY=这里粘贴auth key -e TS_STATE_DIR=/var/lib/tailscale --restart unless-stopped tailscale/tailscale

TS_ROUTES=192.168.111.0/24 【通告子网路由。相当于tailscale set --advertise-routes=。要接受通告的路由,请使用TS_EXTRA_ARGS传入--accept-routes。】

TS_AUTHKEY=【这里粘贴用于验证容器的Tailscale 身份验证密钥

运行容器后配置

终端执行上面命令后,容器会生成,此时打开tailscale官网进行配置

  • 编辑名字
  • 编辑ipv4地址
  • 关闭过期
  • 编辑子路由-进去打钩IP地址

注意

为什么每次容器重启时都会得到一个新的IP地址?

容器最常见的用途是动态的,容器根据负载来来去去。默认情况下,tailscaled将其状态存储在 /tmp 中,并期望成为临时节点

为了支持容器在重新启动后保留其设置和身份的长期服务,需要完成以下几件事:

  • 容器必须提供持久化存储,例如-v /var/lib/tailscale:/var/lib/tailscale
  • 将 TS_STATE_DIR 设置为持久存储已挂载的位置,例如-e TS_STATE_DIR=/var/lib/tailscale

为什么传入连接有效但传出连接无效?

为了支持使用 Linux 套接字的任意进程,tailscaled需要访问/dev/net/tun许多容器不提供的设备。默认情况下,Dockerfile 在用户空间网络模式下运行,其中通过 Wireguard 隧道的传入连接将转发到同一端口,localhost但启动新连接需要使用 SOCKS5 或 HTTP 代理。

要支持来自任何套接字应用程序的传出连接:

  • 容器必须配备TUN设备,例如-d /dev/net/tun:/dev/net/tun
  • TS_USERSPACE必须设置为 false,比如-e TS_USERSPACE=0

留下评论