﻿# 關於網域在網域註冊商設定 NS 時應該輸入 IP 或是 Domain

今天幫一個客戶解決了一個 DNS 設定的問題，客戶端為了安全考量，所有主機/網路的設定都十分嚴格，以致於設定錯誤，導致在國外的客戶無法透過 DNS 正確解析網址，經過一番對話後也順利查出問題，調整設定後問題立即解決。不過客戶這次對 DNS 的認知錯誤，我猜想大部分住在台灣的技術人員可能都是這樣認知的，原因讓我娓娓道來。

客戶提供的資訊是：

-   原本的 Domain 已經設定好，且已經運作一段時間，在台灣沒有任何用戶反應有問題。
-   當新的 Domain 設定完成後，台灣的用戶都沒問題，但香港地區的客戶卻怎樣都無法解析該網域。

資訊十分有限，而且這也是一般人發問的方式：「我原本 XXXXX 都可以，為什麼 YYYYYY 就不行了。」

我當下的直覺是：「**設定錯誤**」

我向客戶取得 DNS 設定資料後，再利用 nslookup 做幾次 DNS 檢測就立即查出問題所在，原來是他們的 NS 紀錄所指定的 Domain Name 僅設定在 “**內網**”，所以在 “**外網**” 是查不到該 Domain Name 的，以致於國外的 DNS 伺服器無法查詢到該 Domain 的 NS 紀錄，所以無法查詢到所有該網域的任何 DNS 設定。

```
C:\>nslookup www.example.com.hk ns1.example.com.twDNS request timed out.    timeout was 2 seconds.Server:  UnKnownAddress:  123.123.123.123DNS request timed out.    timeout was 2 seconds.DNS request timed out.    timeout was 2 seconds.DNS request timed out.    timeout was 2 seconds.
```

**客戶原本的 Domain Name 設定：**

-   Domain 1:   example.com.tw

-   NS:  ns1.example.com.tw
-   A:    ns1.example.com.tw   ( 在外部網路查不到 IP 位址，僅有內網查詢的到 )

-   Domain 2:   example.com.hk

-   NS:  ns1.example.com.tw

因為上述設定已經運作一段時間，沒人反應有任何錯誤，讓他們覺得 DNS 設定**應該**沒有異常，但為何突然設定新網域後卻是「香港地區」的人無法查詢該網域呢？

我們先來看看 [HiNet 網域註冊](https://domain.hinet.net/) 提供的 DNS 設定畫面 ( 以下是正確的設定範例 )：

![HiNet 網域註冊 :: DNS 設定畫面](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/c2cc3b7bc70b50caa3aa-image.png "HiNet 網域註冊 :: DNS 設定畫面")

你可能很難想像，有多少人在 **DNS Server Name** 這個欄位亂設定一通的，我至少曾經幫數十位客戶設定過上百個 Domain Name 過，有些很久以前就設定好的 DNS 資料根本就是錯的，不然就是該 NS 的 Domain Name 根本沒有定義，所以幾乎是「完全依賴」 **IP Address** 這個欄位的設定，久而久之反而讓許多人誤認為「只要設定對 IP Address 就好了，DNS Server Name 設錯沒關係 」的錯誤觀念。

大部分的客戶都是這樣設定的 ( 以下是錯誤示範 )：

![HiNet 網域註冊 :: DNS 設定畫面](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/c01f7e71d18fcbcfab77-image.png "HiNet 網域註冊 :: DNS 設定畫面")

也許因為 HiNet 老大哥的關係，所以台灣其他網域註冊商也都跟進，設定錯也沒關係，照樣讓你的 DNS 順利運作 ( 是好是壞很難斷定 )。

以我個人註冊國外網址的經驗，大部分網域註冊商在設定網域的 NS 記錄時，只能讓你 Domain Name，根本不讓你輸入 IP Address ( 但有些還是有讓你輸入 )，所以當網域註冊商收到你設定的 NS Domain Name 時就會先做第一次檢核，如果該網域不存在就直接拒絕，讓你重新設定。雖然這樣會增加 DNS 設定成功的困難度，但設定好的 Domain Name 也比較沒問題。

如果你的網域真的是如我所說的這樣設定，那就儘速修改吧，否則真的會有**部分人**無法看到你的網站！

**相關網址**

-   [Squishywishywoo: complete dns traversal checking](http://www.squish.net/dnscheck/)
