我想這是一個很特別的需求,剛好在 TechNet 論壇遇到有人問,而且實作測試過程發生一些狀況,下班騎車回家時又思考了可能的解法(我好像很常邊騎邊想.... /=.=/ ),覺得還蠻值得分享的。

在 Windows Server 的 DNS 服務中建立 WildCard 萬用字元做轉向,其實很簡單,只需要在想設定的網域中,新增一筆 CNAME 別名就可以了。

假設我希望「*.askasu.idv.tw」,也就是任何人手賤手殘在網域的前面亂打或打錯,就會被導到應該要去的正確網址。

在新增 CNAME 別名時,別名的欄位請填入「*」代表萬用字元FQDN 目標主機網域名稱則請填入希望使用者被轉去的網址。由於是設定 CNAME 的關係,所以 FQDN 可以所屬網域的某台主機,也可以是非擁有的外部網域,這邊以微軟的網址為範例。

設定好的結果就是,只要使用者打的不是登記有案的 DNS 記錄,就一定會被導到 WildCard DNS 記錄所指定的位址。從這張圖可以看到,瀏覽器的網址列所呈現的網址,就是那串亂打出來的網址(不過測試發現,CNAME 指定到 www.google.com 卻沒有相同狀況);儘管不影響頁面中的連結及操作,但對於我這種龜毛的人或比較嚴謹的企業來說,是不允許發生的。

於是下班騎車時就一直在思考可能的解法,突然想到或許在 DNS 多建一筆負責轉向的主機記錄,再利用 IIS 網頁伺服器幫忙做導向,就能解決問題。

先建立一筆將用來負責轉向的主機記錄 ( A Record )。
要特別提醒的是,IP 位址正常來說,一定要是可以供外部運作的設定;因為我是偷懶直接用同一台主機,包含 DNS 及 IIS 服務進行測試,所以本文中的 A 記錄都是指向「127.0.0.1」這個 IP。

再將萬用字元的 CNAME 記錄,FQDN 改設定到負責做轉向的 A 記錄。
以範例這樣的設定結果將會是,不論使用者怎麼亂打,都會先被指向到「redirect.askasu.idv.tw」。

檢查設定。

請先用 Ping 進行測試。
從測試可以發現,不管怎麼亂打的確都是導向「redirect.askasu.idv.tw」。透過這張截圖主要想傳達兩個重點:
1. Ping 有助於檢查設定。
2. 在 DNS 設定完成後,務必在用戶端下指令「ipconfig /flushdns」清除所有的 DNS 快取,否則很容易誤以為設定錯誤。

在 IIS 服務中新增「HTTP 重新導向」的功能。(這裡假設已經有安裝過 IIS 網頁伺服器服務)

新增一個站台負責做轉向,並且站台繫結的主機名稱記得設定成與前面做的 DNS A 記錄相同,接著點擊「HTTP 重新導向」。(如果不清楚這段怎麼操作,若不是我中文表達不好,就是你可能要先買書來學)

勾選「將要求重新導向至此目的地」,欄位中填入欲轉向的網址,最後按下右方動作窗格的「套用」,就大功告成了。

至於,萬用字元 DNS 記錄的設定功能可以用於哪些方面?根據強者我朋友過去在中小企業打滾的經驗(我絕對不會說是我),有兩個可以參考:
1. 預防有人打錯公司網址,可統一導向到公司官方網站或一個特定網站,由該特定殊網站提供更多的正確頁面連結資訊。
2. 若公司沒有可過濾不當網站的防火牆,可在公司內部的 DNS 做類似設定。譬如想阻止使用者連到 PPS 網站,就可以在內部 DNS 中,自建 pps.tv 的正向區域,再建立萬用字元 DNS 指到公司內部的某個 IIS 站台,告知該網站已被封鎖,甚至還能開啟 IIS 記錄得知是哪台電腦想連。但前提是,使用者無法自行變更電腦上的 DNS 或 Hosts 設定,只能透過 DHCP 取得完整的 TCP/IP 設定,否則就破功了。

不過扣除第二點的功能,用第一點的理由來建立萬用字元 DNS,我覺得算是很勉強,畢竟善意地幫使用者導到公司官方網站或特定網站,很可能讓使用者永遠都不會記得他應該要去的網站是什麼。再者,若公司的 DNS 及網站是公開對外服務,也不利搜尋引擎透過 DNS 記錄,協助引導使用者至正確的網站。

延伸閱讀:
維基百科 - Wildcard DNS record
微軟技術支援 KB193844 文件 - Explanation of DNS Wildcards
Google 網站管理員工具說明- DNS