因为 ubuntu下有一个本地的dns服务叫做dnsmasq,它是由NetworkManager控制的 ps -ef | grep dnsmasq 你就可以看到它监听的本地地址,--listen-address=127.0.1.1 (ubuntu12.04及之前的版本 是 127.0.0.1), 这个地址是一个本地回环地址 而你真实的dns服务器地址,是被这个服务管理维护着的 local process -> local dnsmasq -> router -> ISP dns
给 @xelz 的答案做些补充127.0.1.1应该是用于端口映射(port forwarding)的,比如ISP分配的DNS server是220.250.64.26,则dnsmasq会将客户端向127.0.0.1:53发出的DNS请求,转发到220.250.64.26:53 类似的还有putty、SecureCRT等终端仿真程序。考虑以下场景:主机A可以访问主机B,主机B可以访问主机C,但主机A却不能直接访问主机C,这时A就可以将C的ssh端口映射到B上的一个随机端口(比如6667),以后直接访问B:6667就能实现A访问C的效果。
因为 ubuntu下有一个本地的dns服务叫做
dnsmasq
,它是由NetworkManager
控制的你就可以看到它监听的本地地址,
--listen-address=127.0.1.1
(ubuntu12.04及之前的版本 是 127.0.0.1), 这个地址是一个本地回环地址而你真实的dns服务器地址,是被这个服务管理维护着的