只使用一个pve lxc容器搞定Tailscale内网穿透,实现多主机轻松访问

本文主要讲述使用pve的lxc容器来安装tailscale并设置数据转发实现内网穿透,只用一台设备即可访问家里所有设备。

详细视频:

创建lxc容器

  1. PVE下载CT模板,此处使用的是Debian12
  2. 创建一个非特权的容器,模板选择刚才下载的Debian12, 网络选择静态IP,选择一个当前网络下还没使用的IP,网关设置为路由器的IP。 其余设置默认即可
  3. 安装完成后, 先不要启动,需要修改一些配置
  4. 在 pve 宿主机中,执行如下命令并记录返回结果,记录 10, 200 这两个数字,后面需要用到。
1
2
root@pve:~# ls -al /dev/net/tun  
crw-rw-rw- 1 root root 10, 200 Jun 30 23:08 /dev/net/tun
  1. 在 pve 宿主机中,修改 /etc/pve/lxc/104.conf 文件, 其中104就是容器的ID。新增如下两行:其中 10 和 200 是上一步中获取到的值。
1
2
lxc.cgroup2.devices.allow: c 10:200 rwm  
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file

安装tailscale

本步骤所有操作都是在容器内进行的,不是pve主机上。

  1. 启动容器,并进入容器内部。用户名root, 密码就是之前创建容器时设置的密码
  2. 允许远程登录,方便后续通过其他ssh客户端操作。修改文件 /etc/ssh/sshd_config, 将其中的PermitRootLogin一行的注释放开,并设置为yes。
1
PermitRootLogin yes
  1. 重启ssh服务,执行命令:systemctl restart ssh
  2. 安装tailscale, 命令如下, 需要一步一步执行:
1
2
3
4
5
6
7
8
9
10
apt update
# 安装vim是方便后续编辑文件,也可以不安装
apt install vim
apt install curl
# 设置tailscale源
curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.noarmor.gpg | tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.tailscale-keyring.list | tee /etc/apt/sources.list.d/tailscale.list
apt update
# 安装
apt install tailscale
  1. 设置tailscale开机自启。在 /etc/systemd/system 下新建一个配置文件: tailscale.service, 文件内容如下, 需要替换authKey和自己网络的网段。
1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=AutoStart tailscale
After=tailscale.service
Requires=tailscale.service
[Service]
Type=oneshot
ExecStart=/usr/bin/tailscale up --authkey=XXXX --accept-routes --advertise-routes=10.0.0.0/24
ExecStop=/usr/bin/tailscale down
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target
  1. 使开机自启生效,执行如下命令:
1
2
systemctl enable tailscale.service  
systemctl start tailscale.service

开启容器转发功能

  1. 使用自己的账号登录tailscale网页端,然后获取authKey, 获取authKey的具体位置如下:
    1. 开启 lxc 的转发功能,进入 lxc 容器, 编辑/etc/sysctl.conf 配置文件(一般是有的,如果没有就新建),修改如下两行:
1
2
net.ipv4.ip_forward=1  
net.ipv6.conf.all.forwarding=1
  1. 修改完成后, 使其生效, 执行命令:sysctl -p /etc/sysctl.conf
  2. 重启 tailscale,执行命令 systemctl start tailscale.service
  3. 当 tailsale 成功连接之后, 登录 web 端,在对应设备上操作如下:
    1. 因为我们这个节点是作为转发的,所以需要将key设置为永不过期,点击disable key expiry
    2. 允许子网路由。点击 Edit route setting, 在弹出框中将 subnet routes 勾选上,并保存。
    3. 至此, 当其他设备连接上 ==tailsca==le 之后,就可以直接通过局域网 IP 访问和 lxc 容器属于同一网段的其他设备。

其他客户端使用

直接去tailscale官网下载对应的客户端,然后使用同一个账号登录即可。

此时在外网就可以直接使用局域网的IP访问,比如10.0.0.1等。

tailscale一些常用命令

  • 查看运行状态(可以判断是走的中继还是直连):tailscale status​​
    • 中继:出现relay 字段
    • 直连:出现direct 字段
  • 查看IP: tailscale ip​​
  • 检查网络(可以查看中继节点的延迟):tailscale netcheck​

只使用一个pve lxc容器搞定Tailscale内网穿透,实现多主机轻松访问
https://tianyaoxiayu.top/posts/29195.html
作者
John Doe
发布于
2025年8月20日
许可协议