openSUSE Wicked 重新获取 DHCP 分配的地址

最近发现,如果在 DHCP 服务器上向 openSUSE 下发了 IPv4 地址,在该地址的老化时间内,即使是重新开启网卡接口、重启系统、重新插拔网线等行为,Wicked 也不会重新获取 IP 地址,查看 wickedd-dhcp4.service 的日志可以发现其检查了 IP 的有效时间,有效期内没有再重新获取一次。

解决方案

先删除 /var/lib/wicked 下的所有文件:

sudo rm -rf /var/lib/wicked/*

或者是只删除 /var/lib/wicked/lease-eth0-dhcp-ipv4.xml 也可以。

然后,重启该网卡接口:

sudo wicked ifdown eth0
sudo wicked ifup eth0

此时应该可以观察到 IP 地址已经刷新。

引用

Wicked keeps DUID on SLES15 even when NIC is replaced | Support | SUSE

Docker Compose 创建的容器无法访问 host.docker.internal

在 docker-compose.yml 中的 extra_hosts 字段中加上 host.docker.internal:host-gateway 即可。是的,一个魔法字符串。

这个并非由 Docker Compose 处理,而是传给 Docker Engine 这层来处理,具体见引用链接中的源码。

引用

https://github.com/docker/compose/issues/9768#issuecomment-1570319324

https://github.com/moby/moby/blob/9dbdbd4b6d7681bd18c897a6ba0376073c2a72ff/daemon/container_operations.go#L112-L129

创建 Docker Buildx 多架构构建节点

前置条件

1 台 linux/amd64 的机器 A,1 台 linux/arm64 的机器 B。A 可以通过密钥对直接 SSH 连接 B。

实施

在 A 执行命令以创建名为 multiarch 的构建实例,并将本机加入该实例:

docker buildx create --name multiarch --driver docker-container --config /etc/buildkitd.toml --node amd64 --platform=linux/amd64

在 A 执行命令以将 B 加入该构建实例:

docker buildx create --append --name multiarch --driver docker-container --config /etc/buildkitd.toml --node aarch64 --platform=linux/arm64 ssh://<user>@<ip>:<port>

启动该构建实例:

docker buildx inspect --bootstrap --builder multiarch

上述命令会在两个机器上都启动一个容器,并且输出构建节点的信息。

可以随时通过下面的命令来查看本机上的构建实例:

docker buildx ls

如果上面创建的 multiarch 构建实例不是默认被使用的,可以通过该命令进行修改:

docker buildx use --default --builder multiarch

buildkitd 配置文件

上述命令中提及的 /etc/buildkitd.toml 可用于指定 Registry Mirrors,例如:

debug = true
[registry."docker.io"]
  mirrors = ["mirror.gcr.io"]

其它具体配置项请参阅官方文档,见引用。

测试

可以任意编写一个 Dockerfile,然后执行命令进行构建测试:

docker buildx build -t <image-tag> --platform=linux/arm64 --load .

引用

How to Rapidly Build Multi-Architecture Images with Buildx | Docker

Configure BuildKit

docker buildx

使用代理工具 Burp Suite 或 whistle 移除 HSTS 响应头

在某些时候,例如出于某些环境调试目的,可能需要阻止服务端响应 HSTS 头(Strict-Transport-Security),此时可以使用代理工具将该响应头移除。请注意,不正确的配置可能会影响正常访问网站的安全性,请务必在必要时启用如下功能或特性,或使用独立的开发者版本浏览器。

如果使用 Burp Suite,则可以直接使用内置规则:

如果使用 whistle,则可以增加一条规则,这里以要匹配的站点为 xie.sh.cn 进行举例:

xie.sh.cn delete://res.headers.strict-transport-security

移除已经被浏览器记住的安全策略

如果浏览器已经记住了服务端下发的 HSTS 响应头,则需要先将其删除。以 Chrome 浏览器为例,可以访问 chrome://net-internals/#hsts,然后进行查询或删除。部分 HSTS 响应头会使用 includeSubDomains 来包含子域,删除无效时可以留意一下。

如果浏览器试图升级 HTTPS 连接

某些情况下,即使后端没有发送 HSTS 响应头,浏览器也可能试图同时发送 HTTP 和 HTTPS 请求来升级连接,此时可以考虑访问 chrome://flags/#https-upgrades,然后将其禁用。

引用

delete · GitBook (wproxy.org)

OPPO K9 智能电视开启 HDMI 增强模式以使用 4K@60Hz

问题描述

最近把电脑接到电视(OPPO K9 55寸)上使用,发现设置 4K 分辨率会有显著卡顿。在 Windows 显示设置中发现,只有 1920*1080@60Hz、3840*2160@30Hz、4096*2160@24Hz 可选,显卡是 RTX3060,按理说不该有问题。OPPO官网也写了该电视支持 4K@60Hz。尝试更换 HDMI 线缆后问题依旧没有解决。

解决方案

看起来可能是协商成 HDMI 1.4 了,所以无法设置高分辨率和高刷新率。一番尝试后,在电视设置中找到了相关选项:在 HDMI 信号源显示的时候,按下遥控器菜单键,将信号格式变更为“增强”即可解决问题。修改后,就能使用 3840*2160@60Hz 了。如下图所示。

信号格式选择“标准”,此时最高仅能选择 3840*2160@30Hz
信号格式选择“增强”,此时最高可以选择 3840*2160@60Hz

信号格式默认是“自动”,但我这里不清楚为什么自动模式却不能自动使用 4K@60Hz,需要手动设置为“增强”才可以正常使用。

附:上面的截图通过 OPPO 电视助手 App 连接电视后截取。

最后的碎碎念

其实我本来都不想水这篇文章的,主要还是到处都搜不到详细的用户手册,官网只有制作精良的产品详情彩页和不那么详细的技术参数。客服这个点也下班了,只有机器人在那里回复:“亲,支持4K,支持60Hz的”。自己折腾半天发现那个“自动”并没有那么智能,实在是非常恼火。

我还发现了什么

NGA 上面也有一样遭遇的网友,可以自行移步观看。https://ngabbs.com/read.php?tid=33153215

Linksys MX4200 子节点手动升级固件

本文假设两个 Linksys MX4200 组成局域网,主节点 IP 为 192.168.1.1,子节点 IP 为 192.168.1.2。

问题

发现组网之后,子节点在 App 或是网页版管理页面均无法升级固件,直接浏览器访问子节点 IP 试图请求管理页面会直接被重定向回主节点的管理页面。

解决方案

浏览器先访问主节点的管理页面,登录之后,点按右下角的“CA”进入高级设置,此时将浏览器地址栏中的 URL 的 IP(192.168.1.1)修改为子节点的 IP(192.168.1.2),此时可以正常登录子节点的管理页面。不过这个时候还不会显示本地上传固件升级,点按右下角的“CA”,再次点开连接选项卡即可手动上传固件升级。

Linksys MX4200 无线局域网下 Aqara M1S/P3 配网提示“WiFi 密码错误”

最近买了个 M1S,配网总是失败,语音提示“WiFi 密码错误”后长亮白灯。想到家里有两个还在正常使用的 P3,于是尝试重置了一个,重新配网的时候也出现了一样的情况。

联系客服后定位到问题可能与 Linksys MX4200 的 Apple Home 集成功能有关。于是到手机的家庭 App 右上角的家庭设置里,将无线局域网与路由器中的设备移除,然后在 Linksys App 中的左侧栏的 Apple Home 集成功能中,点按断开网状路由器的连接。重启路由器后,再次给 M1S/P3 配网成功。

本文为个人解决上述情况下网关无法配网的思路分享,并非通用解决方案,仅供参考。