IPv6

提供: ArchWiki
2015年2月6日 (金) 23:32時点におけるKusakata (トーク | 投稿記録)による版 (ページの作成:「Category:ネットワーク en:IPv6 es:IPv6 pt:IPv6 ru:IPv6 zh-CN:IPv6 {{Related articles start}} {{Related4|IPv6 tunnel broker setup}} {{Related...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

Arch Linux では、IPv6 はデフォルトで有効になっています。IPv6 トンネルに関する情報を探している場合は、IPv6 tunnel broker setup を見ると良いでしょう。

プライバシー拡張

RFC 4941 にあるように IPv6 の Privacy Extensions for Stateless Address Autoconfiguration を有効にするには、以下の手順に従って下さい:

以下の行を /etc/sysctl.d/40-ipv6.conf に追加:

# Enable IPv6 Privacy Extensions
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
net.ipv6.conf.nic0.use_tempaddr = 2
...
net.ipv6.conf.nicN.use_tempaddr = 2

nic0 から nicN はあなたのネットワークインターフェイスカード (Network Interface Card) に置き換えて下さい。sysctl の設定を実行する場合、all.use_tempaddrdefault.use_tempaddr パラメータは既存の nic には適用されません。

再起動後、Privacy Extensions が有効になります。

dhcpcd

dhcpcd のデフォルト設定ファイルには、バージョン 6.4.0 から slaac private オプションが含まれており、RFC 7217 の実装である、"Stable Private IPv6 Addresses instead of hardware based ones" を有効にします (commit)。従って、新しいネットワークに接続するとき以外に IPv6 アドレスに変更するような場合を除いて、何も変更する必要はありません。

NetworkManager

NetworkManager には /etc/sysctl.d/40-ipv6.conf の設定は反映されません。このことは再起動した後に $ ip -6 addr show interface を実行することで確認できます: 標準のアドレスの隣に scope global temporary アドレスは表示されないでしょう。

対応方法は NetworkManager#IPv6 Privacy Extensions を有効にする を見て下さい。

ノート: Although it may seem the scope global temporary IPv6 address created by enabling Privacy Extensions never gets renewed (it never shifts to deprecated status at the term of its valid_lft lifetime), it is to be verified over a longer period of time that this address does indeed change.

近隣探索

Pinging the multicast address ff02::1 results in all hosts in link-local scope responding. An interface has to be specified:

$ ping6 ff02::1%eth0

With a ping to the multicast address ff02::2 only routers will respond.

If you add an option -I your-global-ipv6, link-local hosts will respond with their link-global scope addresses. The interface can be omitted in this case:

$ ping6 -I 2001:4f8:fff6::21 ff02::1

固定アドレス

固定アドレスを使うことによって場合によりセキュリティが向上することがあります。例えば、あなたのローカルなルーターが近隣探索や radvd (RFC 2461) を使う場合、インターフェイスは MAC アドレスに基づいて自動的に割り当てられます (IPv6 の Stateless Autoconfiguration を使用)。これだと IP アドレスのネットワークが変更されたとしてもシステムを追跡することが出来るため、セキュリティ上あまりよろしくないということがあるでしょう。

netctl を使って固定 IP アドレスを割り当てるには、/etc/netctl/examples/ethernet-static のサンプルファイルを見て下さい。以下の行が重要です:

...
# For IPv6 static address configuration
IP6=static
Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
Routes6=('abcd::1234')
Gateway6='1234:0:123::abcd'

Comcast の IPv6

dhcpcd -4 or dhcpcd -6 worked using a Motorola SURFBoard 6141 and a Realtek RTL8168d/8111d. Either would work, but would not run dual stack: both protocols and addresses on one interface. (The -6 command would not work if -4 ran first, even after resetting the interface. And when it did, it gave the NIC a /128 address.) Try these commands:

# dhclient -4 enp3s0
# dhclient -P -v enp3s0

The -P argument grabs a lease of the IPv6 prefix only. -v writes to stdout what is also written to /var/lib/dhclient/dhclient6.leases:

Bound to *:546
Listening on Socket/enp3s0
Sending on   Socket/enp3s0
PRC: Confirming active lease (INIT-REBOOT).
XMT: Forming Rebind, 0 ms elapsed.
XMT:  X-- IA_PD a1:b2:cd:e2
XMT:  | X-- Requested renew  +3600
XMT:  | X-- Requested rebind +5400
XMT:  | | X-- IAPREFIX 1234:5:6700:890::/64

IAPREFIX is the necessary value. Substitute ::1 before the CIDR slash to make the prefix a real address:

# ip -6 addr add 1234:5:6700:890::1/64 dev enp3s0

IPv6 の無効化

ノート: Arch カーネルは直接 IPv6 をサポートしてるため、モジュールをブラックリスト化することはできません。

機能を無効にする

カーネル行に ipv6.disable=1 を追加すると IPv6 スタック全体が無効化されるので、問題が発生している場合の対処法として使うことができます。詳しくはカーネルパラメータを見て下さい。

もしくは、ipv6.disable_ipv6=1 を追加すると IPv6 スタックの機能は維持されつつも、どのネットワークデバイスにも IPv6 アドレスが割り当てられなくなります。

以下の sysctl 設定を /etc/sysctl.d/40-ipv6.conf に追加することで、特定のネットワークインターフェイスへの IPv6 アドレスの割り当てを止めさせることも可能です:

# Disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.nic0.disable_ipv6 = 1
...
net.ipv6.conf.nicN.disable_ipv6 = 1

無効にするインターフェイスはちゃんと全て確認してください。sysctl の設定を適用する場合、all.disable_ipv6 の無効化は既に立ち上がっているインターフェイスには適用されないためです。

また、sysctl で IPv6 を無効化するときは、/etc/hosts の IPv6 ホストをコメントアウトしたほうが良いでしょう:

#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost
#::1 localhost.localdomain localhost

コメントアウトしておかないと、利用できない IPv6 アドレスでホストが解決されて接続エラーが起こる可能性があります。

他のプログラム

カーネルの IPv6 機能を無効化しても他のプログラムが IPv6 を使用するのを止めることはできません。ほとんどの場合、止めなくても全く問題ありませんが、プログラムに何か問題が発生するようでしたら、プログラムのマニュアルページを読んでプログラムが IPv6 を使用しないように設定してください。

dhcpcd

dhcpcd will continue to harmlessly attempt to perform IPv6 router solicitation. To disable this, as stated in the dhcpcd.conf (5) man page, add the following to /etc/dhcpcd.conf:

noipv6rs
noipv6

NetworkManager

NetworkManager で IPv6 を無効化するには、ネットワークの状態アイコンを右クリックして、Edit Connections > Wired > Network name > Edit > IPv6 Settings > Method > Ignore/Disabled を選択してください。

そして "Save" をクリックします。

ntpd

Systemd#ドロップインスニペット に書いてあるように、systemd が ntpd.service を起動する方法を変更します:

# systemctl edit ntpd.service

This will create a drop-in snippet that will be run instead of the default ntpd.service. The -4 flag prevents IPv6 from being used by the ntp daemon. Put the following into the drop-in snippet:

[Service]
ExecStart=
ExecStart=/usr/bin/ntpd -4 -g -u ntp:ntp

which first clears the previous ExecStart, and then replaces it with one that includes the -4 flag.

参照