hIPv4の枯渇が騒がれる今日この頃。

そろそろIPv6の知識を身につけないと、、という事でオライリーのIPv6 エッセンシャルズをずっとgdgd読んでましたがやっぱり実際に実験しながらじゃないとわからないんですよね。

でもやっぱり実際に触りながらでないと覚えれないタイプの人間なので困った物です。

ので、これはHurricane Electric Free IPv6 Tunnel BrokerでIPv6の/64と/48を取得してテスト運用するまでの記録です。

が、その前にIPv6のおさらい(思いっきり間違ってる可能性があるので決して参考にせず運用ではちゃんとRFCか読んでください。あと間違ってたら教えて下さい)

アドレスについて

そこらへんの石ころ全部に付けても足りるとか言われてますが今更書きません

忙しい人向け解説です

  • 16ビットごとにコロンで区切って16進数で表記
  • 128bitで構成されており/64なら真ん中でブッった切った先頭64bitがサブネットプリフィックス、後半64bitがインターフェース識別子
  • 0が続く所は省略できるがルールがある。連続する 0 がいちばん長いフィールドを省略し、長さが同じ場合は前方を省略するとのこと
  • 2回以上0 が連続するところは “::” で省略することができるが、アドレスでこの省略を使えるのは一回だけ
  • fe80:: から始まるのはリンクローカルアドレス。同一ネットワークでしか動作しない
  • リンクローカルアドレスには自身の区別のためインターフェース名や番号が入る
  • ::1/128はループバックアドレス。他にもIPv4互換アドレスなどあり
  • 多すぎて単位がなじめないが、、アドレス数はIPv4の43億から340澗(340兆の1兆倍)に増加とりあえずいっぱいって事
  • /128=当然だが128bitアドレスなのでIPv4の/32に相当、一個を意味
  • /64で43億*43億
  • /48で43億×43億× 65536個
  • これより大きいプリフィックスは普通にはまず利用しないといっていい

サブネットに関してはこのページのアドレスである

2001:470:8644:0001:64c3:beff:fe17:c8bcを例とすると

プロバイダなどのネットワーク部(/32)

組織に割り当てられるネットワーク部(/48)

ユーザーに割り当てられるネットワーク部(/64)

一意のホストネットワーク部(/128)

となる

接続方法について

ネイティブでの接続サービスは探した限りKDDI/IIJしかやっていない

というかIPv6の特性上使えてもIDCかプロバイダでも作らない限り現状では高いお金を払う利点がビジネス上ない、、ような

トンネル(6in4)

IPv6の現実的な対応としてIPv4の中にIPV6を通すトンネル方式(GRE or PPTP or IPIP or TSP etc..)

国内では

海外のサービスはWikipediaにまとまっている

Wikipedia: List of IPv6 tunnel brokers

現在接続しているプロバイダがIPv6コネクティビティサービスかデュアルスタックでの接続を提供していない場合はトンネルを掘るしかない

6to4と6in4は名前は似ているが別物

6in4/6to4/6rd/は全てIPv4ネットワーク上でIPv6で扱う技術だが、実装と仕様がいろいろ違う

Wikipedia: IPv6 トンネリング

アドレスの種類、構成、特殊アドレス

大きく分けて

  • ユニキャストアドレス
  • マルチキャストアドレス
  • エニーキャストアドレス

さらにスコープがあり

  • リンクローカルスコープ
  • グローバルスコープ
  • サイトローカルスコープ(廃止)

エニーキャストはアドレス重複ありで最も近い機器に送られる。電話でいう110番みたいなもの。冗長化に使える。v4ではDNSルートサーバーなどで利用されているもの。

リンクローカルアドレス(fe80::/10)はユニキャストアドレスの一種、1サブネットのみで有効

リンクローカルスコープがルーターを超える事はない

インタフェースIDがIPv6アドレスの後ろに付く

予約、割当済みや特殊なアドレス、範囲等は

  • ::/128 未割当
  • ::1/128 ループバックアドレス
  • 2001:db8::/32 文書作成の為の予約
  • 2001::/16 現在払い出し中
  • 2002:0000::/32 Teredo用
  • 2002::/16  6in4トンネル用
  • 3ffe::/16 実験用。廃止済み
  • fe80::/10 リンクローカルアドレス
  • FF00::/8 マルチキャスト用
  • 2000::/3 集約可能グローバルユニキャストアドレス
  • FC00::/7 ユニークローカルユニキャストアドレス
  • FD00::/8 ローカルIPv6アドレス
  • ::ffffからはじまるIPv4射影アドレス(IPv4- mapped address)
  • ::/96 IPv4互換アドレス(IPv4-compatible address)
  • ::/0 デフォルトルート

アドレスの自動設定とルーター広告[RFC 3756]

大体のネットワーク機器はデフォルトの設定ではステートレスになっているのでDHCPがなくても同じネットワークならつなぐだけで通信可能になる(Plug & Play)

これはfe80::/10を全てのネットワーク機器が持つため。fe80::以降はMACアドレスにFFFEを足して自動生成される

ちなみにMACアドレスは枯渇しないの?とかよく聞かれるから書いとくと70兆ある+ローカルネットワークでしか使用しないので問題ない

ルーター広告(RA)はIPv4にはない概要。ルーターは自身のIPv6プレフィックスを一定間隔でマルチキャストで送出する
この際DNSアドレスは広告されないが、RFC 5006というものもあるがその後進展はない様子

Neighbor Discovery Protocol(NDP RFC 2461)があり、近隣のノードを自動で探索する

ICMPv6 Type=134、Router Advertisement messageを受信してステートレスの機器はルーターのアドレスをとプレフィックスを計算し自動設定を行う

だから無条件でICMPをフィルタするとマズい事になる、、と思われる

あとはここにspoofして悪い事ができるみたいな

DNSまわり

すでにほとんどのルートサーバーはAAAAレコードを持っており=IPv6対応済み

JPドメインはIPv6が使えます(IPv6 Ready)IPv6レコードは当然IPv4と全部共存できる

  • IPv6アドレスを示すIPv4で言うAレコードはAAAA
  • NSレコードをレジストリに申請できるIPv6 glue
  • NSレコードを申請する際は一つのhostレコードにIPv4アドレスとIPv6アドレスの二つを申請すると両方使える
  • BindはデフォルトIPv6をListenしてないのでlisten-on-v6をセットする事

Bindでの逆引きがクソ長い、、本当に長い!混乱するのでわかりやすいように色付けしてみる

2001:470:8644:0:64c3:beff:fe17:c8bcのPTRはこんな感じ

c.b.8.c.7.1.e.f.f.f.e.b.3.c.4.6.0.0.0.0.4.4.6.8.0.7.4.0.1.0.0.2.ip6.arpa.

この場合定義するBindの ZONE名は/64とすると真ん中をぶった切って

zone “0.0.0.0.4.4.6.8.0.7.4.0.1.0.0.2.ip6.arpa”

レコードは残り半分をひっくり返して

c.b.8.c.7.1.e.f.f.f.e.b.3.c.4.6 IN PTR www.insaneworks.co.jp.

こんな感じ。特に逆引きは長過ぎる上にアドレスが多すぎるのでどうするべきか。。

各種サーバーの対応

httpdはデフォルトでON、bindやpostfixはデフォルトOFF、sysklogdは未対応

ブラウザでIPv6アドレスでの要求をするにはhttp://[IPv6Addr]/で行う

IPv6でのコマンドはping -> ping、Traceroute -> Traceroute6、wget -> wget -6、ssh -> ssh -6

sshやping6でリンクローカルアドレス(fe80)で接続するにはインターフェース名が必須

ping6 -I eth0 fe80::xxxx

sshの場合は-Iオプションがないのでこのように指定

ssh fe80::xxxx%eth0

PostfixではIPv6はデフォルトOFFなのでinet_protocolsでlistenさせる

その他パケット、ヘッダー構造など

IPv6のプロトコル番号は41

ルーターでのパケットのフラグメントは行われない

IPv6ヘッダーは固定長で40byte、固定長なのでルーター処理がサクサク

ルーティングプロトコルはRIPng、BGP4、OSPFv3で対応、経路集約しやすい

拡張ヘッダが追加

等々いっぱいありますので省略

次回から実際にトンネルを掘って接続してみたいと思います

参考サイト

Wikipedia: IPv6

Wikipedia: 近隣者発見プロトコル

The KAME project

IPv6 Forum :: Driving IPv6 Deployment

IPv6のRFC

@network Cisco・アライド実機で学ぶ

sous le grand arbre: IPv6アドレスの基礎

Geekなページ: IPv4とIPv6の違い

IPv6 のアドレス自動設定

IPv6パケットフォーマット

IPv6俺的まとめ

CentOS5のBIND9でIPv6用DNSサーバを設定

IPv6 利用のメモ” への3件のフィードバック

  1. 6to4はIPv4のネットワーク上でIPv6で扱う技術です。なにせつい先ほどtun6to4をセットアップしたばかりだから。

コメントを残す