memo.log

技術情報の雑なメモ

【Ruby】シンプルなネットワークブリッジを作ってみた

シンプルなネットワークブリッジをRubyで作ってみた。

github.com

動作確認した環境

使い方

以下のように記述して、sudo で実行

require_relative "lib/simple_bridge"

br = SimpleBridge::Bridge.new("eth0", "eth1")
br.run

できること

  • 2つのネットワークインターフェース間でパケットを転送する

できないこと

参考にした実装

Ruby Raw Socket on Linux (ruby 1.9.3, linux x86_64) · GitHub

bind_socket.rb · GitHub

感想

Rubyで低レベルのプログラミングはなかなかサンプルも少ないし、難しい…。 PacketFuのようなパケットキャプチャツールの実装も覗いてみたが、ネットワークデバイスを操作する部分はCで実装していた。 多分、その方が色々細かい部分は実装しやすいのだと思う。 とはいえ、Rubyの書きやすさは捨てがたい&Rubyで低レイヤプログラミングしてみたらどんなもんだろうという試みでもあったので、とりあえず簡易実装までは完遂できてよかった。

関連投稿

kure.hatenablog.jp

kure.hatenablog.jp

kure.hatenablog.jp