我的第一台虚拟机 1 使用 iptables -A POSTROUTING -J MASQUERADE 将互联网路由到第二台虚拟机,反之亦然,在第二台虚拟机上,我的第三台虚拟机可以 ping 通 1.1.1.1(互联网),并且我通过网络接口为其设置了一个公共 DNS,如 1.1.1.1。有没有解决办法,因为如果我可以 ping 通 1.1.1.1 并将 DNS 设置为 1.1.1.1,为什么我无法获得名称解析?
答案1
公共 DNS 服务器 1.1.1.1 正常情况下可以响应任何节点的请求。如果您对该地址 ping 成功却没有收到 DNS 响应,则可能存在以下三种原因:
- UDP 端口 #53 流量在您的 VM 级联中的任何位置都被阻止(过滤掉或不允许)。
- 与您的 VM 网络接口相关的 DNS 服务器设置不正确。
- 伪装提供的地址转换使 DNS 请求/响应格式错误。
在 DNS 无法正常工作的虚拟机上执行这些测试。将所有 5 行复制并粘贴到终端窗口,然后按 Enter:
dig google.com
echo "-----------------"
dig google.com @1.1.1.1
echo "-----------------"
dig google.com @8.8.8.8
并使用 TCP 协议(而不是 UDP)重复此操作:
dig +tcp google.com
echo "-----------------"
dig +tcp google.com @1.1.1.1
echo "-----------------"
dig +tcp google.com @8.8.8.8
这些命令块的响应是什么?您是否在所有情况下都没有得到响应,或者至少在一种情况下得到肯定的响应?请在此处复制并粘贴完整的输出 -编辑你的问题。
以下是第一个测试的正确答案示例。
- 尋找
SERVER
線條。 - 搜索该
ANSWER
部分并观看其下方的一行。
; <<>> DiG 9.16.15-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2334
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 213 IN A 142.251.36.142
;; Query time: 8 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: St úno 23 23:30:21 CET 2022
;; MSG SIZE rcvd: 55
-----------------
; <<>> DiG 9.16.15-Ubuntu <<>> google.com @1.1.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53083
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 253 IN A 142.251.37.110
;; Query time: 8 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: St úno 23 23:30:21 CET 2022
;; MSG SIZE rcvd: 55
-----------------
; <<>> DiG 9.16.15-Ubuntu <<>> google.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5872
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 25 IN A 216.58.201.78
;; Query time: 12 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: St úno 23 23:30:21 CET 2022
;; MSG SIZE rcvd: 55
当使用虚拟机中的 DNS 设置时,第一个块包含 dig google.com 响应。DNS 服务器的 IP 地址 127.0.0.1 应该存在。这是您的本地系统地址(环回)。对于具有与 Netplan 和网络管理器相关的默认设置的新 Ubuntu 发行版,这是正常的。这是对您的 DNS 设置的测试。
第二和第三块包含使用本地 DNS 服务器以外的其他服务器时的响应。两个查询都直接发送到指定的公共 DNS 服务器,并验证远程 DNS 服务器的功能以及服务器和虚拟机之间的 DNS 流量的自由路径。