tailscale的设置与安装
先说一下整体的环境和安装方式
- pve虚拟机专门开了一个lxc容器,用于安装tailscale,并利用此容器转发流量到局域网内的其他机器上,实现外部访问内网所有机器
- 由于tailscale本身的中转服务器derp没有中国的节点,最近的节点是位于东京的,所以此处选择自己搭建一个中继节点
PVE LXC安装tailscale
此处的lxc模板使用的是Debian 11(bullseye)
。
创建一个非特权的CT容器, 模板选择
Debian 11(bullseye)
,其他配置都使用默认配置(网络那儿最好选择DHCP,让路由器自动分配一个IP)安装完成后, 先不要启动,需要修改一些配置
在pve宿主机中,获取信息, 执行命令和返回结果如下, 记录
10, 200
这两个数字, 后面需要用到1
2root@pve:~# ls -al /dev/net/tun
crw-rw-rw- 1 root root 10, 200 Jun 30 23:08 /dev/net/tun在pve宿主机中,修改
/etc/pve/lxc/CTID.conf
文件, 新增如下两行:其中10和200是上一步中获取到的值1
2lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file上述配置完成后, 启动容器,在容器内安装tailscale, 安装文档:https://tailscale.com/kb/1038/install-debian-bullseye, 安装完成后先不要启动tailscale
开启lxc的转发功能,进入lxc容器, 修改
/etc/sysctl.conf
配置文件(一般是有的,将注释去掉就行),修改为如下两行:1
2net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1修改完成后, 使其生效, 执行命令:
sysctl -p /etc/sysctl.conf
启动tailscale, 因为此处是要使用此容器作为转发, 所以需要加上advertise-routes参数, 假设tailscale容器的IP为10.0.0.23, 要转发的网络段为 10.0.0.0/24, 则使用如下命令启动:
1
2# 此处使用的authKey来启动, 也可以不使用这个,具体方法参见tailscale文档
tailscale up --authkey=xxxxx --accept-routes --advertise-routes=10.0.0.0/24上一步使用的authKey是在tailscale的web管理端生成的,具体位置见下图:
- 当tailsale成功连接之后, 登录web端,在对应设备上点击
Edit route setting
, 在弹出框中将subnet routes勾选上,并保存, 至此, 当其他设备连接上tailscale之后,就可以直接通过10.0.0.X的IP直接访问和lxc容器属于同一网段的其他设备。
- 当tailsale成功连接之后, 登录web端,在对应设备上点击
lxc设置tailscale开启自启
以下操作都是在lxc容器内部进行的。
此处使用systemd设置开机自启。在/etc/systemd/system
下新建一个配置文件: tailscale.service
, 文件内容如下:
1 | [Unit] |
然后执行如下命令:
1 | systemctl enable tailscale.service |
使用自定义中继服务器Derp
前提条件:
公网VPS:配置不用太高,阿里云的最低配置就行
VPS开通端口8082和3478:我此处指定了derp的端口为8082, 你也可以指定其他端口
域名
域名对应的https证书: 我此处使用的是阿里云的免费证书
此处为了方便,使用docker部署derp。
在和docker-compose.yml文件的相同目录下,创建certs目录, 并将证书文件放入此目录中。
docker-compose.yml文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15version: "3.9"
services:
derper:
image: fredliang/derper
container_name: derper
volumes:
- ./config/certs:/app/certs
ports:
- 8082:8082
- 3478:3478/udp
environment:
- DERP_DOMAIN=你的域名
- DERP_CERT_MODE=manual
- DERP_ADDR=:8082 # 自定义的端口,也可以换成其他
- DERP_HTTP_PORT=-1然后启动,docker-compose up -d
tailscale配置
登录tailscale的web控制台, 在Access Controls
选项卡下,编辑配置文件, 在配置文件加上如下一段:
1 | // 自定义的中继derp |
具体加的位置如图所示:
验证是否生效:随便在一个已经连接上tailscale的机器上, 执行 tailscale netcheck
,看到的中继列表里如果有你刚加的, 那就说明成功了。