DNS 到 HTTPS:域名能解析,网页为什么还可能失败

阿远
2026-10-29 / 0 评论 / 1 阅读 / 正在检测是否收录...

域名解析、TCP 连接、TLS 握手和 HTTP 响应是不同阶段。按层验证比只问“网络通不通”更容易缩小范围。

学习整理:2026-10-29。以下命令、地址和账号均为课程实验示例,按实际环境替换;涉及安装、覆盖配置或服务启停的操作先在隔离环境练习,不代表本站已经实施。

一、DNS解析

DNS将域名转换为IP地址。常见记录:

  • A:域名到IPv4。
  • AAAA:域名到IPv6。
  • CNAME:域名别名。
  • MX:邮件服务器。
  • TXT:文本验证、邮件策略等。
  • NS:权威名称服务器。

二、解析路径

简化过程:

应用缓存
→ 操作系统缓存和hosts
→ 本地DNS解析器
→ 根、顶级域、权威DNS
→ 返回记录并按TTL缓存

检查:

getent hosts example.com
dig example.com
dig +trace example.com
dig @指定DNS example.com
resolvectl status
cat /etc/resolv.conf

/etc/hosts优先级由/etc/nsswitch.conf控制,不应假设所有环境完全相同。

三、HTTP请求

请求包括:

  • 方法:GET、POST、PUT、DELETE等。
  • URL。
  • 请求头。
  • 请求体。

响应包括:

  • 状态码。
  • 响应头。
  • 响应体。

常见状态码:

  • 200:成功。
  • 301/302:重定向。
  • 400:请求格式问题。
  • 401:未认证。
  • 403:服务器拒绝。
  • 404:资源或路由不存在。
  • 500:服务内部错误。
  • 502:代理没有获得有效上游响应。
  • 503:服务不可用。
  • 504:代理等待上游超时。

四、curl

curl -v http://example.com/
curl -I https://example.com/
curl -L http://example.com/
curl -o /dev/null -s -w '%{http_code} %{time_total}\n' URL
curl -H 'Content-Type: application/json' \
  -d '{"name":"test"}' http://127.0.0.1:8080/api

五、HTTPS与证书

HTTPS是HTTP运行在TLS之上,提供加密、完整性和身份验证。

需要理解:

  • 证书中的域名必须匹配访问域名。
  • 证书有有效期。
  • 客户端需要信任签发机构。
  • 完整证书链可能包含中间证书。
  • 系统时间错误会导致证书验证失败。

检查证书:

openssl s_client -connect example.com:443 -servername example.com
openssl x509 -in cert.pem -noout -subject -issuer -dates

六、Web访问排查

dig确认域名
→ curl -v观察连接和状态码
→ 检查证书
→ 检查Nginx访问/错误日志
→ 检查上游应用
→ 检查数据库和依赖

隔离环境练习计划

  1. 用dig查询A、CNAME和NS记录。
  2. 用curl观察一次HTTP重定向。
  3. 记录DNS、TCP连接、TLS、首字节和总耗时。
  4. 查看一个站点证书的域名、颁发者和到期时间。

我的验收重点

先说清每个组件和参数解决的问题,再在实验环境记录正常结果、错误现象与恢复步骤。配置能通过语法检查只是起点,还应验证实际功能。本文保留为学习笔记,不把计划中的多机部署或演练写成本站完成记录。

解析工具与证书验证的边界

resolvectl 只适用于使用相关 systemd-resolved 组件的系统,命令不存在不能据此判断 DNS 损坏。dig 不读取 hosts,getent 走 NSS;浏览器自带缓存或 DoH 也可能不同。openssl s_client 展示链不自动等同完整主机名验收,可结合 -verify_hostname example.com -verify_return_error 与受信任 CA;最终用保持正常校验的 curl 访问实际域名验证。

内容复核与修订:2026-10-29。实验示例与本站运行记录分别说明;原始归档日期保留。
1

评论 (0)

取消