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.crt

OpenWrt 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 就能解析。

有好几条路

  1. 自己搭建完整的 DNS 服务器
    网络设备都是通过 DHCP 自动注册的主机名,手动管理不方便也不现实。

  2. 二级路由器的 DNSmasq 转为代理模式
    我还是想在二级管理一些分配,不考虑代理模式

  3. 把二级路由的 DHCP Record 同步给上游,合并 DNS 记录到一个域
    解析 Lease File,转换为 Host File,再定时同步到上级。上级路由器可能缺少超级用户权限无法管理

  4. 网络设备添加多个 DNS 后缀搜索列表
    让短名检索时多查几个后缀,放大了一些 DNS 查询请求,带来了便利

我当然选第四个,只需要修改 DNSmasq 的配置,加一行。对于 Merlin ASUS 固件可以加在这里/

/etc/config/dnsmasq.d/dns.conf
dhcp-option=lan,option:domain-search,home.kokomi.site,openwrt.home.kokomi.site

Windows 的当前版本支持 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