问题
当尝试使用 NSLookup 通过主机名访问内部服务器时,我收到正确的 DNS 服务器地址、FQDN 和目标 IP 地址。
当我尝试使用客户端或 cURL 访问服务器并在 CMD 中执行 PING 时,它会解析为外部 IP 地址并失败,因为路由器上的防火墙配置设置为阻止来自专用网络的请求。(连接失败)
当我尝试通过浏览器访问服务器时,它会解析为内部 IP 地址(连接成功)
配置
- 路由器/网关:192.168.178.1
- 本地 DNS 服务器:192.168.178.7
- 服务器IP地址:192.168.178.11
- 客户端计算机 NIC 配置:静态 DNS 服务器 192.168.178.7、192.168.178.1
- C:\Windows\System32\drivers\etc\hosts:未定义路线
解决方法
- 編輯C:\Windows...\hosts 文件
图片胜过千言万语
Flushdns + nslookup + curl:
浏览器开发者模式:
答案1
您提到了网卡上的两个本地 DNS 服务器
- 192.168.178.1(路由器/网关)
- 192.168.178.7(本地 DNS 服务器)
我怀疑您的路由器仅解析外部 DNS,而您的本地 DNS 服务器也具有某种本地区域。
在您的 NIC 上同时使用两个 IP 作为 DNS 服务器的问题在于,操作系统不够智能,无法从逻辑上检查两者。它基本上会反复出现。
- 一分钟内你的 DNS 会经过你的内部服务器(浏览器)
- 下一分钟你的 DNS 将通过你的路由器(curl 命令)
要修复此问题,只需从 NIC 中删除路由器/网关 IP。如果您没有静态配置,那么它可能也在您的 DHCP 配置中。