NetBSD IPv6 ネットワーキング このページは作成中ですので、 コメントや提案を歓迎します。

関連リンク

IPv6ネットワーキングFAQ getting_started はじめましょう IPv6 のコードは、1999年6月にNetBSDにマージされていて、 これには NetBSD 1.5 公式リリース およびそれ以降が含まれています。 IPv6設定はほとんどIPv4の場合と同じですので、 IPv4ネットワーキングのための説明も参照ください。

ほとんどのアーキテクチャー(ポート)では GENERIC カーネルコンフィグレーションは標準で IPv6 サポートが有効になっています。 ユーザープログラムは、(可能な限り)IPv6サポートを標準で含んでいますので、 IPv4 だけのカーネルと IPv4/v6 カーネルを切り替える場合さえも 再構築の必要はありません。

1.5 以前のシステムを使っているなら、状況は次の通りでしょう:
  • NetBSD 1.4.x を利用しているなら、 かめプロジェクトのwebpageを見て IPv6サポートのためのパッチを入手するとよいでしょう。
  • 1999年11月 下旬(late) 以前の NetBSD-current を利用しているなら、 IPv6 の利用には、特別なカーネルコンフィグレーションファイル (GENERIC.v6) を使う必要があります。
  • 1999年11月21日以降の NetBSD-current を利用しているなら GENERIC カーネルコンフィグレーションファイルに、 標準で IPv6 サポートが含まれています。


diff_ipv4 A little history of IPv6, and key features 1992 年頃、 IETF はグローバルなIPv4 アドレス不足、 および IPv4 が強要する制限による新プロトコル配備の技術障害 に気がつきました。 IPng (IP next generation) 運動は これらの問題を解決するために始まりました。 この討議のあらましは RFC1550 から始まる RFC の束の中にあります。 膨大な量の討議の後、1995年あたりに IPv6 (IP version 6) は IPng 最終案として選ばれました。 IPv6 基本仕様は RFC2460 で規定されています。

一言で言うと、 IPv6 は IP 技術に対する再設計の成果です。 キーとなる特徴は次の通り:
  • 広い IP アドレス空間。 IPv4 は IP アドレス空間 uses only 2^32 bits で、 インターネット上で識別できるのは 40億 ノード だけです。 40億 は大きな値に見えるかもしれませんが; しかしながら、 地球上の人口より少ないのです! IPv6 IP アドレス空間に allows 2^128 bits ので、 340282366920938463463374607431768211456 (340 undecillion) ノードがインターネット上で uniquely に識別できます。 広大なアドレス空間は NAT や もっとほかの IPv4 アドレス不足に対する短期的な予備手段なしに、 真の end to end communication を可能にします。 (今日、 NAT は 新プロトコル展開およびスケーラビリティー問題の 頭痛の種になっていて、インターネットをより成長させるためには NAT はまさに廃止する必要があります)
  • より新しい技術の配備. 20 年前に IPv4 が規定された後、 ネットワークに関するさまざまな技術の進歩がありました。 IPv6 はそれらの数多くの進歩を基本仕様の中でカバーし、 人々が、これらの機能をどこでもいつでも使えると、決めてかかることを可能にします。 "いまどきの技術"、制限なしに含まれるものは、次の通りで:
    • 自動設定。 IPv4 では、 DHCP がありますが、それはオプションです。 初級ユーザーが DHCP サーバーのない an offsite を訪問すると トラブルに陥ることになりかねません。 IPv6 では "stateless ホスト自動設定" 機構が義務付けられています。 これで、 IPv4 の DHCP より簡単に使え、管理できるようになります。 それを規定するのは RFC2462 です。
    • セキュリティー。 IPv4 では IPsec はオプションで相手に対し IPsec をサポートしているか たずねる必要がありました。 IPv6 では IPsec サポートが義務付けられています。 IPsec が義務付けられていることで、 IPv6 デバイス と話すならいつでも secure な IP 通信ができます。
    • Friendly to traffic 工学技術。 IPv6 は diffserv や intserv (RSVP) といった traffic 工学 のより良いサポートをできるようにデザインされました。 我々はまだ、 traffic 工学 のための single standard を手にしておらず; それで、 IPv6 基本仕様では、これらの技術のために ヘッダー領域に 24-bit の空間を用意することで、 IPv4 よりもすばらしい来たるべき標準 になることができます。
    • マルチキャスト。 マルチキャストは IPv6 では義務付けられていて、 IPv4 ではオプションでした。 IPv6 基本仕様はそれ自身がマルチキャストを広範囲に使っています。
    • ad-hoc ネットワーキングへのより良いサポート。 Scoped addresses により ad-hoc (または "zeroconf") ネットワーキングのより良いサポートができます。 IPv6 はエニーキャストアドレスをサポートし、 サービスの発見に寄与することもできます。
    • さらにいろいろ。
  • ルーティングテーブル増殖の治療。 IPv4 バックボーン ルーティングテーブルのサイズは ISP と バックボーンオペレーターの 大きな頭痛になっています。 IPv6 アドレス仕様は ルート集約 advocating によって バックボーンのルーティングエントリーの数を制限します。 現在の IPv6 アドレス仕様では、 the default-free zone では、わずか 8192 ルートです。
  • シンプルなヘッダー構造。 IPv6 は IPv4 のものより単純なパケットヘッダー構造になっています。 これにより future vendors が IPv6 ルーターにハードウェアアクセラレーションを 実装することを簡単にするでしょう。
  • 柔軟なプロトコル拡張性。 IPv6 では、 protocol header chain の導入によって IPv4 の場合よりもより柔軟にプロトコルの拡張をすることができます。 IPv6 は柔軟なプロトコル拡張ができるようになっているのだけども、 IPv6 は中間ルーターにオーバーヘッドを負わせません。 It is achieved by splitting headers into two flavors: the headers intermediate routers need to examine, and the headers the end nodes will examine. これはまた、 IPv6 ルーターのハードウェアアクセラレーションを簡単にします。
  • IPv4 からのスムーズな transition。 IPv6 の討議の中で、数多くの transition 研究が 行われました。 また、多くの変換メカニズムが存在しています。 自分のサイトに合わせて便利なものを選ぶことができます。
  • Follows the key design principles of IPv4。 IPv4 は、猛烈に大規模な広域展開によって証明されたように、 非常に良くできた design です IPv6 は "新しいバージョンの IP" で、 とても成功した IPv4 で作られた多くの design features を follow しています。 これによって、 IPv4 から IPv6 へのスムーズな移行ができます。
  • さらにいろいろ。
IPv6 に関する良書がいっぱいあります。もし興味があれば、 これらをチェックしてください。 configuration_files ネットワーク設定ファイル ネットワークは、テキスト形式の 設定ファイルによって設定されます。 ホスト(ルーターでないノード)を自動設定する場合、 以下のファイルのうちいくつかは編集しなくて済みます。
  • /etc/rc.conf - rc.conf(5) はシステムサービスを記述し、 システムの初期化時に、ネットワークサービスを 含むシステムサービスを自動的に開始するための設定。
  • /etc/hosts - hosts(5) は FQDN 名 と IPv6 数値アドレス.の対応を含むことができます。
  • /etc/ifconfig.{IF}. - ifconfig(8)を使ったIPv6ネットワークの 設定をここに含めることができます。
  • See also:

    • placeholder
router_or_host このマシンはルーターかホストか? IPv6では、ルーターとホストは明示的に区別されています。 自分宛でないパケットをフォワードするノードをルーター、 そうでないノードをホストといいます。 ルーターは手動で設定する必要があります。 ルーターはrtadvd(8)デーモンを使って、サブネットの情報を広告します。 ホストは多くの場合、ネットワークインタフェースを1つしか持っていません (これは仕様の一部で仮定されています)。 ホストは多くの場合、広告されたサブネットに関する情報をもとに自動設定されます。
  • See also:

    • placeholder
autoconfig IPv6 のホスト自動設定 IPv6 ホスト自動設定には、2つの別なメカニズムがあります。 1つは stateless address autoconfiguration と呼ばれ、 RFC2462 に規定されています。 もうひとつのは DHCPv6 と呼ばれ、 IETF dhc ワーキンググループで討議されているものです。 NetBSD は現在、前者を実装しています。

stateless address configuration は基本的に次のように働きます。 2つの parties があり: (自動設定される)ホスト と (emits 重要な情報をホストに発する) ルーター。
  • ホストはネットワークインターフェースにリンクローカルアドレスを設定します。 リンクローカル IPv6 アドレスは "fe80" で始まり、 最下位 64 ビットに値を持ちます。 最下位 64 ビットは インターフェース ID と呼ばれています。 Ethernet や、いくつかのほかのインターフェースでは、 MAC アドレスがインターフェースの ID としてつかわれています。
    host% ifconfig ne2
    ne2: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    	media: Ethernet manual
    	inet6 fe80::a00:5aff:fe38:6f86%ne2 prefixlen 64 scopeid 0x1
    
  • ルーターで rtadvd(8) を実行することで、 ルーターは定期的に (Ethernet セグメントのような)リンクに関する情報 をリンク上のすべてのノードに広告します。 この情報は ICMPv6 の "router advertisement" パケットが運びます。 この接続例では次の情報を広告します:
    • IPv6 サブネットのプレフィックスは 2001:218:420::/64
    • デフォルトルーターは on fe80::240:5ff:fea0:8e08
    • そして、ほかのいくつかのパラメーター、 IPv6 link MTU, default hoplimit や router lifetime のような。
    14:18:20.812850 fe80::240:5ff:fea0:8e08 > ff02::1: icmp6: router advertisement\
    (chlim=64, router_ltime=1800, reachable_time=30000, retrans_time=1000)(src\
    lladdr: 0:40:5:a0:8e:8)(mtu: mtu=1500)(prefix info: LA valid_ltime=2592000,\
    preffered_ltime=604800, prefix=2001:218:420::/64)
    			 6000 0000 00a0 3aff fe80 0000 0000 0000
    			 0240 05ff fea0 8e08 ff02 0000 0000 0000
    			 0000 0000 0000 0001 8600 d38d 4000 0708
    			 0000 7530 0000 03e8 0101 0040 05a0 8e08
    			 0501 0000 0000 05dc 0304 40c0 0027 8d00
    			 0009 3a80 0000 0000 2001 0218 0420 0000
    			 0000 0000 0000 0000
    
  • ホストは広告をキャッチし、 IPv6 アドレスとデフォルトルーターを設定します。 ホストで ndp(8) を走らせることで、 一番最近の router advertisement の詳細を見ることができます。
    host% ifconfig ne2
    ne2: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    	media: Ethernet manual
    	inet6 fe80::a00:5aff:fe38:6f86%ne2 prefixlen 64 scopeid 0x1
    	inet6 2001:218:420:0:a00:5aff:fe38:6f86 prefixlen 64
    
  • オプションとして、 ホストはルーターに ICMPv6 "router solicitation" パケットを 送ることで広告をたずねることができます。 rtsol(8) は router solicitation パケットを送ります。 もし、 mobile node を動かしていれば、 rtsold(8) を走らせ、定期的に router solicitation を送りたくなるかもしれません。 そのパケットはこのようになっていて:
    14:18:20.300501 fe80::a00:5aff:fe38:6f86 > ff02::2: icmp6: router solicitation\
    (src lladdr: 8:0:5a:38:6f:86) (len 16, hlim 255)
    			 6000 0000 0010 3aff fe80 0000 0000 0000
    			 0a00 5aff fe38 6f86 ff02 0000 0000 0000
    			 0000 0000 0000 0002 8500 d7b0 0000 0000
    			 0101 0800 5a38 6f86
    
それは stateless アドレス自動設定と呼ばれ、 それゆえルーター側で状態管理する必要がありません。 それは非常にシンプルで、頑丈で効果的な自動設定メカニズムです。

ルーターの自動設定はできないことに注意してください。 ルーターには本当に手動設定が必要です。 setup_router IPv6ルーターの設定 まず、IPv6グローバルアドレスを上流組織から入手すべきでしょう。 手にいれたなら、以下の手順をふんでください。
  • ネットワークインタフェースの手動設定を /etc/ifconfig.{IF} 、 rc.conf(5) または /etc/netstart.local の中に記述します。 詳しいことは あとの節 をご覧ください。
  • rc.conf(5)の以下の行を設定します。
    ip6mode="router"
    rtsol="NO"
    rtadvd="YES" rtadvd_flags="sm1 ne2" # set interfaces to advertise
  • /etc/rtadvd.conf(5)を編集して、router advertisementのタイマーを 微調整してもいいでしょう。
  • RIPngを使って経路を広告したければ、 rc.conf(5)をroute6d(8)を起動するように設定します。
  • ルーターを再起動します。
IPv6 の仕様による制限のため、 ルーターの自動設定はできません。 設定の微調整は試みないでください。 結果として、予期しない結果に終わることになるでしょう。
  • See also:

    • placeholder
setup_host IPv6ホストの設定 IPv6ルーターがネットワーク上にいるなら、以下の手順をふめばホストの設定が完了します。 再起動の後、ホストは隣接ルーター上のrtadvd(8)が放送したrouter advertisement によって自動設定されます。
  • rc.conf(5)の以下の行を設定します。
    ip6mode="autohost"
    rtsol="YES" rtsol_flags="sm1" # set your interface here ここにインターフェースを指定します
  • ホストを再起動します。


IPv6ルーターがネットワーク上にいない場合、 手動設定が必要です。 詳しくは あとの節 をご覧ください。

また、 IPv6 の仕様による制限のため、 複数の外部インターフェース (2 つのイーサネット インターフェースのような) を持つホストの自動設定は推奨されていません。 この場合、手動設定してください。 詳しくは あとの節 をご覧ください。
  • See also:

    • placeholder
setup_manual 手動設定 IPv6 の key value-adds の1つは、いたるところで 自動設定が使えることてす。 IPv6 アドレスは 128 bit あるので、 手動設定では、間違いやすくなっています。 われわれは、あなたが可能な限り手動設定をしないことを強く推奨しています。 たとえば:
  • ルーターに route の設定をしたいなら、 route6d(8) のようなルーティングデーモンを走らせます。
  • ホストのインターフェースアドレスを設定したいなら、 ip6mode=autohostrtsol=YES を設定することで 隣接ルーターから情報を入手します(rc.conf(5) をご覧ください)。
もし、手動設定をしたほうが簡単だと思っているのなら、それは違います。 手動設定は、あなたが将来メンテナンス労働することを強要します。

もし、本当に手動設定が必要なら、読んでください。

もしノードの設定を手動でしなければならなければ、 rc.conf(5) 内にネットーワークインターフェースを手動設定で 加えてください。

最初にノードのタイプ (ホストかルーターか)を 下のように ip6mode の設定によって、宣言する必要があります。
ip6mode="router"	# forward packets for others		パケットを他に転送する
ip6mode="host"		# do not forward packets for others	パケットを他に転送しない


そして、 rc.conf(5) の中、 または /etc/rc.d/network に記述されている /etc/ifconfig.xxN のようなファイルにインターフェースの設定を追加してください。 /etc/ifconfig.xxN は複数行になることができて、 このように:
inet 10.1.1.1 netmask 0xffffff00
inet6 3ffe:501:ffff::1 prefixlen 64 alias


あなたの設定が rc.conf(5) で行われていない場合、 設定を /etc/netstart.local あるいは /etc/rc.local の中ですることができます。 次のプログラムの利用が必要かもしれません:
  • ifconfig(8) - ネットワークインタフェースの設定を見たり変更したりする。
  • route(8) - 経路表を操作する。
  • See also:

    • placeholder
naming_a_node ネットワーク上のノードに名前をつける 文字列のホスト名をIPv6アドレスの数字に変換するには、 /etc/hosts(5)やDNSが使えます。 これはIPv4の場合と同じです。 yp(8)も多分使えると思いますが、著者はIPv6アドレスを解決するのに yp(8)を使ったことがありません。
  1. /etc/hosts: hosts(5) ノードが少ししかない小規模なネットワークでは、 各ノードの /etc/hosts ファイル に hostname/IP マップを手作業で 複製するとよいでしょう。

    /etc/hosts:
    3ffe:501:ffff::a:b:c:d  host2.mydomain.org.au host2
          
  2. DNS: ネームサーバー(named(8))を介してアクセスできるゾーンファイルで ホスト名の対応を集中管理することもできます (DNSの設定や管理について www.dns.net にたくさんのドキュメントがあります)。

    正索きゾーンファイルのエントリー
    host2  IN AAAA     3ffe:501:ffff::a:b:c:d
          
    逆索きゾーンファイルのエントリー
    d.0.0.0.c.0.0.0.b.0.0.0.a.0.0.0.0.0.0.0.f.f.f.f.1.0.5.0.e.f.f.3.ip6.int.
    	IN PTR   host2.mydomain.org.au.
          


以下のアドレスは グローバル DNS cloud に出しては「いけない」ことに注意してください:
  1. リンクローカルアドレス (fe80::/10 が該当し、たとえば fe80::1)
    これは、グローバル到達性がありません。
  2. サイトローカルアドレス (fec0::/10 が該当し、たとえば fec0::1)
    これも、グローバル到達性がありません。 これはプライベートアドレスのようなものなので、 your イントラネット DNS cloud には入れることができます。
  3. v4 射影アドレス ( ::ffff:0.0.0.0/96 が該当し、たとえば ::ffff:10.1.1.1)
    このアドレスはノード内での内部だけ向けです。 これを直接 DNS データベースに入れないでください。
これらのアドレスを DNS cloud に入れることは推奨しません:
  1. マルチキャストアドレス (ff00::/8 が該当し、たとえば ff05::1)
NetBSD/KAME IPv6 コードでは、サポートが欠乏しているので 次のアドレスを putting することは意味をなしません:
  1. v4 互換アドレス ( ::0.0.0.0/96 が該当し、たとえば ::10.1.1.1)
    NetBSD/KAME は RFC1933 自動トンネルをサポートしていません。


  • See also:

    • placeholder
addressing IPv6 ユニキャストアドレス割り当て IPv6 アドレスの割り当てと IPv4 アドレスの割り当てでは、いくつかの違いがあります。
  • IPv6 サブネットのプリフィックス長は常に /64 で; それ以上でもそれ以下でもありません。 たくさんの IPv6 デバイスを ネットワークメディアとすることができます。
    IPv4 では、プリフィックス長はサブネットごとにさまざまに変わり、 それによって、サブネットの振りなおし時にうんざりする苦痛をおこします (たとえば、 IPv4 サブネットを/28 から /29 や反対に 振りなおすことを想像してください)。
  • 普通のリーフサイトはいつも、アドレス空間に /48 をとります。 これで renumbering は簡単になり、 ISP の切り替えも より簡単になります。
    IPv4 では、サイトによりさまざまな割り当てがされていて、たとえばそれは、 ある ISP からほかに移住する時に非常にうんざりすることになります。
upstream IPv6上流組織への接続 あなたの周りの ISP の状況によって、(IPv4 の場合のような) IPv6 ネイティブな 接続を得ることができるか、あるいは (IPv6 バケットを IPv4 パケットの中に包み込んだ) トンネルによる接続になるか、が変わります。 この節では後者の場合について語ります。

"6bone"という名前のIPv6実験ネットワークに あなたのマシンを接続することができます。 最も近くの6boneサイトと相談して、IPv6プレフィックスアドレスを割り当ててもらいましょう。 なお、6boneに接続するには通常固定のIPv4グローバルアドレスが必要です。

(ISPにダイアルアップ接続しているなどで)固定のIPv4グローバルアドレスがなくても 慌てないでください。 Freenet6に接続できます。 Freenet6はダイアルアップ接続するたびにIPv6ネットワークに再接続できるよう、 webインタフェースを提供しています。

どちらの場合にも、あなたのIPv6ルーターに、 IPv6-over-IPv4トンネリングインタフェースを設定する必要があります。 gif(4)のマニュアルも参照してください。

  • gif トンネルの設定: /etc/ifconfig.gif0 を次の内容で作ります。 最初の引き数 (x.x.x.x) は あなたの IPv4 アドレスで、2番目の引数 (y.y.y.y) は相手側の IPv4 アドレス。
    create		(1.5 以降のみ必要)
    tunnel x.x.x.x y.y.y.y
    
    あるいは、次の行を /etc/netstart.local あるいは /etc/rc.local に加えます。
    # ifconfig gif0 create		(1.5 以降のみ必要)
    # ifconfig gif0 tunnel x.x.x.x y.y.y.y
    
    もしあなたのシステムが 1.5 以前で ifconfig(8) が "tunnel" キーワードを サポートしていなければ gifconfig(8) を使います。
    # gifconfig gif0 x.x.x.x. y.y.y.y
    
  • トンネルが正しく動作しているなら見てください: 最初に次のコマンドを念じながら試します:
    # ping6 -n ff02::1%gif0
    
    2つのパケット、1つは自分のローカルノードで、もうひとつは リモートノードからなら、トンネルはうまく動作しています。 もし IPv4 到達性問題が x.x.x.x と y.y.y.y の間であるなら、 応答は 1つ、あるいはないでしょう。 もしトラブルがあった場合はこれを見てください:
    • あなたと相手が共に NAT 箱 を使っていないことを確かめてください。 トンネルされた IPv6 パケットは NAT 箱を通り抜けられません。
    • あなたと相手が共に、なんの IPv4 パケットフィルターも 使っていないことを確かめてください。
  • Exchange routes: your 上流の設定によって、上流へのデフォルトルートの設定をする必要があるか、 または、ルーティングデーモンを走らせる必要があるかもしれません。


上の設定は RFC1933 IPv6-over-IPv4 設定されたトンネルを使います。 RFC1933 パケットは NAT ルーターを通りぬけられないことに注意してください。 (トンネルの終端がそれ自身 - NetBSD 箱 - で NAT ルーターなら その問題は起こらないでしょう)。

typical Typical IPv6 ネットワーク設定 上流から、あなたのホームネットワークに、アドレスプレフィックス 3ffe:0501:ffff::/48 が割り当てられると仮定します。 自宅では次のように2つの ethernet セグメントがあります。 myrouter A と myrouter B の両方で IPv6 が使える NetBSD を走らせます。 IPv4 アドレスは次のように指定されています。 上流との接続に IPv6-over-IPv4 トンネルを経由して、 x.x.0.1/24 の myrouter A から y.y.y.10 の 上流ルーターと接続したいと思います。
myrouter A
  | IPv4 x.x.0.1/24
  |
==+=== ethernet 0
  |
  | IPv4 x.x.0.2/24
myrouter B
  | IPv4 x.x.1.2/24
  |
==+=== ethernet 1
  1. 最初に myrouter A から上流へのトンネルの設定が必要です。 myrouter A 上で、 ifconfig(8) を使ってトンネルを設定し、 ping6(8) を使って、到達性を確かめてください。 "ff02::1" は all-node マルチキャストアドレスとみなされ、トンネル上の すべてのノードに届くはずで - この場合、 myrouter A と 上流ルーターです。 2つのノードから応答があれば、トンネルはうまく働いています。 1ノード (myrouter A 自身) からしか応答がなければ、 あなたと上流の間で何かが悪いのです。 それは、 IPv4 フィルタリングかもしれません、どちらか側の設定ミスか 何かかもしれません。 先に進む前に、問題を突き止めてください。
    # ifconfig gif0 create		(1.5 以降のみ必要)
    # ifconfig gif0 tunnel x.x.0.1 y.y.y.10
    # ping6 -I gif0 -n ff02::1
    PING6(56=40+8+8 bytes) fe80::a00:5aff:fe38:6f86 --> ff02::1
    16 bytes from fe80::a00:5aff:fe38:6f86%lo0, icmp_seq=0 hlim=64 time=0.334 ms
    16 bytes from fe80::240:5ff:fea7:f092%gif0, icmp_seq=0 hlim=64 time=3.416 ms(DUP!)
    
  2. つぎに、 your アドレスブロック 3ffe:0501:ffff::/48 から 2つのイーサネットセグメントに、サブネットアドレスを割り当てる必要があります。 プレフィックス長は IPv6 サブネットでは常に /64 なので、あなたは 65536 ものサブネットを割り当てることができます! 単に、 ethernet 0 に 3ffe:0501:ffff:0000::/64 を割り当て、 ethernet 1 に 3ffe:0501:ffff:0001::/64 を割り当てます。
    myrouter A ---- トンネル ----->	upstream
      | IPv4 x.x.0.1/24		IPv4 y.y.y.10
      |
    ==+=== ethernet 0: x.x.0.0/24, 3ffe:501:ffff:0::/64
      |
      | IPv4 x.x.0.2/24
    myrouter B
      | IPv4 x.x.1.2/24
      |
    ==+=== ethernet 1: x.x.1.0/24, 3ffe:501:ffff:1::/64
    
  3. your ルーターに IPv6 グローバルアドレスを割り当てよう。 ルーターは「かならず」手動設定する必要があるので、 手動設定の節に書かれているように "ifconfig" をする必要があります。 myrouter A には、("fe80" から始まる) リンクローカル IPv6 アドレスを調べ、, 下位 64 ビットを持ってきて、サブネットアドレスから上位 64 ビットを取り付け、 それを設定します。 リブートすることで設定が無くならないようにするには、設定を /etc/ifconfig.ne2 に加えます。
    # ifconfig ne2
    ne2: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    	address: 08:00:5a:38:6f:86
    	media: Ethernet manual
    	inet x.x.0.1 netmask 0xffffff00 broadcast x.x.0.255
    	inet6 fe80::a00:5aff:fe38:6f86%ne2 prefixlen 64 scopeid 0x1
    # ifconfig ne2 inet6 3ffe:501:ffff:0:a00:5aff:fe38:6f86 prefixlen 64 alias
    # echo 'inet6 3ffe:501:ffff:0:a00:5aff:fe38:6f86 prefixlen 64 alias' >> /etc/ifconfig.ne2
    
    myrouter B でも、同様にします。
    # ifconfig tlp0 inet6 3ffe:501:ffff:0:a00:5aff:fe38:8765 prefixlen 64 alias
    	(ethernet 0 side)
    # ifconfig tlp1 inet6 3ffe:501:ffff:1:a00:5aff:fe38:9710 prefixlen 64 alias
    	(ethernet 1 side)
    
  4. ルーティング情報の交換をするには、両方のルーターで route6d(8) を走らせます。 もし、上流があなたに route announcement の集約についてたずねてきたら、 コマンドラインオプションについて、マニュアルページをご覧ください。 これで、上流との接続性はうまく行くはずなので、 外部の IPv6 ノードに ping を試してみましょう。 ping6(8) に "-n" を指定するのを忘れないで; IPv6 アドレス逆引きには 非常に長い時間かかることがあるので、テスト時にはそれを避けましょう。
    # route6d	(両方のルーターで)
    # ping6 -n www.6bone.net
    
  5. your ネットワークに end hosts (非ルーター ノード) があれば、 your ルーターに end hosts に対してサブネット情報の広告をさせたくなるでしょう。 これによって、 your end hosts は自分自身で自動設定できるようになるでしょう。 /etc/rtadvd.conf を準備し、 rtadvd(8) を走らせる必要があります。 上流ルーターからのサブネット情報は広告すべきだということに注意してください。 図では、 myrouter A は ethernet 0 に広告すべきで、 myrouter B は ethernet 0 と 1 に広告すべきです。 myrouter B から ethernet 0 への広告を disable したいかと思います。 というのも、 B は下流にあって、デフォルトルーターとして最良ではないからです。 (でも、もし disable すると、 myrouter A がお亡くなりになられた時 ethernet 0 上のメカニズム が ethernet 1 のメカニズムと talk できません)。
    # rtadvd ne2	(myrouter A から ethernet 0 へ)
    # rtadvd tlp0 tlp1	(myrouter B から ethernet 0 と 1 へ)
    
    そして、自動設定のために、エンドノード上で rtsol(8) か rtsold(8) を走らせます。


いくつかの場合、 your 上流は上のシナリオと異なる設定を ask 尋ねるかもしれません。 tech-net メーリングリスト または users@ipv6.org にて尋ねることをためらわないでください。 あなたがネットワーク設定について質問するなら、「かならず」ネットワーク図を つけてください。 ネットワーク図がなければ、誰もあなたのネットワーク設定を推測できません。 resolve Resolve DNS names over IPv6 cloud (IPv4 を含まない) 完全な IPv6環境に移行するには、 IPv6 をしゃべる ネームサーバーに contact する必要があります。 それは簡単で: resolv.conf(5) に IPv6 アドレスを書けばよいだけです。 IPv6 transport ready DNS サーバーを走らせたければ net/bind9 をお試しください。 設定例はこのようなもので:
nameserver 3ffe:501:4819::42

上のアドレスで IPv6-ready DNS サーバー が走っているので、 どうぞご自由にお試しください。 faith_translate FAITH TCP リレートランスレーターの利用 IPv6-only クライアント と IPv4-only サーバーを直接つないだり、 または逆はできません。 これには、 "トランスレーター" と呼ばれるデバイスが必要になります。

NetBSD には、 IPv6-only (あるいは IPv4/v6) クライアント が IPv6 TCP を使って IPv4-only サーバーに contact するのを可能にする faithd(8) TCP リレートランスレーターが含まれています。 net/totd DNS proxy サーバーの利用で、 IPv6-to-IPv4 トランスレーター環境のインストールができ、このように:

+--IPv6 だけ cloud--------------+
|				|
|IPv6 だけの		    faithd(8)		IPv4 だけの
|クライアント == IPv6 ===> が走っている ----- IPv4 -->	サーバー
|	         tcp     トランスレーター      tcp
|				|
+-------------------------------+
実際の設定には、次のドキュメントを参照してください。
  • See also:

    • IETF ngtrans working group
    • RFC3142: "An IPv6-to-IPv4 transport relay translator", internet-draft describes how faithd(8) works
    • /usr.sbin/faithd/README
    • net/totd
with_nat IPv6 に IPv4-only ルーターあるいは NAT ルーターを跨がせる もし、あなたの組織に IPv4-only ルーターや IPv4 NAT ルーター、あるいは他のものが あって、 直接 IPv6 でのネットワークを組むことの障害になっているなら、 次の方法でこれらのハードルを乗り越えることができます。 あなたのネットワーク設定に最も適しているものを選んでください:
  • 1つのイーサネットセグメントの間には、2つのルーター、 1つは IPv4 用、1つは IPv6 用の、を置くことができます。 IPv6-only ルーターを2つのセグメントの間に置くことにより、 IPv6 のルーティングだけをさせられます。 この方法なら、 IPv4 ネットワークには触らないままにして置くことができます。
    outgoing router
      |
    ==+=======================+=== IPv4/v6 サブネット A
      |			  |
    IPv4-only router	IPv6-only router
      | forward		  | forward
      | IPv4 only		  | IPv6 only
    ==+=======================+=== IPv4/v6 サブネット B
    
  • IPv4 での プライベート/グローバル アドレス の使い方は、 IPv6 ネットワークには全く、関わりません。 あなたのネットワークの管理ポリシーで認められていれば、 NAT 箱/ファイヤーウォールによってグローバルアドレスセグメントと プライベートアドレスセグメントをつながれている IPv4 ネットワークとは 関係なく、グローバル IPv6 到達性を持たせるように設定できます。
    outgoing router
      |
    ==+=======================+=== サブネット A: IPv4 グローバル、 IPv6 グローバル
      |			  |
    IPv4-only NAT ルーター	IPv6-only ルーター
      |			  |
    ==+=======================+=== サブネット B: IPv4 プライベート、 IPv6 グローバル
    
  • いくつかの場合、通常の IPv4 ルーターを使ったセグメントを跨いで IPv6 traffic を bridge することができます。 IPv4 ルーターを ethernet プロトコル type 0x86dd を ブリッジさせるように設定できるなら、 IPv6 traffic だけをブリッジできます。 この場合、 サブネット割り当ては IPv4 と IPv6 で異なることになり - もし、やりすぎると頭痛の種になるかもしれません..。
    outgoing router
      |
    ==+======== ether セグメント 1: IPv4 サブネット A, IPv6 サブネット X
      |
    IPv4-only ルーター (bridge ether type 0x86dd)
      |
    ==+======== ether セグメント 2: IPv4 サブネット B, IPv6 サブネット X (同上)
    
  • あなたの組織から相手までに IPv4 到達性 があれば、 IPv6-over-IPv4 トンネルを両者のあいだの IPv4-only ネットワークをまたぐのに使えます。
    	+--- IPv4 だけを cloud -----------------+
    	|					|
      +<================ IPv6-over-IPv4 トンネル ============>+
      |	|					|	  |
      |	+---------------------------------------+	  |
      |							  |
    IPv4/v6 ルーター					IPv4/v6 ルーター
      |							  |
    ==+======= IPv4/v6 セグメント 1				==+======= IPv4/v6 セグメント 2
    
twists Twists IPv6 はまだ幼年期にあるので、いくつかの非標準な items や 仕様の穴があります。 KAME IPv6 実装 はそれらに取り組んでいます。
  • IPv6 は アドレス仕様で "scoped" あるいは、非世界規模-unique なもの を規定しています。 a scoped address を明確にするために、 アドレスの scope を明示的に定義する必要があります。 たとえば、仕様は "リンクローカルアドレス" を規定し、これは シングルリンク上だけでユニークです。 アドレスを明確にするために、 outgoing "リンク" にアドレスを 明記する必要があります。
    KAME IPv6 コードはカーネル内部構造中で a scoped address の3バイト目と4バイト目に scope 識別子 を組み込んでいます。 このため、時々 "fe80:1::abcd:1234:abcd:1234" のような内部形式を見かけると思います。これは "fe80:0000:0000:0000:abcd:1234:abcd:1234 on scope 1" を意味します。 可能な限り内部形式での指定をしないでください。
    a scoped address を明確にするには2つの方法があって:
    • ping6(8) に対する -I のような特殊コマンドラインオプションを使います。
    • アドレス指定に fe80::1%de0 のような extended scoped address syntax を使います。 この文法は、あるいくつかのアプリケーションのみで使えることに注意してください。 ( getaddrinfo(3) を使うアプリケーションがこれを扱えます)。
  • ローカルネットワークで何らかの実験を行う時は、 サイトローカル ユニキャストアドレスを使うことを試さないでください。. 仕様書の方法はあまりにもぼんやりとかかれています。 仕様書も実装も 実際の利用にサイトローカル アドレスが putting される前に改良されるべきです。 分割されたネットワーク (外部につながっていないもの)を run したい場合であっても いつも IPv6 aggregatable グローバルユニキャストアドレスを使ってください。
  • 実装のほかの詳細なことは KAME implementation document にあります。


仕様ではありませんが、挙げておく価値のある事柄:
  • すべてのツールが IPv6 通信の準備ができているわけではありません。 X(1) や、ほかのいくつかのツールは IPv4 通信しかサポートしていません。 named(8) や yp(8) では、データベース中に IPv6 アドレスを入れることはできますが、 IPv6 通信に対応していません ( IPv6 cloud 上では名前解決ができません)。
  • pkgsrc ディレクトリー のいくつかは USE_INET6 で IPv4/v6 構築と IPv4-only の構築を切り替えます。 USE_INET6 で IPv6 の準備のできている NetBSD システムが自動的に動くようになります。
  • この実装は自動トンネル (RFC1933) も 6over4 もサポートしていません。
  • AF_INET6 wildcard listening sockets will grab IPv4 connection only with certain configurations (このふるまいは RFC2553 ドキュメントに)。 詳しくは inet6(4) および ip6(4) をご覧ください。
  • IPv6 は ネットワークインターフェースにマルチキャストサポートを要求します。 もし、ドライバーのマルチキャストサポートに何らかの問題がある (サポートがない、マルチキャストフィルター設定にバグがある、などのような)なら、 IPv6 は全く動きません。 この種の問題に出会ったら、 バグレポートを送る をお願いします。
  • NetBSD には、 IPv6 基本 API 仕様では事実上不賛成の getipnodebyname(3) と getipnodebyaddr(3) がありません。 これらはまた、 IPv6 アドレスの scoped nature のサポートが欠乏してます。 代わりに、 getaddrinfo(3) と getnameinfo(3) を使ってください。
maintenance 管理
  • 監視に便利なツール
    • ifconfig(8) - ネットワークインタフェースのパラメーターを設定したり調べたりする。
    • route(8) - 経路表を操作する
    • ping6(8) - ICMPv6 ECHO_REQUESTパケットをネットワーク上のノードに向けて送る
    • traceroute6(8) - パケットがノードに到着するまでの経路を表示
    • tcpdump(1) - ネットワークインタフェース上のトラフィックを選択して表示
    • netstat(1) - ネットワーク状態の表示
    • ndp(8) - IPv6 用の arp(8) にそっくりなもの
    • ifmcstat(8) - check カーネル マルチキャスト group 設定
    • systat(8) 'systat netstat' - ネットワーク接続を動的に表示
  • IPv6 自動設定
    • rtadvd(8) - ルーターから router advertisement の発信
    • rtsold(8) - ホストに使い、定期的に router solicitation を送信
    • rtsol(8) - ホストに使い、 single router solicitation を送信
  • 経路制御デーモン
    • route6d(8) - routed(8) みたいな RIPng ルーティングデーモン
    • net/pim6dd - PIMv6 dense mode マルチキャスト経路制御デーモン
    • net/pim6sd - PIMv6 sparse mode マルチキャスト経路制御デーモン
    • net/zebra - zebra 経路制御デーモン、RIPng, BGP4+とOSPFv6をサポート
  • IPv6 関連擬似インターフェース
    • faith(4) - IPv6-to-IPv4 TCP relay capturing interface, helps faithd(8)
    • gif(4) - IPv[46] over IPv[46] する generic トンネルインターフェース
    • ifconfig(8) - "tunnel" サブコマンドによる gif(4) 設定
    • stf(4) - 6to4 トンネルインターフェース
userland ユーザーアプリケーション 基本システムにある次のプログラムが IPv6-enabled として知られています: finger(1), fstat(1), ftp(1), netstat(1), rlogin(1), rsh(1), systat(1), telnet(1), tftp(1), whois(1), faithd(8), fingerd(8), ftpd(8), ifconfig(8), inetd(8), lpd(8) (and friends), mld6query(8), mtrace6(8), ndp(8), pim6dd(8), pim6sd(8), ping6(8), pppd(8), rdate(8), rip6query(8), rlogind(8), route6d(8), rshd(8), sendmail(8), syslogd(8), tcpdchk(8) (and friends), telnetd(8), tftpd(8), traceroute6(8), trpt(8) .

RPC と NFS は現在、 IPv6 をサポートしています。

増えつつある パッケージ が IPv6 に対応しています。

IPv6対応した外部のソフトウェアを利用したい場合、 多くの場合IPv6パッチを入手しないといけません。 ネットワークのいろんな場所にIPv6パッチがおかれています。

NetBSD ドキュメンテーション: ネットワーク に戻る

この IPv6 Configuration Help サイトは The NetBSD Project が所有しています。
[ 戻る | 進む | Random Site | サイト一覧 ]

***** ここから 1.77化再開 ****** ***** ここまで 1.77化完了 ****** ***** 旧訳開始 ****** ***** 旧訳終了 ****** ***** ここから BASELINKS html tag まで が違う ******


(連絡先 - 英語, 日本語: www@JP.NetBSD.ORG)
$NetBSD: index.list,v 1.79 2001/09/17 00:10:34 itojun Exp $
Copyright © 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.