raspberry_pi:ipv6:ipv6を有効にしてみる

旧サイトより転記。

(2015-04-08)

OS

Linux rasp01 3.18.11+ #776 PREEMPT Mon Apr 6 13:13:58 BST 2015 armv6l GNU/Linux

にて試行(wheezy)。

IPv6を明示的に有効化

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が勝手に有効化

半ば常識と思いますが、他のモジュールとの依存関係により、冒頭の設定ファイルを修正せずとも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が有効になると、IPv6アドレスが自動的に割り当てられます(デフォルト動作)。 割り当てられるアドレスの種類:

  • リンクローカルユニキャストアドレス
  • グローバルユニキャストアドレス(下記2016-02-02追記参照!!)

これらは 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)」てのがあるらしく、宅内ではこれを振ってつかうのがよろしかろう、ということで、この方向でいってみますかね。

宿題

下記はいずれ実験してみるとします。

  • ユニークローカルIPv6ユニキャストアドレス(ULA)を割り当て → やってみた
  • 割り当てたULAでの運用

自由研究

下記についてはいつかやるかもしれないし、やらないかも。

  • リンクローカルユニキャスト、グローバルユニキャストアドレスの手動割り当て
  • リンクローカルユニキャストアドレスの自動割り当て抑止(やってどうする?単なる好奇心、あるいはMACアドレスの隠匿)

もっと勉強したい方は右の本でもどうぞ・・・

  • raspberry_pi/ipv6/ipv6を有効にしてみる.txt
  • 最終更新: 2023/03/25 11:14
  • by dkroot