hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。
05/10/2012 ふむ [長年日記]
tDiary 3486日目
■ [Linux] TAP を使ってみる
L2 な仮想デバイスを作れ,そのデバイスに対する入出力をファイルディスクリプタ経由で行うことのできる TAP を使ってみる.
Linux の Documentation/networking/tuntap.txt に色々書いてあるので,適当に読みつつ tapcap なるものを書いてみた.
$ gcc -o tapcap tapcap.c $ sudo ./tapcap tapcap0
引数にデバイス名を渡して実行してやると,仮想デバイスが出来上がる.
$ ifconfig tapcap0 tapcap0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:0 (0.0 B) TX bytes:328 (328.0 B)
一方,プロセス側ではこのデバイスがファイルディスクリプタとして見えている. tapcap は fd をひたすら read して hexdump するだけの小さなブツなので,ブリッジに繋ぐなど殴る蹴るの暴行を加えると,
$ sudo brctl addif br0 tapcap0 $ brctl show bridge name bridge id STP enabled interfaces br0 xxxx.xxxxxxxxxxxx no eth0 tapcap0
L2 フレームがべろべろと流れ始める.ちなみにこいつは IPv4/ICMP/ブロードキャスト.
-- Thu May 10 23:41:49 2012 0x0000: ffff ffff ffff 001c c039 0ceb 0800 4500 0x0010: 0054 0000 4000 4001 155a ac10 e62e ac10 0x0020: e6ff 0800 28eb 6108 0001 add3 ab4f 0000 0x0030: 0000 5115 0500 0000 0000 1011 1213 1415 0x0040: 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 0x0050: 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 0x0060: 3637
ちなみにこのデバイスには tcpdump をかけることもできるのでプロセスによる hexdump はただのオマケ.
TAP 自体は write つまり送信もサポートしてるので色々遊べそう. 邪悪な意味も含めて.