トップ «前の日記(08/31/2012) 最新 次の日記(11/01/2012)» 編集

本 日 の h o g e

hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。

更新情報の取得には rdflirs を使ってもらえると嬉しいです.


09/08/2012 ふむ [長年日記]

tDiary 3607日目

[Py][Linux] Ethernet over IRC

WebSocket で出来るなら IRC でもできるよね.

ということで適当にやってみた. etherws 0.x のプロトコルハンドラを IRC 用にちょちょいと改造しただけ.

Ethernet を IRC に乗せるにあたって目論んだのは以下の点.

  • IRC にはチャンネルという概念があるので,チャンネルを 1 つのハブに見立て,これを使って network isolation を行う
  • サーバには巷にある IRC daemon の実装を使えばいいので,クライアントがあればそれでいい

適当な IRC サーバを立てた上で,

# python etherirc.py --device <devname> <server> <port> <nick> <channel>

とやれば IRC チャンネルに join するので,相互に接続したい人同士で同じチャンネルに join すれば繋がる. 例えば

# python etherirc.py --device ethirc0 localhost 6667 atzm_ether1 '#etherirc1'
# ifconfig ethirc0 192.168.2.1 netmask 255.255.255.0

などなど. もちろん etherws と同じく Hypervisor 上で起動しておいて bridge で VM を繋ぐようなこともできる.

ちなみに人間用の IRC クライアントで同チャンネルに join すると通信の様子が窺える. 流れているメッセージをコピペすると再送攻撃ができる.

欠点は

  • IRC にバイナリは流せないため encode/decode が入るので遅い
  • IRC のメッセージ最大長は (コマンド等を含めて) 512 バイトなので,encode 後のサイズで 512 バイトを超えられない.超えると多分サーバに落とされるので MTU は極小に設定のこと

うん,まあ,たぶんほとんど使い物にならないね. てかそれ以前に基本的に全部ブロードキャストだし (クライアント側で学習して talk かませばいい気はするけど実装してない).

良い子のみんなは IRCnet とか FreeNode とかそういうとこに繋いだりしちゃダメだぜ! お兄さんとの約束だ!

本日のツッコミ(全2件) [ツッコミを入れる]
smbd (09/08/2012 11:31)

なんでもありだな…

atzm (09/08/2012 23:11)

メールでもできるんじゃね