之前使用的一款网络延迟测试工具已经停止维护很久了，作者的博客也已经无法访问。工具很好用但是快捷键跟我日常使用的软件快捷键有冲突，且无自定义的设置项。刚好最近梁圣新发布了 DeepSeek-V4-Flash-0731，就 Vibe coding 了一个，按照自己的习惯来配置功能用起来顺手多了。Agent 工具：Trae CNAI 模型：DeepSeek-V4-Flash-0731编程语言：Python工具特性：支持 ping、tcping 两种模式，IPv4、IPv6 双栈，自定义端口、包大小、时间间隔、超时时长、TTL、测试次数、分片，网络通/断状态下声音提醒，延迟柱形图显示，历史记录，日志导出，高分屏适配下载链接：lvping 网络延迟测试工具
今天登录一台 vSphere 时发现登不上，提示！[500] 获取身份提供程序时出错。请重试。如果问题仍然存在，请联系您的管理员。错误代码 500 一般是证书失效导致的，5480 端口可以正常登录管理后台，通过 ssh 连接访问 shell。运行以下命令检查证书是否失效：/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store MACHINE_SSL_CERT --text | less 可以看到输出信息中显示目前证书是 2024 年 3 月 18 日生成的，有效期为 2 年，2026 年 3 月 18 日前有效。确定是证书失效导致的问题。运行证书管理工具替换老证书：/usr/lib/vmware-vmca/bin/certificate-manager按提示信息填入必要信息，等待提示：Status：100% Completed [All tasks completed successfully]说明证书替换成功。再次查看证书信息有效期已经变为了 2028 年 3 月 18 日，重新访问 vSphere 已经可以正常登录。
悟已往之不谏，知来者之可追。实迷途其未远，觉今是而昨非。新年快乐
在一些使用新款 NVMe 存储设备的 Win11 上安装 WinCC 时可能会遇到报错：❌️不能安装下列程序：SQL Server 2016 SP2 Standard Edition（WinCC）安装程序不能完成安装。这是因为某些新款 NVMe 存储设备和设备驱动程序公开的磁盘扇区大小＞4 KB，因为 SQL Server 当前仅支持 512 字节和 4KB 的扇区存储大小，导致 SQL Server 无法正常启动。可以通过管理员权限运行以下命令来确认遇到此特定问题：fsutil fsinfo sectorinfo <盘符:> 例如：fsutil fsinfo sectorinfo E: 检查返回的 PhysicalBytesPerSectorForAtomicity 和 PhysicalBytesPerSectorForPerformance 数值，两者较大的值＞4096 则可能会出现该问题。解决方案：同样的硬件在 Win10 上没有此问题，因为 Win10 驱动程序不报告物理存储的源扇区大小。但由于 Win10 于 2025 年 10 月 14 日停止支持，所以并不推荐降级 Win10 的方式。修改注册表以管理员身份运行注册表编辑器。定位到： 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device编辑 > 新建 > 多字符串值，将名称命名为 ForcedPhysicalSectorSizeInBytes右键名称修改，数值填入 * 4095 后确定也可以通过管理员权限运行命令提示符后通过命令行快速导入：REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t REG_MULTI_SZ /d "* 4095" /f 修改此注册表需重启设备后生效
OpenWrt / ImmortalWrt 编译 （TP-LINK WDR-4320）
打扫房间时找出一个老古董路由器，TP-LINK WDR-4320，几年前用的，里面跑的还是 OpenWrt 19.07。硬件配置： CPU：高通 AR9344 RAM：128MiB ROM：8MiB（这台之前已经更换为了 16MiB 的 Flash） 网口：千兆 * 4 WiFi：IEEE 802.11b/g/n (750Mbps) USB：USB2.0 * 2 这配置放到 2024 年已经过时了，连 WiFi5（802.11ac）协议都不支持，好在 4 个千兆口 + 2 个 USB 口放在内网挂载个硬盘、共享个打印机还是够用的。里面跑的 OpenWrt 19.07 也太旧了，顺便升级到目前最新的 OpenWrt 23.05，因为这台机器的 Flash 芯片之前改过，原厂的 8MiB 太小换成了 16MiB 的，而官方的固件只认 8MiB，想要认全 16MiB 只能自己编译固件，那就再编译一次 OpenWrt 23.05 吧，顺便记录一下编译要点。源码这次选择的 ImmortalWrt，是 OpenWrt 的一个分支，比较之下 ImmortalWrt 算是和上游兼容性比较好又对国内用户使用比较友好的一个分支了，相比原版的 OpenWrt，细节上对国内用户可能感觉更顺手一些。拉取源码之后有几个地方需要修改一下，之前 OpenWrt 19.07 使用的设备树还是 ar71xx，现在已经弃用了，换成了 ath79，所以修改固件大小的方式和之前旧版也有所不同。修改文件：target/linux/ath79/image/generic-tp-link.mk修改文件：target/linux/ath79/dts/ar9344_tplink_tl-wdrxxxx.dtsi如下图内容，因为官方 OpenWrt 是不支持 WDR4320 的，但支持 WDR4310 和 WDR4300，这几款硬件都是一样的所以通用，这里需要魔改一下 WDR4310 的配置文件，将 WDR4310 修改为 WDR4320，当然不改也不影响实际使用（逼死强迫症）。因为源码中没有 WDR-4320 的型号，既然上面改了，所以这里还需要手动拷贝一份 WDR-4320 的配置文件。然后再 make menuconfig 应该就可以找到刚刚添加的 WDR-4320 的型号了。然后再根据自己需要调整一下，比如修改一下默认的 LAN 地址，防止接在其他设备下时 IP 冲突，有 BT 下载需求的用户可能需要 UPNP 功能。我个人比较喜欢简洁的固件，其它需求比如 Docker、Python 之类的习惯用到时再手动安装，现在就可以开始编译固件了。根据你自己的硬件性能 make j=7 V=s 开始编译，因为需要下载一些文件，所以速度跟网络环境也有关，大概几个小时后如果如上图所示，就说明编译成功了，可以在 bin 文件夹下找到生成的固件文件。接下来路由器进入 Breed 环境开始刷写固件：刷写完成后会自动重启，大概 2 分钟后就可以手动进入 luci 后台了这里可以看到编译的固件已经成功的认出了 16MiB 的容量（固件自身就占用了 8MiB 多，所以如果是 8MiB 的 Flash 基本就没什么空间装其他软件包了，甚至固件自身也需要再精简一些内容）。
系统安装、交换机入门配置 培训文档
前几年培训员工时制作的运维入门教程，相关信息已脱敏处理，分享给需要的行业新人参考。系统安装培训文档-2022.7-2.pdf交换机入门培训文档-2022.8-2.pdf
在创建 ACL 时必须为其指定编号，不同的编号对应不同类型的 ACL，比如：基本 ACL 2000～2999 高级 ACL 3000～3999 二层 ACL 4000～4999这里禁用 80 等 TCP 端口需要使用高级 ACL。首先进入系统视图：system-view创建 IPv4 高级 ACL，并进入 IPv4 高级 ACL 视图：## 交换机支持的命令选项有 acl number acl-number [name acl-name] [ match-order { auto | config } ] ## 本次实际情况是 acl number 3001创建规则：## 交换机支持的命令选项有 rule [ rule-id ] { deny | permit } protocol [ { { ack ack-value | fin fin-value | psh psh-value | rst rst-value | syn syn-value | urg urg-value } * | established } | counting | destination { dest-address dest-wildcard | any } | destination-port operator port1 [ port2 ] | { dscp dscp | { precedence precedence | tos tos } * } | fragment | icmp-type { icmp-type [ icmp-code ] | icmp-message } | logging | source { source-address source-wildcard | any } | source-port operator port1 [ port2 ] | time-range time-range-name ] ## 本次实际情况是 rule deny tcp destination-port eq 80 ## 拒绝 TCP 协议的 80 端口，以此类推（如果需要细分源 IP 和目标 IP 可以选择设定，不填默认范围是 any）应用 IPv4 高级 ACL 3001 对接口 interface Ten-GigabitEthernet1/0/28 （上联口）入方向上的报文进行过滤：interface Ten-GigabitEthernet1/0/28 packet-filter 3001 inbound这样所有从上联口外对该交换机下的网段访问 80 端口的 TCP 协议流量均会被拒绝。
今天遇到需要在 Android 上跑一个 Frp 来进行内网穿透，截止目前（2024 年 2 月 16 日）Frp 最新版为 v0.54.0，但很多公益 Frp 目前提供的服务端版本是 v0.51.0，和 v0.52 + 的客户端并不兼容，所以需要跑一个 v0.51.3 的客户端。首先，在 Android 平台运行 CLI 软件的最佳选择当然是 Termux，而且 Termux 的官方仓库已经收录了 Frp，但 Termux 的官方仓库很贴心的更新到了 Frp v0.54.0，并且不提供旧版本。因为 Frp 是使用 Golang 编写的软件，Golang 的跨 Linux 发行版做的向来不错，考虑到 Android 也算是 Linux 发行版，于是直接下载 Frp 官方的 frp_0.51.3_linux_arm64 包，果然可以直接运行。但存在一点小 Bug，Android 和常见的 Linux 发行版毕竟不一样，DNS 解析是由 Android 层面提供的。所以如果没做适配，解析域名时会报错（直接用 IP 不会），对于使用 stcp 其实不影响，但如果需要使用 xtcp 来 P2P 打洞，则无法解析 stun 地址。所以还是需要编译一个安卓版本的 Frp，这里就开始持续遇到坑了。首先根据 Google 的搜索结果，参考了这篇（https://www.wyr.me/post/737）2023 年 3 月份的教程，遇到的第一个坑是编译后提示：note: module requires Go 1.20Ubuntu 22.04 官方仓库中的 Golang 版本是 1.18，而编译 Frp v0.51.3 需要的最低 Golang 版本是 1.20。于是在 Golang 官网手动下载 1.20 版继续编译，成功生成 frpc_android_arm64 文件，复制到 Termux 中运行，结果和官方版的 frp_0.51.3_linux_arm64 一样，DNS 解析功能依然不行，看来在 X86 的 Golang 上编译出的 Frp 并未对 Android 做适配。继续搜索 Termux 社区，发现有人提到 Termux 打包的 Golang 对这个问题做了优化，那就好办，直接在 Android 上用 Termux 的 Golang 编译 Frp 就好了。## Termux 中安装 Golang apt install golang ## 下载 Frp v0.51.3 的源码，直接下载对应版本的源码即可，也无需再用 Git 了 wget https://github.com/fatedier/frp/archive/refs/tags/v0.51.3.zip ## 解压源码并进入源码文件夹 unzip v0.51.3.zip cd frp-0.51.3 ## 开始编译 env CGO_ENABLED=0 GOOS=android GOARCH=arm64 go build -trimpath -ldflags "-s -w" -o ./release/frpc_android_arm64 ./cmd/frpc成功生成 frpc_android_arm64 文件，再次运行，果然域名解析功能就正常了。
在笔记本上遇到了 MS-Office 打开 Excel 时正常，但双击单元格就会卡死未响应的问题，另一台 PC 则正常。从 Office 2021 换成 2019 问题依旧，网上搜到的禁用插件、禁用硬件加速都没效果。最后通过设置任意一个打印机为默认打印机即可解决卡顿的问题，我也没搞明白为啥不存在缺省打印机会导致 Excel 查看文件没问题，但编辑单元格就会卡死几分钟，但问题确实是解决了。