OS上にてOSのファイアウォールをウェブで拾った国別のIPリストでウェブで拾ったスクリプトを使ってフィルタするだけです。故に内容とゲームはあまり関係ないです。サーバー構築を専門的にやってる人にとっては大したことない話ですが、個人でゲームのサーバーを建てたい人・建てている人を対象にしたいので、このようなタイトルになりました。専門外の方にもなるべく理解していただけるよう、できる限り丁寧に書くよう心がけました。どのような方法があって、なぜ上記の方法を採ったのか説明したいと思います。確認おわりに日本だけ通すようにはできないの?外国からのアクセスをブロックする方法のあれこれまず、ここから説明していこうと思います。ご家庭でサーバーを建てる場合、大体以下の方法になると思います。ルーターのファイアウォールにルールを定義してフィルタするOS(ここではWindows)のファイアウォールにルールを定義してフィルタするサーバーで提供したいサービスのアプリケーション(ここではゲームサーバー)でフィルタするルールとフィルタという単語が出ましたので説明します。世の中にあるファイアウォールというのは色んな種類があります。そのうち家庭で目にするものは基本的に「これは通さないで」と指定したものを通さないようにする「これは通して」と指定したものを通すといったような動作をします。「△△が□□でない時、アクセスを遮断する(通さない)」という条件の1つ1つをそれぞれルールといいます。1つないし複数のルールを定義し、内部から外部へ・もしくは外部から内部へのアクセスを制限することをフィルタリングと呼びます。ゲームサーバーでフィルタしなかった理由さて、私は3つのやり方の中で今回は2番目の「OS(ここではWindows)のファイアウォールにルールを定義してフィルタする」を選んだわけですが、大した理由があったわけではありません。状況によって変わることもありますが、3番目の「サーバーで提供したいサービスのアプリケーション(ここではゲームサーバー)でフィルタする」というやり方が可能ならばそれに越したことはないと思います。今このブログはWordpressというものが動いていますが、これは国を選んでブロックするプラグインを導入することでフィルタすることができます。当然ながら、その機能がなければフィルタすることができません。ゲームのサーバーの話に戻します。ゲームのサーバーに国別フィルタ機能がなかったので、他の方法を採ったということです。この記事を読んでいる「ゲームサーバーを建てたい」方はまず、ゲームサーバー自身の機能で国別フィルタができないかどうか調べてみてください。ルーターではなくOSでフィルタした理由ルーターによるフィルタとOSによるフィルタはそれぞれ長所と短所があります。家庭用を前提とすると、だいたい以下のようになります。複数台のサーバーがある場合、それぞれで適用しなければならないサーバーマシンのリソースでフィルタしてしまうリソースというのは、CPUやメモリのことです。PCやサーバーなどのコンピューターは、何かするためにメモリやCPUを必要とします。フィルタすることも例外ではありません。どれほどのCPUを使用するかはサーバーによって違いますが、私の場合は気にならない程度だと判断しました。サーバーも1台のみであったため、OSの場合における短所が問題になりませんでした。その一方で、ルーターによるフィルタはとても大変そうだったため、OSによるフィルタを選択しました。準備ここまで外国をフィルタするいくつかの手段と、その中でOSによるフィルタを選んだ理由を説明しました。次は実際にWindows上で簡単にフィルタをかける方法を説明します。ファイアウォールに追加してくれるPowerShellスクリプトです。こちらのダウンロードリンクから保存してください。本家ソースはこちらですが、日本語OSだと動作しないため、多少改変したものをGistに公開しました。PowerShellスクリプトというのは、新しいバッチファイルのスタイルだと思ってください。バッチファイルと違い、PowerShellスクリプトは実行するためにセキュリティの設定を変更する必要があります。10の比較的新しいバージョンならば簡単です。下の[PowerShell]の項目について、チェックが入っている状態で[適用]をします。標準でPowerShellの項目がない場合は開発者モードにします。10ないしそれ以前のOSであるため、この方法が採れない場合はこちらを参考に設定してみてください。blocksからブロックしたい国ごとにzoneファイルをダウンロードします。今回は中国と韓国をフィルタするので、こちらの部分を探します。blocks)左と右のどちらを使ってもいいですが、今回の説明では右のaggregatedを使います。aggregatedについてはページの冒頭にこのような説明があります。soon!まとめられる部分をまとめたので、ファイアウォールがフィルタする時のパフォーマンスが良くなるとのことです。説明を簡単にするため、スクリプトとダウンロードしたzoneファイルをC:ドライブ直下に移動します。PowerShellを管理者権限で起動します。ショートカットで起動できます。下記コマンドでC:ドライブ直下へ移動し、スクリプトを実行します。.\kr-aggregated.zoneコマンドは韓国のファイルでの例です。うまくいけば、このようにOKっぽい表示が出ます。このフィルタを削除する時には、先のコマンドのオプションを少し変えて実行します。.\kr-aggregated.zone実行するとこのように表示されます。察しの良い方はお気づきかもしれませんが、ファイアウォールのルールが引数のファイル名を基準に作られています。ルールを追加した後にzoneファイルの名前を変えてしまうと、削除の際にルールがうまく削除されません。zoneファイルは変えずに保管しておくことをおすすめします。確認ちゃんとルールが追加されたか、もしくは消えたか心配な場合はWindowsファイアウォールを見に行きましょう。詳細設定から、定義されたルールを見ることができます。上記画像から「kr-aggregated-#1」などが追加されているのがわかります。おわりに次は中韓フィルタを使って建てたRustというゲームのサーバー構築について記事にしようかと思います。最後にひとつ、よくある質問への回答を用意させていただきました。日本だけ通すようにはできないの?可能ですが確実ではないのでおすすめしません。この記事では基本的に「これは通さない」というやり方で、韓国と中国のフィルタをしました。日本だけ通す場合は、まず日本のzoneファイルを用意して「これは通す」設定をします。それより優先度が低いルールに「全て通さない」設定をします。これがなぜ確実でないのかというと、国別のzoneファイルがそもそも確実にその国全体のIPを網羅しているとは限らないためです。あることを前提にフィルタした場合、この記事のやり方は「中国だけどアクセスできた」があり得ます。今回のゲームサーバーでは中韓のアクセスを100%阻止したいわけではないため、これは許容できます。逆に日本だけ通す場合は「日本だけどアクセスできない」が起こり得てしまいます。前者と後者、様々な事情によってどちらを優先するかは変わりますが、業務ではなく個人でゆるくゲームのサーバーをたてる程度なら、前者のほうが良かろうという私の判断です。GUIの導入方法この記事を書いた人このえソフトウェアエンジニア幼少の頃から三度の飯よりコンピューターが好き。高校時代に自宅サーバーを始め、それ以来不定期に何かしらのサーバーを作っては畳んでを繰り返しています。本業はPCメーカーでソフトウェアエンジニアをやってます。正式版Rustのゲームサーバーを構築・運用する方法カテゴリーITサーバープログラミングガジェット改造や交換の方法ゲームMODの入れ方サーバーの建て方レビューソフトウェア紹介おすすめの動画おすすめの本おすすめの音楽このえPCゲームのMODやサーバー、ITやソフトウェアの情報を発信しています。本業はソフトウェアエンジニア。レビューなどのお仕事も受け付けております。ご依頼はメールかTwitterにてお願いいたします。