为什么 dig 无法在 127.0.0.1 上工作?

为什么 dig 无法在 127.0.0.1 上工作?

我正在学习网络。我不明白 dig 的工作原理。当我们查询 dig 以获取 IP 地址时,它会查询在端口 53 上运行的 dnsmasq 以获取 IP。

这些命令正在起作用

dig www.google.com
dig @127.0.1.1 www.google.com

但这是行不通的

dig @127.0.0.1 www.google.com

我的期望是,这应该可以工作,因为使用某个端口运行的进程可以通过 127.0.0.0/8 中的任何 IP 访问。有人能解释为什么上述命令不起作用吗?

答案1

DNSMASQ 绑定到单个 IP 地址,就像每个 IP 响应服务(如 Web 服务器、bind9名称服务器等)一样。

当你的系统有 127.0.0.1 和 127.0.1.1 隐含地,它们仍然像单独的 IP 地址一样处理(就像 192.168.123.4 不是 192.168.123.6 并且不能暗示是)。

127.0.1.1 和 127.0.0.1 相同的暗示不适用于 direct-to-IP 命令。如今,在默认系统中,dnsmasq配置为绑定到 127.0.1.1。这就是为什么在装有网络管理器的系统中,您会在文件127.0.1.1中看到/etc/resolv.conf

除非您更改dnsmasq配置,否则它将无法绑定到 127.0.0.1,也不会监听路由到 127.0.0.1 的请求;但是,它会根据其绑定地址配置将请求路由到 127.0.1.1。(这是对默认配置的限制,是的,但实际上并不是一件坏事,因为您可以为不同的“本地服务”提供不同的本地环回 IP 地址以在您的系统上进行监听,这使得在本地主机上监听数据包嗅探等请求变得更容易实现。)

相关内容