* Linux で IPv6を使う [#m214ae79] ** IPv6でマルチホーム [#zac78845] tunnelを使った方法ではありません。あしからず。 光プレミアムで使うTIPSです。vlan構成になっていますが、物理NICで別れている場合も同じ方法が使えます。~ ご自宅にどうぞ。幸せになれるに違い有りません:P 別途、IPv6ルータが有り、インターネットへの到達性があるネットワークと、フレッツ光プレミアム等に接続され、インターネットとはルーティングされていないネットワークを同時に接続した場合、IPv6のマルチホーム環境となる。同時に接続した場合、ルーティングテーブルを書き、両方のネットワークと上手に共存する方法を紹介する。 *** 環境・構成 [#z3e382dc] The Internet Flets | | |v6 default | CTU(hikariP) 2001:a000::/21 | | 2001:0d70::/30 +----+-----------+-----+ |(eth0.20) (eth0.11) | | Linux 2.6.x (debian) | +----------------------+ |dev|addr|備考|h |eth0.20|2001:200:564::80:ffff|native -> インターネット| |eth0.11|2001:a092:c0c0::80:ffff|native -> 地域IP網。closed| ※NTTのアドレスブロック 西: 2001:A000::/21 2001:0D70::/30 東: 2001:0C90::/32 2404:1a8::/32 2408::/22 *** ルータのアドレスを調べる [#hdb202f4] デフォルトではRAを受け取る設定になっている為、 # netstat -rn -net6 でルーティング情報を調べることができる。 最後の方に存在している ::/0 fe80::200:87ff:fe8d:e678 UGDA 1024 106 0 eth0.11 ::/0 fe80::21c:c4ff:fe5f:3802 UGDA 1024 1 0 eth0.20 値を見ればよい *** ルータにpingが届くか確認 [#y2fdc491] # ping6 -I eth0.11 fe80::200:87ff:fe8d:e678 # ping6 -I eth0.20 fe80::21c:c4ff:fe5f:3802 *** 環境設定 [#l7105966] raを受け取らない # echo 0 > /proc/sys/net/ipv6/conf/default/accept_ra redirectを無効 # echo 0 > /proc/sys/net/ipv6/conf/default/accept_redirects ipv6 forwardingを無効(必要な場合のみ有効にしてください。今回の用途では不要) # echo 0 > /proc/sys/net/ipv6/conf/default/forwarding ※ 勿論、sysctlコマンドでも設定可能です 動作に問題がないことを確認した後、sysctl.confへ設定を書きます。 そのまま、sysctl.confへ追記した場合は、 Setting kernel variables...error: "net.ipv6.conf.default.forwarding" is an unknown key と怒られてしまいますので、'''''/etc/modules''''' に、'''ipv6'''を書きます。 これは、kernelが起動したあと、/etc/network/interfaces の時にmoduleがロードされますが、今回sysctlで変更する場合には、ipv6 moduleがロードされていないためにこの問題が発生します。その為、最初にmoduleを読み込ませる必要があります。 echo "ipv6" >> /etc/modules /etc/sysctl.conf ----- # Uncomment the next line to enable packet forwarding for IPv6 net.ipv6.conf.default.forwarding=0 net.ipv6.conf.default.accept_ra=0 net.ipv6.conf.default.accept_redirects=0 吉藤さん、情報をありがとうございます。 *** アドレスを付ける [#if0fa5e0] # ip -6 addr add 2001:a092:c0c0::80:ffff/64 dev eth0.11 # ip -6 addr add 2001:200:564::80:ffff/64 dev eth0.20 # ifconfig eth0.20 add 2001:200:564::80:ffff/64 でも、同様のことができる *** ルーティングテーブルを書く [#qab51fe3] # route -A inet6 add 2001:a000::/21 gw fe80::200:87ff:fe8d:e678 dev eth0.11 # route -A inet6 add 2001:0d70::/30 gw fe80::200:87ff:fe8d:e678 dev eth0.11 # route -A inet6 add 2001:0C90::/32 gw fe80::200:87ff:fe8d:e678 dev eth0.11 # route -A inet6 add default gw fe80::21c:c4ff:fe5f:3802 dev eth0.20 *** 動作確認 [#qb48099b] インターネットへの到達性があるか確認 # traceroute6 www.nic.ad.jp 地域IP網へ到達性があるか確認 # traceroute6 ctu.fletsnet.com *** 起動スクリプトに書く [#u5048188] もっときれいな方法が有るかもしれませんが、今回は次のように設定。~ vi /etc/network/interface auto eth0.11 eth0.20 iface eth0.11 inet6 static address 2001:a092:c0c0::80:ffff netmask 64 up route -A inet6 add 2001:a000::/21 gw fe80::200:87ff:fe8d:e678 dev eth0.11 up route -A inet6 add 2001:0d70::/30 gw fe80::200:87ff:fe8d:e678 dev eth0.11 up route -A inet6 add 2001:0C90::/32 gw fe80::200:87ff:fe8d:e678 dev eth0.11 iface eth0.20 inet6 static address 2001:200:564::80:fff netmask 64 up route -A inet6 add default gw fe80::21c:c4ff:fe5f:3802 dev eth0.20 ※ RedhatLinuxやCentOS、Fedoraは、書き方わかりません。強引に、コマンド類をrc.localに書けば、起動時は動くでしょう(知っている人追記募集) <ぼそ>~ '' &color(darkblue){っていうか、IPv6はnetmaskではなく、prefixrenなんだけどな…}; ''~ </ぼそ> ** 関連記事 [#b9d3696f] - FreeBSD - [[フレッツv6サイトとIPv6接続を共存する@カール・ミッチーのなんでも日記:http://karl0204.at.webry.info/200804/article_44.html]] - Windows XP - [[光プレミアムにおけるIPv6問題への手軽な対策:http://www25.big.jp/~jam/blog/2006/02/11/120/]] - [[Default Address Selection Standardization:http://www.nttv6.net/dass/]] * 光プレミアムにおけるIPv6問題への手軽な対策 [#sb19d45d] サイトが消えていたため、[[WebArchives:http://web.archive.org/web/20070323200833/http://www25.big.jp/~jam/blog/2006/02/11/120]]から回収できたコンテンツを転載しておく。 ---- IPv6問題については光プレミアムにおけるIPv6問題のまとめに書いた通り。 NTTに頼んでもどうしようもないと分かりました。~ 多分microsoft.comとかが明日からIPv6対応になって、ユーザーの半分位が接続が遅くなったとかって文句言わないと直らないでしょう。駄目過ぎ。 なので自前で解決しましょうって話です。~ 解決の方法は何種類かあります。~ メニューに合わせて選びましょう。 - IPv6を使う必要がない→IPv6をアンインストールしましょう - IPv6はv6stageだけ見たい→以下の方法でどうぞ - IPv6はフルに使う→手動でルーティング設定してください。netshでgoogleして頑張れ。 さて、ここからは僕みたいな「v6stageの動画はみたいけど、他のIPv6はどうでもいいや」って人のための説明です。できるだけ自堕落に適当に対策します。対策は、一言で言うと、IPv4のアドレスがあったらそっちを使い、IPv6しかないときだけIPv6を使うという物です。適当ですね♪ 設定にはnetshを使います。~ まずは”netsh interface ipv6 show prefixpolicy”とcmdから入力します。以下のような物が出力されたはずです。 > netsh interface ipv6 show prefixpolicy アクティブ状態を照会しています… Precedence Label Prefix -------------------------------------------------------------------------------- 5 5 3ffe:831f::/32 10 4 ::ffff:0:0/96 20 3 ::/96 30 2 2002::/16 40 1 ::/0 50 0 ::1/128 この表の中で、::/0がIPv6を、::ffff:0:0:/96がIPv4を意味します。そしてこのルールはPrecedenceの大きい方から適用されます。もうお分かりですね、両者のエントリーのPrecedenceを入れ替えればいいわけですw 上の表を参考にして以下を打ち込みます。ひとつでも設定すると中身が空になってしまうので、入れ替えるふたつだけではなくて、全部を設定しなおさなくてはいけませんでした。 netsh interface ipv6 set prefixpolicy ::1/128 50 0 netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 40 4 netsh interface ipv6 set prefixpolicy 2002::/16 30 2 netsh interface ipv6 set prefixpolicy ::/96 20 3 netsh interface ipv6 set prefixpolicy ::/0 10 1 netsh interface ipv6 set prefixpolicy 3ffe:831f::/32 5 5 これで完成です。v6stageで映画を見ながら、快適に http://www.netbsd.org/ をチェックしにいけます。但しこれは対処療法だということを覚えておいてください。本来ならNTT-Wがこういう問題を解決しなくてはいけませんし、そういった問題を残したままの製品を売るなんて最低です。 もしこの設定で快適になったなら、一度NTT-Wに電話して、光プレミアムにしてから http://www.netbsd.org/ のホームページを見るのにタイムラグが発生するようになった。何とかしろ。なんて文句を一言いって、NTT-Wの方に問題を伝えてください。よろしくお願いします。