為 Minecraft 伺服器設定域名及 SRV 記錄教學

此篇文章為架設Minecraft伺服器的延伸教學,在此篇文章中筆者將會示範如何為Minecraft伺服器設定你所註冊好的域名,並且如果你有變更到Minecraft伺服器的Port號,那此篇文章也會進一步指引使用者要如何在DNS設定介面來設定一筆SRV記錄。

此篇教學將會使用兩家域名註冊商的DNS設定介面來做示範,那兩家域名註冊商分別為Google經營的Google Domains服務,以及Cloudflare經營的Cloudflare Registrar服務來做範例。在參考本篇教學之前,請自行準備好一組域名,這可以向你信賴的域名註冊商註冊,比如筆者目前比較喜歡用的這兩家Google DomainsCloudflare Registrar。此篇文章主要延續之前寫的Spigot架設多人遊玩的Minecraft伺服器-於Ubuntu環境中示範,這邊有一些指令,比如『/etc/init.d/minecraft <指令>』這樣的格式,是用到那篇教學的shell script,所以如果你不是參考那篇教學來架設Minecraft伺服器的話,那指令無法執行是正常的,而你需要自行更改成適用你系統環境的指令。

1)將註冊好的域名指向Minecraft伺服器的IP位址。

Step 1:如果你的Minecraft伺服器是公開在網路上的,且也有固定的IP位址,那就可以來為你的Minecraft伺服器設定好域名了。在為Minecraft伺服器綁定你要的域名之前,你要自己準備好你需要的域名,比如跟域名註冊商購買之類的,然後就可以經由域名註冊商的DNS設定介面來指向你Minecraft伺服器的主機IP位址。以下教學筆者會使用兩家域名註冊商的DNS設定介面來做示範,那兩家域名註冊商分別為Google的Google Domains服務,以及還有Cloudflare的Cloudflare Registrar服務,然後接著在DNS設定介面來設定好A記錄(A record;IPv4位址)的資源紀錄,當然如果你的Minecraft伺服器的主機也有IPv6位址,那你可以自己再新增一筆AAAA記錄(AAAA record;IPv6位址)的資源紀錄。

Google Domains

Step 1:如果你跟筆者一樣是使用Google的Google Domains服務,那在Google Domains的DNS設定介面中,可以看到自訂資源記錄的部分,在『名稱』欄位這邊,如果你要跟筆者一樣有要使用子域名的話,那就輸入你想要填入的子域名,如筆者是輸入了『mc』的子域名,當然如果你不要使用子域名,那可以輸入『@』或直接留空;在『類型』下拉式清單這邊,因為是要設定IPv4位址,所以就選擇『A』;『TTL』(Time to Live;存留時間)欄位就輸入你要此筆資源記錄的更新頻率,一般來說伺服器還在架設階段(測試階段),那會把TTL的值設定短一些,例如:『10m』(10分鐘),等到伺服器正式上線(穩定階段)就會把TTL的值設定比較長,例如:『1h』(1小時』,甚至『1d』(1天);在『資料』欄位,以A記錄來說,當然就是要輸入IPv4的位址了。如下圖所示可以看到筆者使用了Google的Google Domains服務,來完成設定了一筆A記錄。

在Google Domains的DNS設定介面上設定一筆A記錄-mcserversrvrecord001

 

Cloudflare DNS

Step 1:如果你是使用Cloudflare的Cloudflare DNS服務,如下圖所示在『Type』下拉式清單選擇『A』;在『Name』欄位假如你的Minecraft伺服器需要子域名,那就輸入你想要填入的子域名,如筆者是輸入了『mc』的子域名,當然如果你不要使用子域名,那可以輸入『@』;在『Content』欄位就輸入IPv4位址;及最後一個『TTL』下拉式清單就選擇『Automatic TTL』就可以了,然後就點擊『Add Record』。

在CloudFlare的DNS設定介面上設定一筆A記錄-mcserversrvrecord002

 

Step 2:如下圖所示筆者在Cloudflare的DNS服務上新增了一筆資源記錄。

已完成一筆A記錄的新增-mcserversrvrecord003

 

Step 2:A記錄的DNS設定完成之後,然後就可以在Minecraft遊戲編輯伺服器資訊,如下圖所示『伺服器位址』輸入你剛剛設定好的域名,並點選『完成』。

在Minecraft遊戲程式上來編輯伺服器的資訊-mcserversrvrecord004

 

Step 3:如果你輸入好域名之後還是無法連線至你的Minecraft伺服器,那可以使用ping指令來測試你剛剛設定的DNS是否已經更新,而ping指令在各個系統環境的格式如下:

ping <你所設定好的域名>

如下圖所示可以看到筆者已經ping通筆者所設定好的域名,這就表示已經可以連上Minecraft伺服器了。

可以使用ping工具來測試剛剛設定好的A記錄是否生效-mcserversrvrecord005

 

Step 4:在Minecraft遊戲的多人遊戲這邊,可以點選如下圖所示的『重新整理』,就可以看到已經可以連上Minecraft伺服器的狀態,那就直接點擊連線至你所架好的Minecraft遊戲世界吧。

可以來連線至Minecraft伺服器了-mcserversrvrecord006

 

Step 5:如下圖所示可以看到筆者已成功連線到筆者所架設好的Minecraft世界。

已成功連上Minecraft伺服器-mcserversrvrecord007

 

2)更改Minecraft伺服器的Port號。

Step 1:Minecraft伺服器的預設Port號是『25565』,如果你要更改你所架設的Minecraft伺服器Port號這也是可以的,在Minecraft伺服器有一個稱為『server.properties』的設定檔,在這個設定檔中有一個稱為『server-port』,而這設定是拿來更改你Minecraft伺服器的Port號。如果你是參考筆者這篇Spigot架設多人遊玩的Minecraft伺服器-於Ubuntu環境中示範的教學,那『server.properties』檔案的路徑位置如下:

/home/minecraft/server/server.properties

如筆者是使用Vim編輯器來編輯『server.properties』檔案,那指令格式如下:

vim /home/minecraft/server/server.properties

調整Minecraft伺服器的Port號-mcserversrvrecord021

 

**在電腦網路中,Port號是有範圍的,範圍為『0~65535』之間,而這範圍中並不是每一個Port號都能使用,如前面的『1~1023』是系統保留的,為了不要影響其他程式正常的執行,建議可以設定的範圍為『5000~65535』之間選一個你要的Port號。

Step 2:如下圖所示筆者將Minecraft伺服器的Port號改成『server-port=12345』。更改完Port號及儲存好設定之後,記得要重啟你的Minecraft伺服器。

/etc/init.d/minecraft restart

調整Minecraft伺服器的Port號-mcserversrvrecord022

 

Step 3:Minecraft伺服器重啟完成之後,因為有變更到Port號,如下圖所示點選『重新整理』都會出現無法連上Minecraft伺服器的狀態。

可以看到目前的Minecraft伺服器是無法連線的-mcserversrvrecord023

 

Step 4:接著就來編輯伺服器資訊吧,在域名的後面加上Port號,如筆者Minecraft伺服器的Port號是設定12345,那就在域名的後面加上『:12345』。編輯完成之後,點選『完成』。

**域名和Port號之間會有冒號隔開,不要忘記要加上『:』。

<你Minecraft伺服器的域名>:<你所設定好的Port號>

來編輯伺服器的資訊,在域名的後面添加Port號-mcserversrvrecord024

 

Step 5:如下圖所示點選『重新整理』,就可以看到已經可以連上Minecraft伺服器的狀態了,那就直接點擊連線至你的Minecraft遊戲世界吧。

可以看到伺服器又可以重新連線了-mcserversrvrecord025

 

Step 6:如下圖所示可以看到筆者已成功連線到筆者所架設好的Minecraft世界。

已連上Minecraft遊戲-mcserversrvrecord026

 

3)為Minecraft伺服器設定一筆SRV記錄。

**如果你沒有更改Minecraft伺服器的預設Port,那可以不用額外設定SRV記錄,也就可以忽略此項。

Step 1:假如你有更改Minecraft伺服器的預設Port號,那有一個問題就是域名的後面都要額外加一個Port號才能連上Minecraft伺服器,如果你不想要在域名的後面添加Port號,這其實是可以解決的,在DNS的設定中,有一個稱為SRV記錄(SRV record;Service record)的資源記錄,SRV記錄會協助你將主機特定服務的Port號對應到你所設定好的網域名稱,使用者只需知道你所設定好的域名,而不必知道執行的服務是使用哪個IP位址和Port號。在設定SRV記錄記錄之前,你要確定你的域名註冊商或你使用的DNS服務是否有提供SRV記錄的設定,下面教學筆者一樣會使用前面提到的兩家域名註冊商的DNS設定介面來做示範。在設定Minecraft的SRV記錄之前,筆者會先列出SRV記錄的格式,這格式在其他不同的DNS服務設定介面上,都可以進行參考:

_服務._協定.名稱. SRV TTL時間 優先順序 權重 Port號 目標.

比如說筆者在前面設定的主機Minecraft伺服器Port號是指定到『12345』,而DNS A記錄的域名是設定『mc.example.com』,那筆者的Minecraft SRV記錄是會是這樣的:

_minecraft._tcp.mc.example.com. SRV TTL 0 5 12345 mc.example.com.

Google Domains

Step 1:Google Domains的DNS設定介面要設定SRV記錄會比較複雜一些,你可以按照筆者上面提供的SRV記錄格式來將資料輸入至相對應的欄位中,如下圖所示可以看到筆者已在Google Domains的DNS介面上新增了一筆SRV記錄。

在Google Domains的DNS設定介面上設定一筆SRV記錄-mcserversrvrecord041

 

Cloudflare Registrar

Step 1:在Cloudflare的DNS介面新增SRV記錄會比Google的DNS介面來說是相對簡單很多,你只需按照各個欄位的資訊來輸入相對應的資料,就很簡單的將SRV記錄設定完成,如下圖所示的下拉式清單選擇『SRV』記錄,就會跳出一個『SRV name』的視窗,就將欄位要求的資料輸入進去,欄位分別是Service就輸入『_minecraft』;Protocol下拉式清單選擇『TCP』;Name欄位就輸入域名(如有子域名,子域名也要輸入),如筆者的是『mc.example.com』,完成後就點選『Save』。         

在CloudFlare的DNS設定介面上新增一筆SRV記錄及設定SRV名稱-mcserversrvrecord042

 

Step 2:接著在『SRV content』視窗,要輸入的欄位分別是Priority就輸入『0』;Weight欄位就輸入『5』;而Port就輸入你Minecraft伺服器的Port號,如筆者設定是12345,那就輸入『12345』;及最後Target欄位就輸入域名(如有子域名,子域名也要輸入),如筆者的是『mc.example.com』,完成後就點選『Save』。

在CloudFlare的DNS設定介面上設定SRV內容-mcserversrvrecord043

 

Step 3:如下圖所示可以看到已輸入好一筆SRV記錄,接著點擊『Add Record』來新增剛剛輸入好的SRV記錄。

儲存在CloudFlare DNS設定介面上所新增的SRV記錄-mcserversrvrecord044

 

Step 4:如下圖所示可以看到筆者已在Cloudflare的DNS介面上新增好一筆SRV記錄。

已在CloudFlare DNS新增了一筆SRV記錄-mcserversrvrecord045

 

Step 2:接著在Minecraft遊戲來編輯伺服器資訊,將域名後面的Port號刪掉,及點選『完成』。

在Minecraft遊戲端將域名後面的Port號刪除-mcserversrvrecord046

 

Step 3:如下圖所示點選『重新整理』就可以看到不用加入Port號,就能連上Minecraft伺服器的可連線狀態,那就直接點擊連線至你的Minecraft遊戲世界吧。

可以再次連線至Minecraft伺服器-mcserversrvrecord047

 

Step 4:如下圖所示可以看到筆者已成功連線到筆者所架設好的Minecraft世界。

已成功連上Minecraft伺服器-mcserversrvrecord048

 

4)使用nslookup指令來查詢Minecraft伺服器的SRV記錄。(此項為額外補充,可忽略)

Step 1:如果你要查詢你設定好的SRV記錄,這其實也很簡單,經由DNS偵錯工具的nslookup指令,就很容易查出你Minecraft伺服器所使用的Port號,如下圖所示筆者在Windows環境使用nslookup指令來查看筆者為Minecraft伺服器所設定的SRV記錄。以下筆者列出nslookup查詢SRV記錄的指令格式:

nslookup -type=SRV _minecraft._tcp.<域名>.

查詢SRV記錄的指令-mcserversrvrecord061