(2015-04-08)
にて試行(wheezy)。
目次
Raspberry Pi(Raspbian)はデフォルトでIPv6がオフの状態になっています(というか設定ファイルでオフにしてある)。
IPv6をオンにするには、下記ファイルを修正してリブートすればOKです。
(ちなみに net-pf-10 というのは ipv6モジュールのエイリアスだそうで。)
ファイル /etc/modprobe.d/ipv6.conf
変更前
# Don't load ipv6 by default alias net-pf-10 off #alias ipv6 off
変更後
# Don't load ipv6 by default -> loading #alias net-pf-10 off #コメントアウト #alias ipv6 off
リブートしなくてもIPv6を有効にすることはできますが、一応動作確認の意味でリブートするのがよいと思います。
リブートせずにIPv6を有効にする方法:
$ su # modprobe net-pf-10 (または) # modprobe ipv6
半ば常識と思いますが、他のモジュールとの依存関係により、冒頭の設定ファイルを修正せずともipv6のモジュールが自動的にロード・有効化する場合があります。
例
仮想のブリッジを構成しようとして bridge モジュールがロードされるときに ipv6 も同時にロードされます。modinfoコマンドで依存関係が確認できます。
$modinfo bridge filename: /lib/modules/3.18.9+/kernel/net/bridge/bridge.ko alias: rtnl-link-bridge version: 2.3 license: GPL srcversion: DB326577D544FC7502648FC depends: stp,llc,ipv6 intree: Y vermagic: 3.18.9+ preempt mod_unload modversions ARMv6
IPv6が有効になると、IPv6アドレスが自動的に割り当てられます(デフォルト動作)。
割り当てられるアドレスの種類:
これらは ifconfig コマンドの出力で確認できます。
inet6アドレス: fe80::aaaa:bbbb:cccc:dddd/64 範囲:リンク inet6アドレス: 2408:xxxx:xxxx:xxxx:aaaa:bbbb:cccc:dddd/64 範囲:グローバル
というような行が出力されていると思います。
ご参考 https://www.nic.ad.jp/ja/newsletter/No32/090.html
2016-02-02追記
なぜか、上記のグローバルユニキャストアドレスが、自動割当されなくなっております。
よくわからん。
現在のOSはこれ。
Linux rasp01 4.1.13+ #826 PREEMPT Fri Nov 13 20:13:22 GMT 2015 armv6l GNU/Linux
もしかして・・・NTTの光でんわルーターが情報をくれなくなったとか(勝手に想像)。
同一リンク上でのみ有効なアドレス、要するにルーター越えられない、だそうです。
使い方にくせがあるようです。詳しくはまた別の機会に。
いわゆるグローバルアドレス(世界中で重複しないアドレス)。
管理人宅の場合、先頭48ビット(グローバルルーティングプレフィックス)が下記の値になっています。
2408:xxxx:xxxx (伏字)
自動割り当ての場合、アドレス生成する際に自動的にルーターの情報を使っているようです。(実はこれをメモしたかったのでこのページを起こしたという・・・)
管理人宅はNTTの光なのですが、その場合上記のプレフィックスは下記の範囲になるらしいです。
2001:c90::/32 2001:d70::/30 2001:a000::/21 2404:1a8::/32 <- 管理人宅はここらへんだが、ルーター再起動で変わったりする 2408::/22
グローバルユニキャストアドレスを自動で割り当てないようにするには、冒頭の定義ファイル /etc/modprobe.d/ipv6.conf に下記のように1行追加し、リブートします。
こうすると、リンクローカルユニキャストアドレスのみが自動割り当てされるようになります。
ファイル /etc/modprobe.d/ipv6.conf
# Don't load ipv6 by default -> loading #alias net-pf-10 off #alias ipv6 off options net-pf-10 autoconf=0 #1行追加
ちなみに、上記のautoconfの値は、/proc/sys/net/ipv6/conf/default/autoconf の内容を表示すると分かります。
ただし、このファイルは ipv6モジュールがロードされている場合のみ参照が可能です。
これを抑止して意味があるのかどうかは分りません^^;
以下、戯言:
なぜこんなことを調べたのかというと、前節でもちょいと記述しているが、ルーター再起動などでプレフィックスが変化した場合に、IPv6アドレスが揺らいでしまうのが気持ち悪いので何とかしたい、というのがあったのでさ。たとえばIPv6でping6を打つ場合、リンクローカルユニキャストアドレスではインターフェースを必ず指定しなければならず、とても使いにくいのでさ。しかもルーター超えできない。これがグローバルユニキャストアドレスならばインターフェイス名は不要で使えるのでさ。これを/etc/hostsに書いておけば、ほら、ホスト名でipv6使えるのでさ。
しかししかし、これはこれで別によい、というか、世界中で重複しない、を目指すなら、プレフィックスはルーターからもらうのが筋というもの。また、これとは別に、従来のIPv4でいうところのローカルアドレス(192.168.ってやつ)に相当するIPv6の「ユニークローカルIPv6ユニキャストアドレス(ULA)」てのがあるらしく、宅内ではこれを振ってつかうのがよろしかろう、ということで、この方向でいってみますかね。
下記はいずれ実験してみるとします。
下記についてはいつかやるかもしれないし、やらないかも。
もっと勉強したい方は右へ・・・