树洞剪藏#剪藏#树洞剪藏

NAS党福音:近乎零成本优雅地实现家庭网络异地组网(三)

2024 年 12 月 6 日1 分钟
分享Twitter / XTelegram微博

同步来源:树洞剪藏 源站剪藏 ID:253 原文地址:https://mp.weixin.qq.com/s/x_BZF2cKrMY_9q804nOqcg

打开原文 · 打开源站剪藏快照


NAS党福音:近乎零成本优雅地实现家庭网络异地组网(三)

set 限制解除

NAS党福音:近乎零成本优雅地实现家庭网络异地组网(三)

原创

易雾君

易雾山庄

2024年12月02日 23:50 重庆

本篇来讲讲一个完整接入案例。假定你的 headscale 服务地址为:https://hs.evling.tech 快速构建项目,测试机器系统为 debian12 ,假定你的主域名为evling.tech,邮箱地址 [email protected] ,邮箱用于tls证书签发,如下命令对应改为你自己的即可。

git clone https://github.com/evling2020/hsmaker.git cd hsmaker sed -i s/example.com/evling.tech/g .env sed -i s/CERT_EMAIL=.*/ [email protected] / .env chmod 0600 certs/acme.json

将按照第一篇的方法获取到的cloudflare token替换掉 secrets/cf_api_token 里的内容。随即开启你的异地组网之旅。

docker compose up -d

稍等一段时间,初始化traefik需要申请tls证书,用如下命令查看情况

docker logs -f headscale-traefik --tail 100

也可以用如下命令查看证书字段是否为空,如下有内容输出,则表示证书还未获取成功。

cat certs/acme.json |grep null

如果你等了很久也没能获取到证书,请使用如下命令重启 traefik

docker compose restart traefik

当你获取到证书时,应该就能通过外网访问到headscale的后台管理页面,https://hs.evling.tech/web

获取token,执行如下命令

docker exec -it headscale-server headscale apikeys create

将获取的到的api key 贴到headscale后台的设置栏,并点击保存按钮。

来到用户页面创建两个命令空间分别为 users 和 guest,规划是将边界的节点划分到guest命名空间下,个人的设备划分到users用户空间下,便于后期作访问控制。

linux docker 接入 上一篇其实就已经有一个linux客户端的接入实例了,在本系列中充当边界路由器,连接外部终端和家庭内网的核心枢纽,同时它还配合derp完成客户端验证,防止derp被白嫖,就拿它接入举例。

进入客户端容器 docker exec -it headscale-client /bin/sh # 执行接入指令 tailscale up --accept-dns= false --accept-routes --login-server=https://hs.evling.tech --advertise-exit-node --advertise-routes= 10.32.0.0 / 16 , 10.8.0.0 / 16 , 172.16.0.0 / 16 --netfilter-mode= off

--accept-dns=false:该节点本身在家庭内网,dns解析就不用tailscale接管了。 --advertise-routes:路由声明,假定家里的网段有如下几个供给外部终端访问 10.32.0.0/16,10.8.0.0/16,172.16.0.0/16 --advertise-exit-node:出口网关设定,该节点需具备出口节点属性,方便我在公共场合wifi安全用网,全局加密流量回家再出网。 --netfilter-mode=off:防火墙设置,禁止节点控制防火墙软件,它默认会作源地址转换 执行完命令后,会出现如下阻塞页面,把mkey取出来备用。

重新打开一个ssh会话,执行如下添加设备命令,该节点属于边界节点,放到guest,后期会给予最小访问权限

docker exec -it headscale-server headscale nodes register --user guest --key mkey:45cefcbd1ca2cac40b26c87d0621e555c55bbb0fd91f7fc37bf613ee6fcdbb5f

成功注册,在后台设备页面查看,我们会发现一个在线的条目如下:

至此,我们完成了家庭核心枢纽节点的注册,并将其声明为一个出口节点,可全局接管其他设备流量代理其上外网。 当然,你有让其他设备代理联网的需求,需要将出口网关配置伪装转换,大部分路由器默认基于出入接口,无需配置,视情况而定。 此节点你还需要开启转发能力,和防火墙转发放行。路由转发功能确保/etc/sysctl.conf下如下两行取消注释

sysctl -p

修改nftables的转发策略为accept,iptables同理,自行搜索

执行命令立即生效

nft -f /etc/nftables.conf

在headscale服务端开启其他节点声明的路由信息,先罗列下,默认都是没有开启的。

docker exec -it headscale-server headscale route list

按需逐一进行开启

docker exec -it headscale-server headscale route enable -r 1 docker exec -it headscale-server headscale route enable -r 2 docker exec -it headscale-server headscale route enable -r 3 docker exec -it headscale-server headscale route enable -r 4 docker exec -it headscale-server headscale route enable -r 5

手机接入 手机安装好tailscale客户端,打开运行,选择右上方的设置按钮。

接着选择Accounts

点击右上方的三个小点,选择“Use an alternate server”

紧接着输入的你的headscale服务地址,我这里是https://hs.evling.tech

点击添加账户后,随即会弹框,复制下mkey备用

将获取到的mkey使用如下命令在服务端将该手机加入users命名空间。

docker exec -it headscale-server headscale nodes register --user users --key mkey:d82baaf67924130cf327642c0f4d55d80cb713e107dfcf93c8ea4359f9ca760d 最后可查看到添加成功。

通过点击“EXIT NODE”,可选择对应线路,上边已经添加了一个家庭宽带线路,可供选择

至此,已完成了手机的接入。

预览时标签不可点

家庭基建 26 异地组网 3 nas 2 headscale 1 tailscale 1

家庭基建 · 目录

上一篇 NAS党福音:近乎零成本优雅地实现家庭网络异地组网(二)

个人观点,仅供参考

关闭

更多

小程序 广告

搜索「undefined」网络结果

微信扫一扫 关注该公众号

当前内容可能存在未经审核的第三方商业营销信息,请确认是否继续访问。

继续访问 取消 微信公众平台广告规范指引

: , 。

视频 小程序 赞 ,轻点两下取消赞 在看 ,轻点两下取消在看 分享 留言 收藏

关闭

家庭基建

详情

更多

相关文章