今回は、NginxのStreamモジュールを使用してMinecraftサーバーとの通信をプロキシして国IPごとのアクセス制御をしてみようかと思います。
1.Nginxのインストール
$ sudo su
$ apt update
$ apt install nginx
$ systemctl start nginx
$ systemctl enable nginx
上の手順が終わったら、「http://サーバーののローカルIPアドレス」にアクセスして「Welcome to Nginx!」と表示されれば正常にNginxのインストールができています。
2.Streamモジュールの有効化
まず、モジュールの設定ファイルの一部を変更します。
$ cd /etc/nginx/modules-enabled
$ vim 50-mod-stream.conf
50-mod-stream.conf の中身が
load_module modules/ngx_stream_module.so;
になっているので、
load_module /usr/lib/nginx/modules/ngx_stream_module.so;
に変更します。
続いて、Nginxの設定ファイルの編集です。
$ cd /etc/nginx
$ vim nginx.conf
nginx.conf の最終行に
stream {
include /etc/nginx/conf.d/*.stream;
}
と追記します。
最後に
$ systemctl restart nginx
でNginxを再起動します。これでStreamモジュールが利用可能になりました。
3.Minecraftサーバー側の設定とNginxの設定
Minecraftのサーバーがあるディレクトリに移動します。
server.properties では
server-port=25565
がデフォルトですが、今回25565番ポートはNginxのプロキシでリッスンするため別のポート、今回はわかりやすく25566に変更します。
変更したらMinecraftサーバーを再起動してください。
続いてNginxに25565番ポートをプロキシする設定をしていきます。
$ cd /etc/nginx/conf.d
$ vim minecraft.stream
今回はminecraft.streamというファイルに記載していきます。
upstream minecraft {
server 127.0.0.1:25566;
}
server {
listen 25565;
proxy_pass minecraft;
}
上ように記載して、
$ systemctl restart nginx
最後にNginxを再起動します。以上でNginxでMinecraftサーバーの接続をプロキシできるようになりました。
4.アクセス制御
次に、国ごとのIPアドレスのアクセス制御を行います。
今回は日本以外の国からの接続を規制してみます。
まず、国ごとのIPアドレスのリストが記載されているサイト(http://nami.jp/ipv4bycc/)からそのリストをダウンロードします。
$ cd /usr/local
$ mkdir ipv4list
$ cd ipv4list
$ wget http://nami.jp/ipv4bycc/cidr.txt.gz
$ gunzip cidr.txt.gz
これで国別IPアドレスのリスト「cidr.txt」が入手できます。
続いて、このリストの中から日本国内のIPアドレスだけを抜き出し、許可するファイルを生成します。
$ sed -n 's/^JP\t\(.*\)/allow \1;/p' cidr.txt > /etc/nginx/japanip.conf
生成されたファイルをminecraft.streamに適用し、Nginxを再起動します。
$ cd /etc/nginx/conf.d
$ vim minecraft.stream
upstream minecraft {
server 127.0.0.1:25566;
}
server {
include /etc/nginx/japanip.conf;
deny all;
listen 25565;
proxy_pass minecraft;
}
$ systemctl restart nginx
以上で、日本国内以外からのアクセスを制限することができました。
コメントを残す