家庭移动宽带无公网 IPv4 ,但经过一顿检测发现为 NAT1 型,有望实现大内网穿透,规划方案:Tailscale (客户端)+Headscale (服务端)+Derp (中继)+Cloudflare ( Origin rules ,DDNS )+IPv6+natter (开源打洞工具) 在家庭内网准备一台 Linux 虚拟机,做好网络隔离,设置 DMZ 。 打洞检测 docker run --net=host --rm nattertool/natter
如果打洞成功,则可以访问公网端口打开测试页面。 如果打洞失败,将服务器的入站默认策略改为允许,先验证是否能够打洞,才有必要往下开展工作。 CloudFlare API Key 获取
登录 CloudFlare 进入 https://dash.cloudflare.com/profile/api-tokens 点击 Create Token → Create Custom Token ,选择如下三项权限
免费领取源码:公众号 易雾山庄 后台回复消息 领取 headscale 替换.env 域名下的域名为你自己的,修改邮箱为你自己的 粘贴上边的 cloudflare token 到 secrets/cf_api_token 拉起容器 docker compose up -d
多等会,traefik 反代需要获取 tls 证书需要点时间 功能
支持双栈自动切换,最大程度保障回家链路稳定性,确保各种环境下都能顺利接入 自动更新打洞 IP 和端口信息 Headscale 和 Derp 证书统一由 traefik 反代接管,减少打洞端口数量 自动同步 traefik 生成的证书给 derp 使用 自动监测 ipv6 地址变化,并同步更新 ipv6 防火墙仅开放 derp 端口和 stun 端口
项目中以集成了一个客户端,接入指令,建议关闭防火墙操作策略,自行配置比较好,我个人比较信奉内网互访能路由尽量路由,别搞什么源地址转换,不利于审查和网络策略管控。 示例: tailscale up --reset --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
这个节点作为家里的入口枢纽。 其他终端接入参考网上各路教程即可。 在客户端进行网络验证,发现 ipv4 和 ipv6 均正常。
worker 容器日志查看,未发现报错异常。