一、前言及思考
首先声明,本人是小白玩家,兴趣广而不精,很多东西都是靠豆包一边学一边试研究出来的,所以很多想法都是小白思路,还请大家多多指教。对我来说,Lucky的易用性更高,雷池的防护能力更好,学会这两样好工具以及怎么把他们最简结合起来发挥出最大效果花了我不少时间,以下是我的思考,欢迎大家多多交流。
我的网络环境是动态ipv6公网绑定域名,想来这是最常见的家庭网络条件,也是相对易用性较高的,但是安全防护得做好,不然就相当于**奔了。
二、核心思路
我的核心配置是局域网设置只对外暴露唯一端口1111,lucky负责DDNS、自动申请https证书,以及监听1111端口及3333端口实现反代,雷池监听2222端口。
整体的访问逻辑是这样的:lucky负责动态域名解析,将域名与我的公网ipv6地址绑定,当外网流量通过1111端口访问域名时,流量进入到lucky监听端口,此时lucky不用管域名是什么,直接一股脑将所有流量扔给雷池监听的2222端口,雷池对进来的流量进行清洗防护,随后将清洗过的流量扔给lucky监听的3333端口,lucky从3333端口得到清洗过后的干净流量(保留了子域名,能分辨是对应内网哪个服务)后,再进行反代,通过内部局域网转至对应的内网服务端口。
好处:1、所有流量经过雷池清洗,防护能力大大提升;2、DDNS、https证书、反代配置都在Lucky设置,配置简单方便(雷池不能配置DDNS,申请https证书不能用通配符,每个子域名得单独申请、反代设置个人觉得不够好用,没lucky易用),原本打算用雷池直接替代掉lucky,然后ddns用飞牛自带的,最终出于易用性和维护性还是放弃了;3、后续新增子域名流程简单:首先在LuckyDDNS新增子域名,然后设置3333端口反代至内网服务端口,两步搞定,全程在lucky设置,不用动雷池。4、基本认证账户密码统一,如访问子域名需增加密码认证,仅需在1111端口反代至2222端口这里设置就行了,后续3333端口到内网服务的所有流量都会需要同样的密码认证;如果无需密码认证或者要单独设置密码,那在1111端口到2222端口这里独立添加一条没基本认证的子规则就可以了;5、整个访问过程,外网访问端不会出现可感知的延迟,体验良好。
简而言之,外网流量想要访问到内网设备,就要经过lucky(密码认证)-雷池(专业防护)-lucky(转发对应服务)。**形象的来说,lucky是前台,雷池是保安,内网设备是你的领导,你的领导在一栋大楼里面的某个房间,你不知道领导在哪里。这个时候你有一封信要交给某个领导,得先跟前台对上暗号,然后前台把信给专业保安检查,保安检查无误后把信给回前台,前台再将信根据收件人名称送给对应的领导,整个过程中你见不到领导的面,也不知道领导在哪里,更打不到领导,只能在前台和保安的监督下,与领导进行书信交流。**这样避免了将自身IP和端口全部暴露在公网上(领导办公室设在大街上,人人都看得到),安全防护能力有效提升。
三、感想
这一套防护方案设计断断续续花了我十多天的空余时间,当然大部分时间都花在了学习各种工具和各种网络知识上面,目前自我感觉是达到一个相对理想的状态,也能比较放心的用公网了,这里纯粹是跟大家分享一下。有可能这早就是行业常见的防护方案,只是被我误打误撞碰上了。但没关系,这是我学习路上的阶段性成果,大家如果对上述内容如果指正或者建议,欢迎交流,如果感兴趣的朋友多,我也可以抽空做一个全程详细版的教程,与大家共勉!