Teisyoku Server 公式ホームページ

PC版 Minecraftの公開サーバです。

誰でもご自由に参加が可能です。

 参加方法はこちら

DynmapのURLをIPアドレスレベルで変更したかったのでメモを残します。経緯は以下の通りです。

Minecraftの公開サーバーではお馴染みのDynmapですが、設定を変更していなければ「***.***.***.***:8123」ってなりますよね。
「:8123」を取り除きたいのであれば単純に「:80」の設定に変更すれば「***.***.***.***」でアクセスできるようになります。

私もこれで解決しようと思ったのですが、うちはログインするサーバーとゲームサーバーを分けているので「***.***.***.***」ですら隠匿したかったんです...。
なのでサーバーへの接続アドレスを「play.minecraft.jp.net」ってしているのでこれを活用したいなと思いました。(BungeeCord + Spigotって環境でサーバーを分けています)

Minecraftは「play.minecraft.jp.net」と接続試行すると「play.minecraft.jp.net:25565」となって接続試行されます。
WEBページは「play.minecraft.jp.net」と接続試行すると「play.minecraft.jp.net:80」となって接続試行されます。

ですのでWEBページ(ChromeとかFirefox)で「play.minecraft.jp.net」って接続したら隠匿しているゲームサーバーのDynmapを呼び出せるようにしたかったのです。
その方法を簡単ですがご紹介します。

 

  • CentOS7
  • Firewalld
  • BungeeCord(ログインサーバー)
  • Spigot(ゲームサーバー)

※ログインサーバーとゲームサーバーは別のグローバルIPアドレスが割り当てられています。

 

BungeeCordの設定は各自行ってください。ここではFirewalldの設定を中心に行います。

まずはログインサーバーの25565ポートを解放しておきましょう。

[user@*** ~]# firewall-cmd --zone=public --add-port=25565/tcp
success

次にFirewalldの設定を確認します。

[user@*** ~]# firewall-cmd --list-all --zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http
  ports: 25565/tcp
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

とくに何も弄ってないですが環境によっては若干違うと思います。

 

パケットを別のサーバーに投げて受信できるマスカレード設定を行います。

[user@*** ~]# firewall-cmd --zone=public --add-masquerade
success

飛ばすための前準備ができたら80番ポートに来たパケットをゲームサーバーの8123ポートに飛ばす設定をしましょう。

[user@*** ~]# firewall-cmd --permanent --add-forward-port="port=80:proto=tcp:toaddr=***.***.***.***:toport=8123"
sucess

***.***.***.***にはゲームサーバーのアドレスを入れてくださいね。

設定を反映させます。

[user@*** ~]# firewall-cmd --reload
success

設定を確認します。

[user@*** ~]# firewall-cmd --list-all --zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http
  ports: 25565/tcp
  protocols:
  masquerade: yes
  forward-ports: port=80:proto=tcp:toport=8123:toaddr=***.***.***.***
  sourceports:
  icmp-blocks:
  rich rules:

25565のポートは解放されてますし、マスカレード設定もされてます。ポートフォワード設定もできてますのでログインサーバーの設定は終わりです。

 

 

25565ポートと8123ポートには知らないところからアクセスされると困りますのでリッチルールでログインサーバーからのパケットのみ許可しましょう。
***.***.***.***はログインサーバーのアドレスを入力しましょう。

[root@*** ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="***.***.***.***" port port="8123" protocol="tcp" accept'
success

[root@*** ~]# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="***.***.***.***" port port="25565" protocol="tcp" accept'
success

 

設定を反映させます。

[user@*** ~]# firewall-cmd --reload
success

設定を確認します。

[root@133-130-116-112 ~]# firewall-cmd --list-all --zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:
        rule family="ipv4" source address="***.***.***.***" port port="8123" protocol="tcp" accept
        rule family="ipv4" source address="***.***.***.***" port port="25565" protocol="tcp" accept

8123と25565のパケットを***.***.***.***からのアクセスであれば許可するようにできました。

 

 

plugins/dynmap/configuration.txtを書き換えます。

webserver-bindaddress: 0.0.0.0

設定を反映するためにコンソール等からリロードします。

/dynmap reload

 

 

以上の手順を踏めばMinecraftへログインするアドレスとDynmapのアドレスが一緒になったのではないでしょうか。
なお Teisyoku Server のDynmapはこちらです。

リンク: Teisyoku Server -Dynmap

今回は隠匿がメインになりました。Dynmap以外にも使えると思いますし、「dynmap.minecraft.jp.net」などにしたければサブドメインに「dynmap」とかを割り当ててHTMLのiframe要素で埋め込むのも手軽で良いと思います。

 

作成日: 2017/03/07 14:54    最終更新:2017/03/07 15:27