DNS 解析不與主機相同

DNS 解析不與主機相同

我們有一個 OSX 主機和一個在 virtualbox 上運行的 ubuntu 10.04 vagrant 實例。在嘗試向 emailtests.com 發送電子郵件(用於電子郵件測試目的)時,我們注意到 DNS 無法正確解析。

因此,我們嘗試在 OSX 和 Vagrant 實例上執行以下命令:dig -tMX emailtests.com

作業系統X

; <<>> DiG 9.8.3-P1 <<>> -tMX emailtests.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39364
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 3

;; QUESTION SECTION:
;emailtests.com.            IN  MX

;; ANSWER SECTION:
emailtests.com.     300 IN  MX  10 litmus-smtp-in-392690123.us-east-1.elb.amazonaws.com.

;; AUTHORITY SECTION:
emailtests.com.     172711  IN  NS  ns-1596.awsdns-07.co.uk.
emailtests.com.     172711  IN  NS  ns-215.awsdns-26.com.
emailtests.com.     172711  IN  NS  ns-1288.awsdns-33.org.
emailtests.com.     172711  IN  NS  ns-964.awsdns-56.net.

;; ADDITIONAL SECTION:
ns-964.awsdns-56.net.   158810  IN  A   205.251.195.196
ns-1288.awsdns-33.org.  158499  IN  A   205.251.197.8
ns-1596.awsdns-07.co.uk. 72461  IN  A   205.251.198.60

;; Query time: 74 msec
;; SERVER: 184.73.189.33#53(184.73.189.33)
;; WHEN: Mon Sep  9 13:15:02 2013
;; MSG SIZE  rcvd: 282

流浪漢

; <<>> DiG 9.7.0-P1 <<>> -tMX emailtests.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 2227
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;emailtests.com.            IN  MX

;; Query time: 104 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: Mon Sep  9 13:09:42 2013
;; MSG SIZE  rcvd: 32

正如您所看到的,MX 記錄的解析方式不同。我上網查了一下,發現答案告訴我們要將以下內容加入 vagrant 檔案:

  config.vm.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
  config.vm.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  config.vm.customize ["modifyvm", :id, "--natdnspassdomain1", "on"]

我們已經有了。我們仍然無法正確解析該位址以及可能的許多其他位址。關於如何解決這個問題或縮小問題範圍有什麼想法嗎?

注意:我們可以向 gmail 發送電子郵件,並且可以 ping/dig 某些網域。

更新,來自 vagrant 的 ifconfig

eth0      Link encap:Ethernet  HWaddr 08:00:27:36:71:5f  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe36:715f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:38137 errors:0 dropped:0 overruns:0 frame:0
          TX packets:26845 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:18987844 (18.9 MB)  TX bytes:6605246 (6.6 MB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:80:07:aa  
          inet addr:192.168.42.3  Bcast:192.168.42.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe80:7aa/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8294812 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4509692 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1871276346 (1.8 GB)  TX bytes:1268188839 (1.2 GB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:815216 errors:0 dropped:0 overruns:0 frame:0
          TX packets:815216 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:371105283 (371.1 MB)  TX bytes:371105283 (371.1 MB)

答案1

看起來配置的 DNS 伺服器 10.0.2.3 未配置為執行遞歸查找。你根本得不到答案。使用可以執行遞歸查找的 DNS 伺服器,或將您的伺服器設定為能夠執行此操作。

答案2

今天早上我在查看同樣的問題時偶然發現了這個問題,經過大量谷歌搜索/絞盡腦汁後,我提出了以下解決方案,我會將其發布給將來遇到此問題並陷入困境的其他人。

對我們有用的natdns Vagrantfile 設定(Vagrant 1.6.3,在OSX(使用VirtualBox 4.3.14)和Windows8(使用Virtual Box 4.3.15 r95286)上測試- 我的同事在使用4.3.14 和windows8 時遇到了不同的不相關問題,所以使用一個似乎可以與 vagrant 一起正常工作的 beta 版本)

config.vm.customize ["modifyvm", :id, "--natdnsproxy1", "off"]
config.vm.customize ["modifyvm", :id, "--natdnshostresolver1", "off"]
config.vm.customize ["modifyvm", :id, "--natdnspassdomain1", "off"]

(肯定是第一行,您可能不需要以下兩行,我將它們包括在內,以防您在實驗時將它們打開 - 我剛剛將--natdnsproxy1--natdnshostresolver1在我的 Vagrantfile 中都設置為關閉)。

原因似乎是 Vagrant 預設--natdnsproxy1為開啟狀態,而virtualboxs 用於mx 查找的代理DNS 似乎有缺陷/損壞/不穩定- 如果將其設為關閉,則虛擬機將使用主機用於DNS 的IP 位址,而不是嘗試代理它們透過 10.0.2.3 - 瞧,您從 DNS 獲得了完整的 mx 記錄(或至少我們做到了)。

(透過Google搜尋一下,我發現這一切的原因是電子郵件沒有從運行 Centos 6.5 的 vagrant 發送到某些網域 - 我們可以看到 sendmail 正在響應錯誤:503「此郵件伺服器需要身份驗證當嘗試發送到非本地電子郵件地址時...”,然後我們發現執行 adig mydomain.com mx傳回的是網域的 A 記錄,而不是預期的 MX 郵件記錄,這表示 Vagrant / 存在 DNS 查找問題虛擬盒)。

相關內容