未処理のソケットを介して、指定された宛先 IP とポートに UDP パケットを送信するために作成した AC プログラム。このプログラムは以下をサポートします。
pthreads
(マルチスレッド)。注- このプログラムはパケットの断片化をサポートしていません。このプログラムはそのために作られたものではないため、実際にはそのサポートを追加する意味がありません。
私は現在、(D)DoS 攻撃がどのように機能するかを学ぶとともに、詳細なパケット検査についてさらに学習しています。私はこのプログラムを作成し、ローカル ネットワーク上でのみ使用しています。 (D)DoS 攻撃をフィルタリングし、検出された場合は XDP を使用してブロックできる UDP サーバー アプリケーションを作成する予定です。このツールは、これから作成するサーバー アプリケーションをテストするために使用されます。最終的には、すべての POP サーバー上で XDP 経由で検出された (D)DoS 攻撃をドロップできる、エニーキャスト ネットワーク上で動作するソフトウェアを作成する予定です。
このプログラムのコンパイルには GCC を使用しました。 GCC 経由でコンパイルする場合は、コマンドの最後に-lpthread
を追加する必要があります。
以下に例を示します。
gcc -g UDP_Sender.c -o UDP_Sender -lpthread
使用方法は次のとおりです。
Usage: ./UDP_Sender <Source IP> <Destination IP> <Destination IP> [<Max> <Min> <Interval> <Thread Count>]
間隔はマイクロ秒単位であることに注意してください。最小ペイロードと最大ペイロードはバイト単位です。間隔を 0 に設定すると、各スレッドでパケットを送信する間に待機しません。
以下に例を示します。
./UDP_Sender 192.168.80.10 10.50.0.4 27015 1000 1200 1000 3
上記はパケットを10.50.0.4
(ポート27015
) に継続的に送信し、 192.168.80.10
から現れます (私の場合はスプーフィングされています)。 1000
マイクロ秒ごとに1000
~ 1200
バイトのペイロード データを送信します。これらのパケットは3
スレッドから送信されます。
このプログラムをローカル ネットワーク上で使用すると、ルーターと VM (ローエンドのエッジ ルーターを使用しています) が過負荷になるまで、約 300 mbps (約 23,000 PPS) をプッシュすることができました。これは間隔を設定せず、1 つのスレッドを使用しました。情報を送信する VM には 6 つの vCPU があり、プロセッサは 2.4 GHz クロックの古い Intel Xeon でした。このプログラムの実行中、この VM も約 90 ~ 95% の CPU を使用していました。
私は C プログラミングとネットワーク プログラミングについてはまだ初心者です。したがって、改善できる点はあると思います。改善できる点があれば、ぜひお知らせください:)