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サーバの構築が始まります。
最後までお読みいただきありがとうございました。
気になることがあったら、コメント頂けると嬉しいです。
自主学習も兼ねて記事にするかもしれません。