Domain-Name-System

dig +trace:我的域無法訪問任何伺服器?

  • December 16, 2021

我正在 AWS 中建構我的應用程序。

我已經在 EC2 實例中部署了我的 Reactjs 前端項目。我不想讓外部網際網路世界的使用者直接訪問我的 EC2 實例,而是將它放在 AWS API 網關後面。因此,AWS API Gateway 將成為我的應用程序前端和後端服務的單一入口點。這是計劃:

外部世界 —> AWS API Gateway —> 網路負載均衡器 —> 我的 VPC 目標組/EC2 實例

這是我所做的:

  1. Reactjs Frontend 項目在 EC2 實例中執行良好;我可以使用 EC2 實例的公共 IP 地址訪問網頁。
  2. 配置良好的目標組和網路負載均衡器。我通過在瀏覽器中輸入 NLB 的 DNS 名稱來確認,即http://myapp-frontend-NLB-c11112esd43524rw.elb.ap-northeast-1.amazonaws.com,它成功載入/打開了我的應用程序的前端網頁。
  3. 我創建了新的 AWS API Gateway (REST API) 並為其配置了自定義域名。(在 AWS Certificate Manager 中處理了 https 證書)。

即自定義域是frontend.myapp.com;API網關域名是d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com

我已經NS在我的 DNS 提供商中為他們創建了新記錄,因此frontend.myapp.com指向d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com 4. 我已經按照這個aws文件:https ://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-with-private-integration.html一步一步配置了VPC連結、API資源、集成類型, ETC。

部署創建的 API 後,當我點擊打開 Invoke URL 時,(以 的形式https://123qwe123qe.execute-api.ap-northeast-1.amazonaws.com/[stage]),我可以看到返回的 HTML 程式碼。


我預計當我frontend.myapp.com在瀏覽器中訪問時,DNS 最終會將流量引導到 API Gateway 的域名d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com,然後 API Gateway 會將請求傳遞給 NLB 等,最終載入網頁 / 或返回相同的 HTML 程式碼。

但是,當我frontend.myapp.com在瀏覽器中訪問時,沒有任何響應。我認為 DNS 記錄不起作用。dig +trace docloud.iwg-inc.co.jp.給出以下結果:


; <<>> DiG 9.10.6 <<>> +trace frontend.myapp.com.
;; global options: +cmd
.     3240  IN  NS  i.root-servers.net.
.     3240  IN  NS  d.root-servers.net.
.     3240  IN  NS  b.root-servers.net.
.     3240  IN  NS  m.root-servers.net.
.     3240  IN  NS  j.root-servers.net.
.     3240  IN  NS  h.root-servers.net.
.     3240  IN  NS  f.root-servers.net.
.     3240  IN  NS  g.root-servers.net.
.     3240  IN  NS  k.root-servers.net.
.     3240  IN  NS  c.root-servers.net.
.     3240  IN  NS  a.root-servers.net.
.     3240  IN  NS  l.root-servers.net.
.     3240  IN  NS  e.root-servers.net.
;; Received 811 bytes from 240d:1a:6a5:c900:e67e:66ff:fe1f:bf4c#53(240d:1a:6a5:c900:e67e:66ff:fe1f:bf4c) in 29 ms


...other results...

frontend.myapp.com.  14400 IN  NS  d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com.
;; Received 117 bytes from 54.68.111.244#53(ns4.jp-domains.jp) in 131 ms

;; connection timed out; no servers could be reached

如您所見, frontend.myapp.com.確實指向d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com.作為NS記錄。

但是,它說connection timed out; no servers could be reached

d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com.是我的 API Gateway 的自定義域名,我用呼叫 URL 測試過,它連接到服務。

為什麼會這樣說no servers could be reached

這是什麼意思?我該如何解決它並完成流程?

frontend.myapp.com.  14400 IN  NS  d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com.

NS記錄類型用於名稱伺服器。

目前記錄本質上是在說:如果您想知道與frontend.myapp.com子域或該子域下的任何記錄相關的任何 DNS,請詢問執行在其上的名稱伺服器d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com

並且 d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com 根本不是名稱伺服器,因此對那裡發送的 DNS 查詢不會有任何響應。

這就是 connection timed out; no servers could be reached你看到的錯誤。

認為你的意圖是設置一個 DNSCNAME記錄,基本上是說,如果你想訪問 frontend.myapp.com。使用 d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com 的 IP 地址。

引用自:https://serverfault.com/questions/1087486