有关RADIUS如何部署的探究
起因
家中的WiFi很早前已被笔者分成了多个网络进行隔离,包括主网络供自己用,设备网络供智能设备用,访客网络供朋友用,测试网络供测试一些服务时使用。其中访客网路同样也是采用WAP2-PSK
方式,但是一旦要换密码,应用时就会造成同AP上的其他网络中断,且也不方便利用程序定时更换。最近在考虑了一段时间后,决定采用企业级使用的RADIUS认证方式以实现需求。
分析
既然要使用RADIUS,那么必然离不开大名鼎鼎的软件FreeRADIUS,恰好笔者的主路由器是OpenWrt也支持其部署,那就没有问题只待安装配置了。接着考虑安全性和兼容性,在参考了一些文章后,最终决定采用PEAP-MSCHAPv2
认证方式进行部署。至于用户名和密码,则采用最基础的文件方式进行配置,这样只要定时用代码生成对应格式的文件再重启FreeRADIUS即可达到密码轮换的目的。
关于在Git中使用代理的探究
在使用Git推送到GitHub时发现连接不上,顺手查了一下如何设置代理,结果发现网上流传的设置方法有部分谬误。实际上只有http.proxy
这一个配置,而没有很多博文中提到的https.proxy
这个配置。究其原因,个人认为很可能与在Linux或者Windows中设置代理时可以分别设置HTTP、HTTPS的有关,所以很多文章想当然的认为Git有http.proxy
,那必然也有https.proxy
,以致误导读者。因此建议在进行类似配置时,最好还是去查询一下官方的文档为好。至于具体如何设置,可以参照参考1、2中的链接,在此不再赘述。
关于在exFAT中使用软链接的问题探究
起因
在路由器上通过挂载U盘跑了一些程序,但是U盘没两天就频繁掉盘不识别,于是换了个质量好的U盘,将所有文件通过Win10复制了再挂载去执行,但是此时很多却无法启动了,又换回原U盘,此时正常启动。经过排查,发现是U盘中软链接失效的问题,在路由器上通过Shell修复新U盘上对应的几个软链接后,事情解决。但是此时为什么通过Win10复制文件会造成软链接失效的原因,引起了我探究的好奇。
分析
首先确定一点,U盘是exFAT格式,在查询了相关规范后发现其标准并不支持软链接这一操作。所以经Win10复制后,软链接失效是没有问题的。之所以路由器在exFAT上支持软链接,想必是其实现模块在标准上做了一些扩展支持。于是接着往下找路由器相关的问题。
如何在ESP32中使用mDNS(mDNS系列4)
起因
笔者的很多服务都启用了mDNS,因此在使用ESP32做一些小制作时,需要使用mDNS来获取服务地址,如mqtt.local
、influxdb.local
等,故有了本文中的代码。
分析
mDNS组件在IDF v5.0大版本中被移除出默认的内部组件库中(详见参考1),因此需要修改之前的基础库代码,手动添加对应支持。在PlatformIO项目中,我将官方的源码下载到了本地,放在了third_party/mdns
目录下,然后在最外层的CMakeLists.txt中添加了一行list(APPEND EXTRA_COMPONENT_DIRS third_party)
来让编译系统知道这个目录下的第三方组件。接着,在看了官方的文档和源码后(详见参考2、参考3),对相关代码进行了封装,形成了自己的库文件,具体实现见下方代码。
Linux ip6tables 学习
起因
自前几天改造了自己的光猫后,无意中发现为了访问,配的防火墙给的允许范围很大,这样的风险较高。经分析,只要允许ping及WireGuard的UDP流量通过即可满足我当前所有需求。于是将ip6tables -A FORWARD_CUSTOM-j ACCEPT
修改为了具体协议支持ip6tables -A FORWARD_CUSTOM -p icmpv6 --icmpv6-type echo-request -j ACCEPT
、ip6tables -A FORWARD_CUSTOM -p udp --dport 10000 -j ACCEPT
。但是前期因为忘记配置的是IPv6的防火墙,所以将ICMPv6协议写成了ICMP协议,可意外该命令被成功执行了。虽然因为协议错误导致没有达到放行目的,但是该错误却引起了我的好奇。为什么在IPv6的防火墙中,ICMP协议可以被成功执行?IPv6上运行的是ICMPv6协议,如果配置ICMP协议应该会被参数校验的时候校验出来的吧?