ゲームサーバーのルームの考え方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ホヅミ
記事: 110
登録日時: 10年前

ゲームサーバーのルームの考え方

#1

投稿記事 by ホヅミ » 7年前

現在ネットワークミニゲームを作っています。
ハンゲームのような小部屋を作りたいのですが、どういった手法がいいのか皆さんの方法を聞きたいです。

ちなみに、現在私が考えているものは、
データベースに登録されている部屋情報(掲示板のようなもの?)を元にホストの暗号化された接続IPを取得し、ホストとP2P接続を行うものです。
この方法はセキュリティ面や、システム面でどういった問題が出るでしょうか?

アバター
h2so5
副管理人
記事: 2212
登録日時: 10年前
住所: 東京
連絡を取る:

Re: ゲームサーバーのルームの考え方

#2

投稿記事 by h2so5 » 7年前

ホヅミ さんが書きました: ちなみに、現在私が考えているものは、
データベースに登録されている部屋情報(掲示板のようなもの?)を元にホストの暗号化された接続IPを取得し、ホストとP2P接続を行うものです。
データベースには具体的に何が記録されているのでしょうか?
また、「暗号化された接続IP」の意味がよくわかりません。なぜIPが暗号化されているのでしょう。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: ゲームサーバーのルームの考え方

#3

投稿記事 by softya(ソフト屋) » 7年前

例として書かれているホストやクライアントやサーバーの担当がよくわかりませんね。
私も「暗号化された接続IP」が何なのかは知りたいです。
あと、「ホストとP2P接続」というのもどういう動作を期待しているのか教えて下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ホヅミ
記事: 110
登録日時: 10年前

Re: ゲームサーバーのルームの考え方

#4

投稿記事 by ホヅミ » 7年前

ちょっと用語がごちゃ混ぜになってしまっていたようです。

送受信するデータはすべて暗号化させます。(暗号化された、ではなく暗号化したです。暗号化させる必要はないのでしょうか?)
データベースに登録するものは
・部屋番号
・部屋製作者のIPアドレス
・部屋名
・パスワード
・上限人数
・現在人数
・ゲームの状態(待機中、ゲーム中等々)

サーバーは登録されている部屋を管理するものです。
ホストとは部屋製作者のことです。
クライアントはゲーム参加者のことを指します。

サーバーはあくまで登録されている部屋を管理するだけで。
サーバーから部屋の接続先を取得し部屋製作者のPCに接続します。
私の勘違いでP2P接続ではないのかもしれません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: ゲームサーバーのルームの考え方

#5

投稿記事 by softya(ソフト屋) » 7年前

確かにp2p接続になりますね。サーバーはコネクションを担当するだけで後はホストユーザーとクラアントユーザー間で相互にUDPなどで通信すると言うことですよね?

サーバーからホストとクライアントにIPアドレスを渡すのでIPアドレスは出来れば暗号化されてやり取りされたほうが良いと思います。
セキュリティ面だと侵入のルートになる可能性がありますが、個人のゲームでわざわざクライアントのふりをするハッキングソフトを開発する暇人がいるとは思えません。
システム面だとuPnPの制御をしないとルータのポート開放問題が出るでしょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
h2so5
副管理人
記事: 2212
登録日時: 10年前
住所: 東京
連絡を取る:

Re: ゲームサーバーのルームの考え方

#6

投稿記事 by h2so5 » 7年前

P2Pの場合、パケットキャプチャを使えば相手のIPアドレスを割り出すのは簡単なので
IPアドレスの暗号化にどれだけ効果があるかどうか疑問ですが...
あと、暗号化するときの鍵や鍵交換はどうする予定でしょうか?TLSのようなものを考えていますか?

ホヅミ
記事: 110
登録日時: 10年前

Re: ゲームサーバーのルームの考え方

#7

投稿記事 by ホヅミ » 7年前

ソフト屋さんへ
>システム面だとuPnPの制御をしないとルータのポート開放問題が出るでしょう。
了解しました。まだ、ネットワークプログラミングの勉強が初歩の段階なので、まずはそこから勉強をしてみます。

h2so5さんへ
>P2Pの場合、パケットキャプチャを使えば相手のIPアドレスを割り出すのは簡単なのでIPアドレスの暗号化にどれだけ効果があるかどうか疑問ですが...
あまり見られたくないものは1クッションは置いておこうかなと思っていたのですが、必要ありませんかね。^U^;

>暗号化するときの鍵や鍵交換はどうする予定でしょうか?TLSのようなものを考えていますか?
暗号鍵はプログラム内に固定させようかなと考えているのですが、やめた方がいいでしょうか?

YuO
記事: 943
登録日時: 10年前
住所: 東京都世田谷区

Re: ゲームサーバーのルームの考え方

#8

投稿記事 by YuO » 7年前

ホヅミ さんが書きました:>暗号化するときの鍵や鍵交換はどうする予定でしょうか?TLSのようなものを考えていますか?
暗号鍵はプログラム内に固定させようかなと考えているのですが、やめた方がいいでしょうか?
暗号鍵の固定は(特に共通鍵暗号では)やめた方が良いでしょう。
ディフィー・ヘルマン鍵交換のような,鍵交換アルゴリズムを使って暗号鍵を毎セッションごとに作る方が安全です。
もちろん,暗号的に安全な乱数アルゴリズムが必要になりますが。

アバター
h2so5
副管理人
記事: 2212
登録日時: 10年前
住所: 東京
連絡を取る:

Re: ゲームサーバーのルームの考え方

#9

投稿記事 by h2so5 » 7年前

暗号鍵を固定するくらいなら暗号化しないほうがマシだと思います。デバッグの面倒が増えるだけなので。
セキュリティ強度を求めるなら、OpenSSLやCrypto++などのライブラリを使うと比較的簡単に鍵交換を実装することができます。

ホヅミ
記事: 110
登録日時: 10年前

Re: ゲームサーバーのルームの考え方

#10

投稿記事 by ホヅミ » 7年前

>> YuOさん 暗号鍵の固定は(特に共通鍵暗号では)やめた方が良いでしょう。
>> h2so5さん 暗号鍵を固定するくらいなら暗号化しないほうがマシだと思います。デバッグの面倒が増えるだけなので。

実際に自分で書き込んでてそういえば!って思いました。
鍵交換も勉強していきたいと思います。

ここのトピックはこの辺で解決とさせていただきます。
みなさんありがとうございました!

閉鎖

“C言語何でも質問掲示板” へ戻る