起因

今天在调整自己的博客的时候,启用了不蒜子的统计功能,但是发现统计数据异常,于是尝试最小代价修复问题。

分析

经过一番Google,发现该问题早有人提出,并且已经有了修复方案,但是并不完美,在Safari上有硬伤。而巧合的是在今年初有人上线了Vercount服务,改进了不蒜子。但是如果要在Hexo中实现和不蒜子一样的效果,得动手改些代码。经过衡量,决定在启用NexT主题的不蒜子统计配置的基础上将不蒜子代码修改为Vercount的代码。

阅读全文 »

起因

家中的WiFi很早前已被笔者分成了多个网络进行隔离,包括主网络供自己用,设备网络供智能设备用,访客网络供朋友用,测试网络供测试一些服务时使用。其中访客网路同样也是采用WAP2-PSK方式,但是一旦要换密码,应用时就会造成同AP上的其他网络中断,且也不方便利用程序定时更换。最近在考虑了一段时间后,决定采用企业级使用的RADIUS认证方式以实现需求。

分析

既然要使用RADIUS,那么必然离不开大名鼎鼎的软件FreeRADIUS,恰好笔者的主路由器是OpenWrt也支持其部署,那就没有问题只待安装配置了。接着考虑安全性和兼容性,在参考了一些文章后,最终决定采用PEAP-MSCHAPv2认证方式进行部署。至于用户名和密码,则采用最基础的文件方式进行配置,这样只要定时用代码生成对应格式的文件再重启FreeRADIUS即可达到密码轮换的目的。

阅读全文 »

在使用Git推送到GitHub时发现连接不上,顺手查了一下如何设置代理,结果发现网上流传的设置方法有部分谬误。实际上只有http.proxy这一个配置,而没有很多博文中提到的https.proxy这个配置。究其原因,个人认为很可能与在Linux或者Windows中设置代理时可以分别设置HTTP、HTTPS的有关,所以很多文章想当然的认为Git有http.proxy,那必然也有https.proxy,以致误导读者。因此建议在进行类似配置时,最好还是去查询一下官方的文档为好。至于具体如何设置,可以参照参考1、2中的链接,在此不再赘述。

阅读全文 »

起因

在路由器上通过挂载U盘跑了一些程序,但是U盘没两天就频繁掉盘不识别,于是换了个质量好的U盘,将所有文件通过Win10复制了再挂载去执行,但是此时很多却无法启动了,又换回原U盘,此时正常启动。经过排查,发现是U盘中软链接失效的问题,在路由器上通过Shell修复新U盘上对应的几个软链接后,事情解决。但是此时为什么通过Win10复制文件会造成软链接失效的原因,引起了我探究的好奇。

分析

首先确定一点,U盘是exFAT格式,在查询了相关规范后发现其标准并不支持软链接这一操作。所以经Win10复制后,软链接失效是没有问题的。之所以路由器在exFAT上支持软链接,想必是其实现模块在标准上做了一些扩展支持。于是接着往下找路由器相关的问题。

阅读全文 »

起因

笔者的很多服务都启用了mDNS,因此在使用ESP32做一些小制作时,需要使用mDNS来获取服务地址,如mqtt.localinfluxdb.local等,故有了本文中的代码。

分析

mDNS组件在IDF v5.0大版本中被移除出默认的内部组件库中(详见参考1),因此需要修改之前的基础库代码,手动添加对应支持。在PlatformIO项目中,我将官方的源码下载到了本地,放在了third_party/mdns目录下,然后在最外层的CMakeLists.txt中添加了一行list(APPEND EXTRA_COMPONENT_DIRS third_party)来让编译系统知道这个目录下的第三方组件。接着,在看了官方的文档和源码后(详见参考2、参考3),对相关代码进行了封装,形成了自己的库文件,具体实现见下方代码。

阅读全文 »

起因

自前几天改造了自己的光猫后,无意中发现为了访问,配的防火墙给的允许范围很大,这样的风险较高。经分析,只要允许ping及WireGuard的UDP流量通过即可满足我当前所有需求。于是将ip6tables -A FORWARD_CUSTOM-j ACCEPT修改为了具体协议支持ip6tables -A FORWARD_CUSTOM -p icmpv6 --icmpv6-type echo-request -j ACCEPTip6tables -A FORWARD_CUSTOM -p udp --dport 10000 -j ACCEPT。但是前期因为忘记配置的是IPv6的防火墙,所以将ICMPv6协议写成了ICMP协议,可意外该命令被成功执行了。虽然因为协议错误导致没有达到放行目的,但是该错误却引起了我的好奇。为什么在IPv6的防火墙中,ICMP协议可以被成功执行?IPv6上运行的是ICMPv6协议,如果配置ICMP协议应该会被参数校验的时候校验出来的吧?

阅读全文 »

起因

为了在Windows上跨平台编译Linux上运行的Golang程序,选择了CGO_ENABLED=0。此时DNS解析也被切换至了纯Go版本的解析器上,而这个版本的解析器不支持mDNS。为了方便我在自家使用mDNS,便有了下文的方案探究。

分析

首先查找了一些官方文档,发现官方明确短期内是不会在纯Go版本的解析器上支持mDNS的,具体详见参考1。为了通用,便想到了monkey patch这一方式去处理,而这种在Python很好处理的方案,在Golang中却并不好写。

阅读全文 »

起因

在搬家后迁移联通的宽带,装维师傅给换了个光猫,换成了HG6145D2,然后之前好使的IPv6外网访问就失效了。

分析

查看路由器,IPv6地址可以正常分配。之后进入光猫后台,尝试一番后发现其防火墙功能残缺,无法像之前一样通过单独关闭IPv6防火墙或调整防火墙等级来实现IPv6外网访问。通过一番检索,了解到该款光猫可以通过指定网址来开启telnet,然后通过ip6tables命令来控制IPv6防火墙,从而实现IPv6外网访问。但是在之后的测试中却发现,光猫固件做的防范比较严格,没有找到可以利用的开机启动入口来实现控制固化。没办法,最终决定通过定时执行外部脚本来解决该问题。

阅读全文 »

起因

近期将使用的Grafana的Docker镜像升级到了最新版本,却发现面板都报错了。在查找了一下后发现因为我数据源中的Host或URL字段都是使用的mDNS(.local)的域名,导致无法解析IP地址。

分析

因为我是在Grafana的Docker镜像的基础上经行了mDNS支持,Dockerfile如下:

1
2
3
FROM grafana/grafana:latest-ubuntu
USER root
RUN apt-get update && apt-get install avahi-utils -y
阅读全文 »

前言

在浏览B站时看了参考1中大佬的视频,很感兴趣。收集了一些信息后,发现资料不少且价格便宜,很适合改造,最终有了此项目。

硬件部分

配件

  1. 大金空气传感器BRY88AB151K;
  2. ZE08-CH2O模块,USB Type-A公头;
  3. 1.3寸IIC单色OLED模块(我的是SH1106芯片的),2.54杜邦线插头,带4P的GH1.25mm公头的单头端子线,4P的GH1.25mm卧贴母座;
  4. 其它:撬棒、串口转USB模块、电烙铁等辅助工具。
阅读全文 »
0%