私のゲーム サーバーは現在、すべてのソケットからソケットを受け入れています。しかし、特定の IP を攻撃からブロックするにはどうすればよいでしょうか? 彼らが私のサーバーか何かをクラッシュさせたいのなら。私はSFMLライブラリ、C++を使用しています。
3 に答える
TCP では、プログラム (または使用しているライブラリ) が を呼び出すaccept(2)
とき、2 番目の引数はクライアントのアドレスを示す出力です。
UDP には接続はありませんがrecvfrom(2)
、 と同様accept(2)
に、ピアのアドレスを提供する があります。そのため、好きではない仲間を無視することができます。
または、何らかのファイアウォール アプライアンスの背後でサーバーを実行してそこにルールを追加するか、ホスト マシンでソフトウェア ファイアウォールとして iptables などを使用することもできます。
SFML にはと があり、空のアドレスを引数として渡すSocketTCP::Accept
と、どちらもピアのアドレスを取得します。SocketUDP::Receive
WSAAccept()
Windowsでは、WinSock 2.xには、接続要求を条件付きで受け入れる/拒否するために使用できるオプションのコールバックパラメーターがあります。クライアントIP/ポートは使用可能なパラメーターの1つです。
一部のIPをブロックする具体的な方法はわかりませんが、元のIPを特定した後、リクエスト(おそらくあなたの場合は接続リクエスト)を確実に拒否できます。ブロックされた IP (またはブラックリストに登録された IP) のリストを維持し (簡単に追加/削除できるように構成可能にします)、ブラックリストに登録された IP のいずれかから送信された場合はリクエストを拒否します。