possible DNS-rebind attack detected
Tue Sep 9 04:39:24 2025 daemon.warn dnsmasq[3464]: possible DNS-rebind attack detected: pki.home.kokomi.site我在 192.168.2.0/24 想要解析一个指向 192.168.9.0/24 的域名时,DNSmasq 抛出 possible DNS-rebind attack detected 错误,原因是开启了重绑定保护,会丢弃解析结果为私有地址的。
解决方法是把域名添加到「域名白名单」里。框里不支持写通配符,添加次级域名就好。
比如我写 home.kokomi.site 代表包含了 pki.home.kokomi.site
在 OpenWrt 上手动安装根证书
在使用 smallstep PKI 申请 ACME 证书前,还需要手动安装根证书才能验证。
在 OpenWrt 上麻烦些
CA_NAME="pki.home.kokomi.site"
CERT_FILE="$CA_NAME.cert"
CERT_INSTALL_DIR="/usr/local/share/ca-certificates"
CERT_PATH="${CERT_INSTALL_DIR}/${CERT_FILE}"
wget -c "${CA_NAME}/roots.pem" > "$CERT_PATH"
mkdir -p "$CERT_INSTALL_DIR"
HASH="$(openssl x509 -hash -noout -in $CERT_PATH).0"
ln -s "$CERT_PATH" "/etc/ssl/certs/$CERT_FILE"
ln -s "/etc/ssl/certs/$CERT_FILE" "/etc/ssl/certs/$HASH"
ls -al "/etc/ssl/certs/$HASH"发现上面的不管用,换成简单暴力,但是不适合更新的
cat /etc/ssl/certs/ca-certificates.crt /usr/local/share/ca-certificates/pki.home.kokomi.site.cert > bundle.crt
mv bundle.crt /etc/ssl/certs/ca-certificates.crtOpenWrt ACME WebRoot 验证
自动创建的 /www/.well-known/acme-challenge 是错的?总之得手动调整一遍
ln -s /var/run/acme/challenge/.well-known/acme-challenge/ /www/.well-known/acme-challenge
多个 DNS 后缀搜索列表
我处在 192.168.9.0/24 网段,路由器上运行了 DNSmasq,用 dhcp-option domain-name 给当前网段分配了 home.kokomi.site 域名后缀。这样网段内的设备能通过简短的名称比如 pki ,经过操作系统自动补全为 pki.home.kokomi.site,在 DNSmasq 处查询 DHCP Record 最终解析为 IP 地址,完成访问。
现在在 192.168.2.0/24 网段,也部署了个 OpenWrt + DNSmasq,当做子网路由。它的域名是 openwrt.home.kokomi.site。我所处的网段可以通过 Windows-VM.openwrt 这个简短的名字自动补全并解析成功,但后缀还是长。我想要连后缀也省去,只输出 Windows-VM 就能解析。
有好几条路
-
自己搭建完整的 DNS 服务器
网络设备都是通过 DHCP 自动注册的主机名,手动管理不方便也不现实。 -
二级路由器的 DNSmasq 转为代理模式
我还是想在二级管理一些分配,不考虑代理模式 -
把二级路由的 DHCP Record 同步给上游,合并 DNS 记录到一个域
解析 Lease File,转换为 Host File,再定时同步到上级。上级路由器可能缺少超级用户权限无法管理 -
网络设备添加多个 DNS 后缀搜索列表
让短名检索时多查几个后缀,放大了一些 DNS 查询请求,带来了便利
我当然选第四个,只需要修改 DNSmasq 的配置,加一行。对于 Merlin ASUS 固件可以加在这里/
dhcp-option=lan,option:domain-search,home.kokomi.site,openwrt.home.kokomi.siteWindows 的当前版本支持 DHCP option 119 了,从 ipconfig /all 可以看到有后缀搜索列表。
无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . : home.kokomi.site
连接特定的 DNS 后缀搜索列表:
home.kokomi.site
openwrt.home.kokomi.site但需要注意的是,nslookup 指令不读取这个列表😑,需要手动设置 srchlist。
$ nslookup.exe -srchlist="home.kokomi.site/openwrt.home.kokomi.site" Windows-VM
服务器: RT-AX86U-CE58-IPv6
Address: 2409:8a1e:6e71:5eb0:a236:bcff:fe70:ce58
名称: Windows-VM.openwrt.home.kokomi.site
Address: 192.168.2.182
$ nslookup.exe -srchlist="home.kokomi.site/openwrt.home.kokomi.site" pki
服务器: RT-AX86U-CE58-IPv6
Address: 2409:8a1e:6e71:5eb0:a236:bcff:fe70:ce58
名称: pki.home.kokomi.site
Address: 192.168.9.212