Battle.net で、リアルタイムマルチプレイロールプレイングゲームのDiablo(Diablo1)が年末年始セールにて格安で売られているのを発見。
買ってしまいました。
現在 Diablo4 が最新ですが、Diablo1はその原点。私は1987年頃、Diabloに熱中していました。当時のネットワーク環境は、アナログ電話とモデム。シリアルケーブルとモデムをつなぐので、グローバルIPアドレスが直接Windows PCに割り当てられます。確かOSはWindowsNTか95。ファイヤーウォールが有効だったかどうかは定かじゃありません(恐らくNortonを動かしていたんじゃないかと)が、Windows自体がファイヤーウォールを稼働させて、動いているアプリへだけパケットを通していたので、ファイヤーウォール設定で悩む事はなく、ゲームインストール、即、ネットワークプレイできていました。Diabloゲームが使っていたのは、UDPパケットで port 6112-6119 が通れば4人までリモートプレイできる。(同一LAN上に4台のゲームPCを持ち込み、IPではなくIPXでプレイしたり、電話回線で直接相手PCに接続して、二人プレイもできた。)
現在のダウンロード版 Diablo1も、Battle.netに接続してプレイするには、ファイヤーウォールに UDP 6112-6119 の穴を開けて、ゲームプレイPCとBattle.net のDiablo1サーバーが通信できるようにしなくてはならないのですが、我が家のルーター、OPNsense のデフォルトでは、UDP port 6112 は(当然)開いていません。
OPNsense設定画面で、ファイヤーウォールに新しいルール、src any:6112-6119、dest any:6112-6119 という感じで穴を開けて、Diablo1を起動、マルチプレイを開いたのですが、Battle.netチャットは使えるものの、ゲームを作ることは出来ない。
なぜ?
ファイヤーウォールのログを見てみたら、battle.net からの 6112 UDP パケットがブロックされていました。
別のルーターアプライアンスを使っていた時は、これで良かったはずなんですけど。う~、わからん!
使っているOPNsenseでBattle.netのプレイ方法を検索してみたところ、わかりました。
私が過去使っていたルーターは、PCからUDP 6112パケットが出ると、同じポートを使って戻ってくるパケットを覚えていて、Diablo1 PCに戻ってきて通信が成り立っていたのですが、OPNsense は NATテーブルを定義しないとファイヤーウォール内側のIPアドレスを自動では認識しないとのこと。ファイヤーウォールルールではなく、NATテーブルで指定するんだそうです。
- OPNsense Firewall→NAT → Port forward にルールを登録。(ファイヤーウォールルールは削除)
- NATの設定で、src any:any dest any:6112-6119 のパケットを、ゲームPCのIPアドレスにそのまま転送するように設定追加。
これで、Diablo1のbattle.net プレイが出来るようになりました。
長い道のりでした。
余談ですが、Diabloは拡張パックのHellfire とセットで販売されています。
Diablo1は第一世代Diabloですので、アイテムの拾い方、格納スペースなどイライラする点が多い。中でも最大の欠点が、キャラクターの移動速度が遅いという点。Diablo2以降、移動速度問題は解決されるのですが、Hellfire拡張パックをインストールすると、移動速度が速くなりある程度快適になります。
しかし、Hellfire はネットプレイできない~。
今さら、28年前のゲームをプレイする意味ある?と言われそうですが、原点はプレイできるようにしておきたいのよ。
ゲームの話になりましたが、このメモは、OPNsense のファイヤーウォール設定追加に関しての記録でした。

