hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。
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 とかそういうとこに繋いだりしちゃダメだぜ! お兄さんとの約束だ!
なんでもありだな…
メールでもできるんじゃね