Newsとは開発Rubyでもパケット観察KOBA7892013年4月23日023先週、C言語を用いて生ソケットを扱うことでARPパケットを眺めるなどしたわけですが、そのままC言語でルーターの実装を進めると心が折れそうだったのでスクリプト言語に頼ることにしました。(最初はGo言語でやるつもりだったのに挫けたというのは秘密です)方針C言語での実装ではネットワークインターフェースをプロミスキャス・モードにすることで、同じサブネット内を流れるすべてのARPパケットを盗み見るということをしていました。今回はRubyからioctlを叩くのは面倒な感じがしたので、自身を流れるパケットだけをながめることにしました。自身を流れるパケットしか見えないという都合上、ARPパケットではあまりに流量が少ないので(プロミスキャス・モードでも少なかった)、IPヘッダを眺めることにしました。SSHでつないでいるリモートのマシンで動かすと、SSHが送受信するパケットで画面が埋め尽くされて大変つまらないことになりますから、注意が必要です。コードをがりがり書くというわけで、出来上がったものがこちらになります(手抜き)。お世辞にもよいコードではありませんので、あくまでRubyで生ソケットを使う時の小さなサンプルとして見てください。packet.rbながめてみるこちらのスクリプトをruby1.9.3あたりで動かしていただければ、騒がしいパケットの流れをご覧いただけるかと思います。前回同様生ソケットを使っていますので、適切な実行権限を持っているかどうかに注意してください。まとめさて、ルーターをRubyで実装ということで、多少実行速度に難ありな気もしないでもないのですが、パケットなんてロスしてなんぼ、TCPならきっと再送してくれると信じて怠惰な実装を進めて行きたいと思います(俺が飽きない限り)。開発Share:AuthorKOBA789都内の高校に通う高校生Noder。BASICの本を手に取ったことからプログラミングの世界に導かれた。自宅にサーバを置いたことをきっかけにWebにハマり,Twitterの力でnodejs_jpに巡りあった。最近はHaskellにも夢中。ゲヒルンでは仮想化基盤の開発や、分散システムの構築を担当。開始してからちょうど半年です。こと技術開発部技術局の吉田昂平です。新規セットアップする手順について記述しています。移設する手順について、記述しています。WordPress.。