使用 resolvconf 时,dig 总是显示环回地址。有没有什么办法可以查看哪个服务器实际上在应答?
答案1
dig 这一行只是告诉您 dig 在哪里寻找答案,而不是它的最终来源。
在您的系统上,假设它是 Ubuntu 12.04 或更高版本的桌面,并且您没有禁用本地名称服务器,dnsmasq 正在监听环回地址,端口 53。Dnsmasq 是一个轻量级名称服务器,它使用其他名称服务器来解析名称。
要查看其使用的服务器,请输入以下内容:
fgrep dnsmasq /var/log/syslog* | fgrep using | fgrep -v 127.0.0.1
或者使用 aking1012 的好建议:
nmcli -f IP4 dev list | grep DNS
在我的情况下,那是我的路由器/调制解调器,还运行从我的路由器/调制解调器的 DHCP 服务器获得的轻量级服务器。我必须登录到路由器并使用特定于路由器的方法来找出它使用的 DNS 服务器。(它由我的 ISP 配置为转发到他们的域名服务器)。
您当然可以用 NetworkManager 覆盖系统使用的域名服务器,或者,如果您使用 ifup 而不是 NetworkManager,则可以在 ifup 的配置文件 /etc/network/interfaces 中覆盖。
假设请求被转发到您的 ISP,ISP 的名称服务器可能会进行递归查找以确定答案,或者,可能性较小,甚至进一步转发递归请求。此递归请求链将持续进行,直到找到愿意并能够进行完整递归查找的域名服务器。如果在找到愿意响应递归请求的服务器之前没有完整的域名服务器,则它可能过早结束。大多数域名服务器不会为您执行这些操作,但 ISP 会为其客户执行这些操作,而商业域名服务器会为其域执行这些操作。您可以在 Ubuntu 下自行安装一个。Google 的 8.8.8.8 开放域名服务也可以。
对于我输入的任何特定地址,如果 dnsmasq 的缓存中有答案,我可能会从 dnsmasq 获取答案;如果 dnsmasq 的缓存中有答案,我可能会从路由器/调制解调器获取答案;或者如果 dnsmasq 的缓存中有答案,我可能会从 ISP 或其他地方获取答案。
和 aking1012 一样,我认为你无法追溯挖掘返回的答案。
如果您想知道这些信息最终来自哪里,您可能想知道域名的权威信息来源保存在哪里。
举个例子:
dig @8.8.8.8 -t soa bing.com
返回:
; <<>> DiG 9.8.1-P1 <<>> @8.8.8.8 -t soa bing.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59757
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;bing.com. IN SOA
;; ANSWER SECTION:
bing.com. 43199 IN SOA ns1.msft.net. msnhst.microsoft.com. 2012081301 1800 900 2419200 3600
;; Query time: 155 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat Aug 25 01:10:26 2012
;; MSG SIZE rcvd: 91
因此,有关域 bing.com 的权威信息来源可以来自 ns1.msft.net 或 msnhst.microsoft.com。
您还可以使用完整域名服务器的递归算法来追踪信息:
dig @8.8.8.8 -t ns "."
返回:
; ANSWER SECTION:
. 20616 IN NS h.root-servers.net.
. 20616 IN NS m.root-servers.net.
. 20616 IN NS j.root-servers.net.
. 20616 IN NS f.root-servers.net.
. 20616 IN NS a.root-servers.net.
. 20616 IN NS k.root-servers.net.
. 20616 IN NS l.root-servers.net.
. 20616 IN NS i.root-servers.net.
. 20616 IN NS b.root-servers.net.
. 20616 IN NS d.root-servers.net.
. 20616 IN NS g.root-servers.net.
. 20616 IN NS e.root-servers.net.
. 20616 IN NS c.root-servers.net.
全域名服务器至少配置一台根服务器的地址。
dig @c.root-servers.net. -t ns "com"
返回:
;; 授权部分:
co
m. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
;; ADDITIONAL SECTION:
a.gtld-servers.net. 172800 IN A 192.5.6.30
a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e::2:30
b.gtld-servers.net. 172800 IN A 192.33.14.30
b.gtld-servers.net. 172800 IN AAAA 2001:503:231d::2:30
c.gtld-servers.net. 172800 IN A 192.26.92.30
d.gtld-servers.net. 172800 IN A 192.31.80.30
e.gtld-servers.net. 172800 IN A 192.12.94.30
f.gtld-servers.net. 172800 IN A 192.35.51.30
g.gtld-servers.net. 172800 IN A 192.42.93.30
h.gtld-servers.net. 172800 IN A 192.54.112.30
i.gtld-servers.net. 172800 IN A 192.43.172.30
j.gtld-servers.net. 172800 IN A 192.48.79.30
k.gtld-servers.net. 172800 IN A 192.52.178.30
l.gtld-servers.net. 172800 IN A 192.41.162.30
m.gtld-servers.net. 172800 IN A 192.55.83.30
dig @k.gtld-servers.net -t ns "google.com"
返回
;; AUTHORITY SECTION:
google.com. 172800 IN NS ns2.google.com.
google.com. 172800 IN NS ns1.google.com.
google.com. 172800 IN NS ns3.google.com.
google.com. 172800 IN NS ns4.google.com.
;; ADDITIONAL SECTION:
ns2.google.com. 172800 IN A 216.239.34.10
ns1.google.com. 172800 IN A 216.239.32.10
ns3.google.com. 172800 IN A 216.239.36.10
ns4.google.com. 172800 IN A 216.239.38.10
和
dig @ns1.google.com -t a www.google.com
;; ANSWER SECTION:
www.google.com. 604800 IN CNAME www.l.google.com.
www.l.google.com. 300 IN A 74.125.225.209
www.l.google.com. 300 IN A 74.125.225.208
www.l.google.com. 300 IN A 74.125.225.210
www.l.google.com. 300 IN A 74.125.225.212
www.l.google.com. 300 IN A 74.125.225.211
附加信息部分给出了域名服务地址提示,以便可以轻松找到名称服务器。
CNAME 记录表明正典名称为了别名www.google.com 是 www.l.google.com。
当然,像 google.com 和 msft.com 这样的网站会采取各种措施将查询分发到各个计算机。
答案2
据我所知没有。
您可以使用:
nmcli dev list iface *insert outbound interface name here* | grep IP4 | grep DNS
正如建议的那样这里。
这个对我有用。
不依赖于输入接口名称的更清晰的调用是:
nmcli -f IP4 dev list | grep DNS