[i=s] 本帖最后由 gunana 于 2025-2-15 21:55 编辑 [/i]<br />
<br />
这是自己在参考了各位老哥的方案,并结合自己的需求,做的一套方案。为了防止自己忘记,记录于此,以供参考。(写得比较啰嗦,请轻喷)
设备及网络情况
我的设备是一台中柏双网口N100小主机,平时放在老家(西南地区),我在东部某省工作。家里的联通宽带支持公网ipv6,但是不支持公网ipv4。我单位网络不支持公网ipv4/ipv6。
需求
我的网络访问需求是:日常可以通过FNID访问家里的nas(网页版和app版)、可以通过自己的域名访问家里搭建的服务和飞牛nas、可以通过异地组网,以局域网的形式访问家里搭建的服务和飞牛nas,以及路由器等服务。同时,无论是通过域名访问,还是通过异地组网访问,都想要做登录验证或限制,避免恶意登录。
方案思路
由于家里的宽带支持ipv6,因此可以利用这一点实现ddns域名访问(搭建服务1),以及FNID公网访问(飞牛本身有提供此服务),还可以基于此进行异地组网(搭建服务2)。
域名访问方案
前提:购买一个域名,并登录域名服务商控制后台,进行实名认证,生成SecretId和SecretKey备用。
在飞牛nas搭建Lucky,在“设置”内进行基础配置。点击“动态域名”,在子模块“设置”中进行“动态域名全局WebHook设置”(可选,目的是为了通过动态消息获取最新ipv6地址);点击“添加任务”,进行动态域名配置(参考:使用lucky重定向实现去端口访问、网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS)。特别提醒,这里在添加同步记录时,请以泛域名形式(如“*.fnnas.com”)解析到AAAA,这样便于后续通过a.fnnas.com、b.fnnas.com等域名形式,不带端口访问内网服务。
按上述进行配置后,就可以在“web服务”中配置反代,并通过各子域名安全访问内网服务了(提醒:为了内网服务安全考虑,建议在开启web服务时,为无登录验证网页或有登录验证,但是比较重要的服务开启“安全设置”中的“基本认证”),还可以实时查看访问来源等日志信息,补充了飞牛nas无各子服务统一日志的不足。此外,lucky的反代端口,大家可以试试80或443是否可用,我测试发现我的443端口可用,因此直接使用了443端口,这样在用域名访问时,就可以不用再输某个端口,直接通过“https://*.fnnas.com”访问相应服务了。大家如果在lucky的设置了http转https重定向服务(参考上述第二篇文章),直接输入“ *.fnnas.com”就可以访问相应服务,都不用再敲https:// 。
FNID访问方案
直接在飞牛系统的“系统设置”-“远程访问”里面开启FN CONNECT即可。
异地组网
我尝试过目前比较新的VNT、Easytier等,也尝试过Zerotier、Tailscale等,最终选定了Tailscale。具体部署请参考:docker下部署tailscale、究极喂饭教程,手把手教你内网穿透。
上述服务均可通过docker进行安装,我平时都是开启飞牛防火墙的,在部署完上述服务,并开放相应端口后,发现VNT、Easytier、Zerotier的速度非常慢,或连接后无法使用,或速度特别慢,与老哥们部署后的跑满带宽等情况完全不一致,当时也不知道问题在哪,遂放弃。后来在家里部署完Tailscale后,感觉速度虽然也不快,但是也勉强偶尔可以用一下(这里留个问题的悬念)。
由于近期返回东部工作,回来后发现tailscale连接后延迟达到1000+,基本上打不开网页,而且飞牛网页端和app也没法通过FNID进行连接,显示可能未开启远程访问,域名也没法访问内网服务了!没办法的情况下,我就用ipv6直接访问飞牛服务,把防火墙关闭了。然后又尝试域名访问、FNID访问、异地局域网访问。突然,全都能访问了!而且tailscale的速度还不慢,基本跑满了!这时我才发现了之前一直不知道的点,速度慢和不可访问可能是由于我的防火墙设置!!!
之前我是开启了防火墙,并只开放了相应服务特定的端口,但是我通过1panel的“系统”-“进程管理”中的“网络”,发现fn-connect和tailscale等服务,除了明显的特定端口(我已开放了)外,还有很多的随机端口。当我把这些随机端口(不确定是否随机端口,但是好像会变化)加入防火墙放行端口后,即使开启了防火墙设置,三种外部网络均能访问,且访问的速度都非常快。因此我推测是相应的端口被我屏蔽了,才导致无法通过公网或异地组网进行访问。
由于按上述操作后,有时用三种方式访问还是有点 卡,因此为了保持服务的稳定性,我把飞牛防火墙的出站规则改成了“若下列规则均不符合时,允许访问”,以避免一些必要,但是我不知道的端口被我屏蔽掉。此后服务一直比较稳定了。
后续
目前我已经实现了通过飞牛网页和app以FNID形式访问nas;通过各子域名访问nas(含网页和app端)及内网各项服务;通过异地组网方式,在外通过局域网形式访问内网服务,以及飞牛app访问nas,同时还可以访问家里局域网的路由器管理页面(即点对网,这个我本来没发现,也是突发奇想,想着既然可以通过tailscale访问内网部署的各项服务了,是不是也可以访问192.168.1.1,于是试了一下,发现真的可以!我昨天看了下教程,这个点对网若通过VNT来配置,好像还比较复杂,但是tailscale就很简单)。同时还通过lucky及其中的CorazaWAF、ip过滤+飞牛防火墙出入站端口规则+页面账号密码认证,使得外部网络只能通过特定子域名+特定端口访问内网部署的各项服务并接受账号验证,其他非法子域名被我重定向至“中国青少年发展基金会”捐赠页面(中国青少年发展基金会)。而且也无法再通过ipv6+端口的形式访问内网服务,一定程度上保护了内网各项服务安全性。
此外,由于单位网络不支持ipv6,工作电脑不支持连接wifi,好在办公环境对nas及内网服务需求不大,主要在宿舍时,个人电脑需要使用。因此我通过用手机开热点给电脑使用的方式(参考:笔记本如何使用手机热点进入ipv6通道、手机开热点使用ipv6 和 联通WiFi配置ipv6),使电脑也获得了公网ipv6,可以像使用手机一样,通过各项外网或tailscale异地局域网访问nas及内网服务。现在可以愉快地玩耍啦~
当然,上述操作仍然存在一些问题和安全风险,希望能够与大家进一步交流,完善改进。