You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Certbot DNS解析不读取/etc/hosts 如何强制指向本地私有IP

方案1:修正DNS解析配置 + 公网端口映射(适用HTTP-01校验场景)

你之前配置dnsmasq不生效是因为缺少本地解析规则,且没有把本机DNS指向dnsmasq,修复步骤如下:

  1. 编辑/etc/dnsmasq.conf,添加解析规则(如果需要泛解析所有子域名就把subdomain换成*.):
address=/subdomain.mydomain.com/192.168.1.111
  1. 修改树莓派的DNS优先级,编辑/etc/resolv.conf首行加:
nameserver 127.0.0.1

如果你的系统用dhcpcd管理网络,就编辑/etc/dhcpcd.conf,找到static domain_name_servers配置项,改成static domain_name_servers=127.0.0.1 8.8.8.8,避免resolv.conf重启后被覆盖。
3. 重启服务生效:

systemctl restart dnsmasq
systemctl restart dhcpcd

用nslookup subdomain.mydomain.com测试,返回192.168.1.111即配置成功。

注意:该配置仅让树莓派本地解析域名到内网IP,Let's Encrypt的公网校验服务器还是会访问你的公网IP,你需要把公网IP的80/443端口映射到树莓派的对应端口,才能完成HTTP-01校验。

方案2:DNS-01校验申请泛域名证书(最适合批量子域名场景)

完全不需要公网暴露本地服务,也不需要给每个子域名单独配置,一次申请*.mydomain.com泛域名证书,所有子域名都可以使用,后续新增子域名无需重新申请:

  1. 安装certbot对应你域名注册商的dns插件:
apt install certbot python3-certbot-dns-你的注册商标识
  1. 配置你的域名DNS服务商的API密钥文件/root/certbot_dns.ini,权限设为600:
dns_xxx_api_token = 你的API令牌
  1. 执行申请命令:
certbot certonly --dns-xxx --dns-xxx-credentials /root/certbot_dns.ini -d "*.mydomain.com" -d "mydomain.com"

全程自动完成DNS校验,不需要公网访问你的树莓派,后续可以直接写到bash脚本实现自动化部署。

方案3:公网服务器转发校验请求(不想修改DNS配置时可选)

如果你的公网IP对应的服务器是你可控的,直接在公网服务器上配置反向代理,把所有/.well-known/acme-challenge/路径的请求转发到你的树莓派(可以用frp内网穿透、VPN打通公网服务器和树莓派的网络),Let's Encrypt的校验请求会自动转发到你本地的Apache服务,不需要修改本地任何解析配置。


内容的提问来源于stack exchange,提问作者Chiwda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:09:03