ゲームプロセスがUDPソケットをVPNインターフェイスにバインドしない


1

最近、友達とLANゲームをプレイするためのVPNを設定しました。Linuxサーバーを実行pptpdしていて、オペレーティングシステムに組み込まれたVPNクライアントを使用してWindowsに正常に接続できました。VPNがクライアント間で情報を正しくルーティングすることをテストしました(ブロードキャストメッセージを含む)。システムで最高の優先度が与えられている各クライアントに仮想ネットワークアダプターを作成します。これは、すべてのネットワーク接続がデフォルト(例えばWebブラウザ)で、それを使用して名前のクエリを実行するとき、それが最初に返されます(例えば結果は以下のようにソケットAPIから返された意味getaddrinfo()gethostbyname())。私が抱えている問題は、プレイしたい特定のゲームがUDPソケットを正しいネットワークインターフェイスにバインドしていないことです。代わりに、ゲームプロセスは元のネットワーク接続のインターフェイスに明示的にバインドします(Windowsのeth0またはに相当wlan0)。VPNアダプター(Windowsに相当するppp0)にバインドする必要があります。

この特定のゲームは、EA GamesによってBattle for Middle-Earthと呼ばれています。LANマルチプレイヤーロビー内では、ゲームはUDPポート8086にソケットをバインドします。このポートを使用して、ブロードキャストデータグラムを送信し、利用可能な他のピアにアラートを送信し、他のピアからアラートを受信します。8086が使用できない場合、次の順次ポートにバインドします。このため、同じブロードキャストメッセージのコピーをポート範囲(つまり、8086..8095)に送信します。ゲームが開始されると、ピアはブロードキャストではなく、指示されたデータグラムを互いに送信し始めます。現在のところ、VPNに到達しているゲームトラフィックはありません。ネットワーク(VPNサーバーによって割り当てられる)ではなく、ネットワーク(ホームルーターによって割り当てられる)にnetstatバインドされたゲームを示す出力を次に示します。10.0.1.0/24192.168.0.0/24

UDP    10.0.1.18:137          *:*
UDP    10.0.1.18:138          *:*
UDP    10.0.1.18:1900         *:*
UDP    10.0.1.18:8086         *:*   this is BFME
UDP    10.0.1.18:51955        *:*
UDP    127.0.0.1:1900         *:*
UDP    127.0.0.1:51956        *:*
UDP    192.168.0.100:137      *:*
UDP    192.168.0.100:138      *:*
UDP    192.168.0.100:1900     *:*
UDP    192.168.0.100:51954    *:*

ゲームが使用するインターフェイスを選択することは明らかです。これは、他のピアのアドレスを決定するために、ユーザーのLANをディスカバリメッセージであふれさせる必要があることを考えると理にかなっています。しかし、VPNはインターネット接続を介してLANを提供することを想定していませんか?なぜゲームが優先順位の高いVPNインターフェースではなく古いインターフェースを選択するのですか?私は、WindowsがVPNネットワークをLANとして構成できるようにするための、あいまいな設定が必要だと考えています。しかし、私はそれを見つけるのに最も苦労しています。

正しい方向への助けをいただければ幸いです!

後付けとして:ゲームがNetBIOS機能を使用していることを知っています(関数インポートのリストをダンプしました)。また、(歴史的に)ピアのいずれかが同じワークグループのメンバーでない場合は無視されることも知ってます。私が直面している問題は、ネットワークのNetBIOS構成に関係しているのでしょうか?

回答:


0

問題のゲームに固有の構成オプションを使用して、この問題を解決することができました(偶然に偶然偶然に遭遇しましたが、わずかな運しかありませんでした)。これにより、ゲームで使用するインターフェイスを直接指定できました。これを行うには、次のエントリをOptions.iniファイルに追加します(にあります%USERPROFILE%\AppData\Roaming\My Battle For Middle-Earth Files\)。

IPAddress = x.x.x.x

x.x.x.xゲームプロセスで使用するインターフェイスのIPv4アドレスのドット付き10進表記はどこにありますか。

ゲームが優先度の高い仮想インターフェイスを無視している理由を正確に把握できなかったため、Windowsで構成できるものではなく、ゲームのエンジニアリングの設計上の欠陥であるに違いないと結論付けました。

また、pptpdリンク層のサポートが向上したため(つまり、ブロードキャストフレームをより適切に処理するためにサーバーの仮想アダプターをブリッジできたため)、OpenVPNの代わりにOpenVPNを使用するように切り替えたことも注目に値します。


0

これは、一部のマシンでも役立つ場合があります。動作するかどうかは完全にランダムに見えますが、ネットワークを切り替えるたびに設定ファイルを編集するよりもサービスをインストールする方が簡単です;)

BFMEがネットワーキングを処理する方法で何かが本当に台無しにされ、悲しいことに、開発者はもはや存在せず、オープンソースではないため、私たちは決して知りません...


スーパーユーザーへようこそ。外部リンクが破損したり、利用できなくなったりする可能性があります。その場合、回答は役に立ちません。回答に重要な情報を記載し、帰属と詳細についてはリンクを使用してください。ありがとう。
fixer1234
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.