headscale组网打通群晖局域网内部访问
需求
- 局域网A(家庭):群晖一台 192.168.199.186 、 路由器192.168.199.1 小米路由器;
- 局域网B:我的macbook pro 10.8.99.45;
tip: 图中100.x.y.z为
macbook pro(junyao)
、群晖(homeDS)
、公司电脑(VM-0-2-centos)
组网后的ip,图中192.168.0.x
,为本例局域网A192.168.199.x
内部设备局域网ip
假设家庭内网有一台群晖(homeDS)
安装了 Tailscale 客户端,我们希望其他 Tailscale 客户端macbook pro(junyao)
、公司电脑(VM-0-2-centos)
可以直接通过家中的局域网 IP段(例如 192.168.199.0/24)访问家庭内网的任何一台设备,
我们来尝试实现组网后macbook pro 10.8.99.45
访问我的小米路由器192.168.199.1
搭建headscale服务端
我们在headscale私有部署 中已经将 macbook pro(junyao)
、群晖(homeDS)
、公司电脑(VM-0-2-centos)
进行了组网,组网结果如下,
我们可以通过组网后的ip100.64.0.1
、100.64.0.4
、100.64.0.3
进行p2p互相访问
1 | ID | Hostname | Name | NodeKey | Namespace | IP addresses | Ephemeral | Last seen | Online | Expired |
此时我们要实现的就是 macbook pro(junyao)
访问 群晖(homeDS)
内部局域网的设备访问,比如小米路由器。
配置群晖tailscale
- 1、我们在群晖安装tailscale客户端
- 2、进入ssh,在群晖系统
/etc/sysctl.conf
中增加让其支持 IPv4 与 IPv6 路由转发1
2net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1 - 3、开启tailscale并设置
--advertise-routes
让其打通局域网内部的路由访问,这个网段的所有设备都可以被访问1
tailscale up --accept-dns=false --advertise-routes=192.168.199.0/24 --login-server=http://<ip>:8080
- 4、headscale服务端设置
在 headscale 端查看路由,可以看到相关路由是关闭的。开启群晖路由:1
2
3
4
5headscale nodes list|grep homeDS
2 | homeDS | homeds-2xqvj919 | [96Nns] | junyao | 100.64.0.4, fd7a:115c:a1e0::4 | false | 2022-09-15 02:49:59 | online | no
headscale routes list -i 2
Route | Enabled
192.168.199.0/24 | false1
2
3
4headscale routes enable -i 2 -r "192.168.199.0/24"
Route | Enabled
192.168.199.0/24 | true
官方文档:Subnet routers and traffic relay nodes
现在你在任何一个 Tailscale 客户端所在的节点都可以 ping 通家庭内网的机器了
我们试试用macbook pro 10.8.99.45
访问我的小米路由器192.168.199.1