LinuxのPacketソケットでIPv6パケットをキャプチャ&送信する

IPv6シリーズ第3弾。
前回、TAPデバイスを使ってIPv6パケットをキャプチャする方法をご紹介しましたが、今回はPacketソケットを使ってみます。
TAPデバイスの場合は、キャプチャしたパケットはそのままではその後ネットワークにもアプリケーションにも流れないのですが、Packetソケットではネットワークから受け取ったパケットをキャプチャできて、同じパケットはOS(プロトコルハンドラ)にも渡されます。(OSとか環境によると思います。)
ちなみに送信パケットはキャプチャしません。受信したものだけです。
Continue reading →

TAPデバイスでIPv6パケットキャプチャ

IPv6シリーズ第2弾(第3弾があるかどうかは未定)。
TUN/TAPを使って、IPv6の仮想デバイスを作ってそこでIPv6のパケットをキャプチャするサンプルを作ってみました。
ちなみに、単純にパケットの内容を見たい場合は、tcpdumpなどをご利用ください。
プログラムにIPv6パケットを取り込んでなんとかしたい人は参考にしてください。

ではさっそくサンプルプログラム。簡単な解説はそのあとに書きました。
Continue reading →

IPv6アドレスを考える

IPv6の実験環境を作ろうと思って、アドレス体系を考えていたのですが、
実験用に適したIPv6アドレスというのはあるのでしょうか?

IPv6では、1対1で通信するために使用するアドレス(ユニキャストアドレス)として、グローバルユニキャストアドレスとリンクローカルユニキャストアドレスというものを規定しています。
リンクローカルの方は、その名の通り、そのリンク(≒ネットワーク)内でのみ利用できるアドレスで”FE80::/64″のネットワークになります(RFC2464)。
グローバルは外部でも利用できるアドレスです。
Continue reading →