Google Dns 與 Cloudflare 新增 Minecraft SRV 紀錄

雖然前陣子有發文如何找出 SRV 真實 IP,不過總是要來個,那麼如何新增 SRV 紀錄呢?
現在常見的 DNS 代管蠻流行的就屬於 CloudFlare,而我因為工作因素也有接觸到 Google DNS,CloudFlare 的 SRV 較為淺顯易懂,一個蘿蔔一個坑,那邊要填入東西就填入,Google DNS 就沒那麼友善了。

CloudFlare 示範:
畢竟 SRV 終究要指向一個真實的位置,所以要先在上面設定一個 A 與 AAAA 紀錄,不過我相信台灣多數是沒有 IPv6 可用,所以新增 A 紀錄即可

假設我希望玩家可使用 crlab.com.tw 連上我的創世神伺服器,而其實 crlab.com.tw 是指向某個隱藏好的 A 或 AAAA 紀錄,例如可能是 XDXD.crlab.com.tw 那麼就先新增一個相關紀錄。

Name 例如本次的 XDXD,IPv4 就填寫主機的 IP,後面有個橘色雲記得關閉,之後按下綠色的 Add Record,完成後就能新增 SRV 紀錄。

Service name 填寫 _minecraft,Protocol 預設的 TCP,Name 因為我想要使用 crlab.com.tw 所以就填寫 @,假設想要玩家使用 server.crlab.com.tw,那麼 Name 就要填寫 server。
接下來就是填寫目標主機與 Port。

第一與第二維持 1 即可,第三個假設伺服器使用 25565 就填寫 25565,Target 就填寫要指向的目標,例如 XDXD.crlab.com.tw。
接下來玩家就能透過 crlab.com.tw 連線到伺服器。

Google DNS 示範:
其實 Google Dns 的 SRV 設定挺不友善的,不像 CloudFlare 有指引,不過其實記得那邊該填寫什麼就好。

提示只有 0 1 587 這誰知道呢?其實多設定記一下就知道就好,概念上也是相同,需要有個真正的 A 或 AAAA 紀錄,接下來新增 SRV 紀錄來對應就好。


DNS 名稱就填入 _minecraft._tcp, SRV 紀錄則是 0 0 Port位置 目標主機,例如:0 0 25565 host.crlab.com.tw

找出 Minecraft 伺服器真實 IP

找出伺服器 IP 其實挺簡單的,除了一般常見 DNS 設置 A 與 AAAA 紀錄外,現在更流行於創世神伺服器的則是 SRV,雖然能理解為了避免被找出真實 IP 而被攻擊,不過還是來教簡單的方式找出真實 IP。

一般而言常見的 A 與 AAAA 記錄透過簡單的 Ping 或是 nslookup 即可輕鬆找出真實 IP,雖然 Ping 伺服器不一定會有回應,不過當你 Ping 某機器時他的 IP 就會被透露出來,這很多人都會也沒什麼技術上的難度。

IPv4

IPv6

不過有些情況下就會遇到 nslookup 查不到,但是 Minecraft 又能連上該伺服器,基本上就能判定該伺服器使用 SRV 紀錄。

不用安裝軟體,Windows 與 Linux 和 macOS 都有內建 nslookup 指令,使用 nslookup 指令再透過一些參數即可輕鬆找出真實位置。

開啟命令提示字元或是終端機,輸入 nslookup 之後再輸入 set type=srv,即可切換為查詢 SRV 紀錄。


之後便能輸入目標來查詢,一般而言假設連上伺服器的位置是:facebook.com,那麼你需要在前端加入 _minecraft._tcp.,也就是 _minecraft._tcp.facebook.com,所以把整段 _minecraft._tcp.facebook.com 打在剛剛開的且設定過查詢目標的 nslookup 就能查出 SRV 紀錄。

真實目標不會是 IP,可能是一個被隱藏好的 A 與 AAAA 紀錄,不過無所謂,只要 A 或 AAAA 紀錄顯示出來,就能簡單的 Ping 一下或是透過 nslookup 查詢真實 IP。

剛剛的 nslookup 可以再輸入 set type=a 或是 set type=aaaa,不過以台灣來說超過 95% 以上使用 set type=a 即可,再輸入剛剛查詢到的真實目標,即可找出真實 IP。

簡單測試一下巴哈我的世界上的一些伺服器。

當然 _minecraft._tcp. 這段是可以更改的,不過透過軟體 wireshark 撈一下 Minecraft 連線時的封包也能簡單找出紀錄,有機會再來教。

至於找出真實 IP 可以做什麼,難不成是攻擊?當然不是,有了主機確切的 IP,就可透過 traceroute 來檢視連線至伺服器的路徑有無異常,或是用來更嚴苛的用途,例如某伺服器可能打著我們使用高級的 OVH 主機,查到之後卻發現原來不過就是個 hinet 的位置,那麼該伺服器的說法就有疑慮。

看延遲大約 230ms 上下,可猜測該伺服器幾乎不可能在國內,若在遊戲中遊玩可能會感受些許的延遲。

查看路徑,確認伺服器應該是在加拿大。

查 IP 資料可見是 OVH 的主機。

所以找出真實 IP 是有其必要性,對於玩家找電信除錯或是回報路由問題,電信業者也會要求提供 traceroute 資料,如果不知道真實 IP 怎麼去測試呢?