Kanade Labo

かなで研究所

Minecraftマルチサーバ作成 Part6(ポート開放編2)

こんにちは かなで です。

Minecraftサーバを立てるべく、前回は、

外部からOCI(Oracle Cloud Infrastructure)上の、Minecraftサーバ向けの仮想マシンにアクセスできるようにするべく、OCIにてポート開放を行いました。

これで、仮想マシンまではアクセスできるようになったと思いますが、

今度は、仮想マシン側が拒否している状態なので、仮想マシン側でポート開放を行ってあげる必要あります。

今回は、その仮想マシン側でのポート開放記事となります。

前回のおさらいですが、Minecraft用のサーバに外部からアクセスするためのポートは【19132】です。

ポート開放はコマンドで実施していくので、まずは、Teratermを使用して仮想マシンにログインします。

はい、ログインしました。

ちなみに私の書いた記事の通りに、Teratermをインストールし、仮想マシン(インスタンス)を作成している方は、以下のように表示されているはずです。

ですが、赤塗部分には、サーバ名だったり、IPアドレスだったりが表示され、記事作成のフィルタが面倒になりそうだったので、ちょっと設定を弄って表示を変更していますが、皆さまは変える必要がないので割愛させていただきます。

続けます。

idと入力すると、uid=1000(opc)~と表示されます。

opcアカウントでログインしているからですね。

これをrootアカウントに昇格します。この仮想マシンをなんでもできる権限を持つアカウントです。

文字通りなんでもできるので、操作を誤ると、仮想マシンを動かなくすることも簡単です。

(opcでもできるでしょうが)

余計なことをしない前提で、とりあえずroot権限になっておきます。

そのコマンドは「sudo -s」

実行すると

rootと表示されるので、idを実行すると

uid=0(root)と表示されましたね。

これでroot権限を持った状態になりました。

それでは、次は、今現在のセキュリティ状態を確認します。

「systemctl status firewalld」と入力します。(=ファイアウォールの起動状態を確認)

[root /home/opc]#systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2022-03-02 12:41:33 GMT; 2 days ago
     Docs: man:firewalld(1)
 Main PID: 1505 (firewalld)
    Tasks: 2 (limit: 3927)
   Memory: 21.7M
   CGroup: /system.slice/firewalld.service
           mq1505 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

緑で表示されていますが、「Active: active (running)」となっていることを確認します。(=ファイルウォールは起動中)

次は、ポート開放の状況を確認です。

「firewall-cmd --list-all」

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources:
  services: ssh
  ports:
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

ちょっと蛇足ですが、これを見ると「services:ssh」とありますね。これは「ssh」でのアクセスを許可している。と読めます。

ここで確認すべきは「ports:」の欄ですが、今は空欄になっていますよね?という事は、ポートを指定した許可は行っていないという事になります。

つまり、外部から、仮想マシンの19132番ポートにアクセスしても、ここの設定で弾かれていることになりますので、ここに設定を追加してあげる必要があります。

ではどうすればよいか。

「firewall-cmd --add-port=19132/udp --permanent」

これは「19132番ポートのUDPでのアクセスを許可する」という設定になります。

successと表示されました。

では、改めて「firewall-cmd --list-all」を実行します。

おっと何も変化がないですね。忘れていました。

先ほどのコマンドで「19132番ポートのUDPでのアクセスを許可する」という設定を入れましたが、これは「ただ入れただけ」

この設定を「反映させて実際にその設定を有効にする」という処置が必要になります。

それがこちら

「firewall-cmd --reload」

こちらもsuccessとなりました。これで設定が有効になったはずですので…

はい。無事、ports: 19132/udpと表示されました。

これで19132番ポートへのUDPでのアクセスが許可された状態となります。

ではいよいよ、アクセスチェックをしてみようと思います。

コマンド「nc -lu 19132」と打ちます。

すると、何も表示されない状態で止まります。

これは、「19132番ポートで、UDPでの通信が送られてくる情報を待っている」という状態です。

ポートがちゃんと解放されていれば、外部からUDPで信号を送ることができるはずです。

この状態で、手元のWindowsのコマンドプロンプトより、以下の順番でコマンドを入力していきます。

「powershell」

「$Encode = new-object System.Text.ASCIIEncoding」

「$sendBytes = $Encode.GetBytes("test")」

「$udpTest = New-Object System.Net.Sockets.UdpClient」

「$udpTest.Send($sendBytes,$sendBytes.length,"****", 19132)」

赤塗部分は、仮想マシンのIPアドレスです。

これらを実行すると、Teraterm側は以下のようになります。

「test」と表示されていますね。

つまり、手元のWindowsから仮想マシンの19132番ポートに「test」という文字列を送り付けたところ

仮想マシン側でも、「test」という文字列を受け取ったという事になります。

という事は、仮想マシン側のポート開放も成功したという事ですね!

これでやっと、Minecraftサーバが外部との通信ができるようになったという事になります。

このままでは、ずっと待ち受け状態なので…

「Ctrl+C」を押すと、待ち受け状態を終了させることができます。

余談ですが、UDP待ち受けを終了させても、Windows側から送っても同じように結果が表示されます。

では次回から、Minecraftサーバの構築が始まります。

最後までお読みいただきありがとうございました。
気になることがあったら、コメント頂けると嬉しいです。
自主学習も兼ねて記事にするかもしれません。

-Minecraft, 統合版マルチ