「IPv6」の版間の差分
(ページの作成:「Category:ネットワーク en:IPv6 es:IPv6 pt:IPv6 ru:IPv6 zh-CN:IPv6 {{Related articles start}} {{Related4|IPv6 tunnel broker setup}} {{Related...」) |
|||
9行目: | 9行目: | ||
{{Related articles end}} |
{{Related articles end}} |
||
Arch Linux では、IPv6 はデフォルトで有効になっています。IPv6 トンネルに関する情報を探している場合は、[[en2:IPv6 tunnel broker setup|IPv6 tunnel broker setup]] を見ると良いでしょう。 |
Arch Linux では、IPv6 はデフォルトで有効になっています。IPv6 トンネルに関する情報を探している場合は、[[en2:IPv6 tunnel broker setup|IPv6 tunnel broker setup]] を見ると良いでしょう。 |
||
+ | |||
+ | == 近隣探索 == |
||
+ | |||
+ | マルチキャストアドレス {{ic|ff02::1}} に ping するとリンクローカルスコープの全てのアドレスが返答します。インターフェイスを指定する必要があります: |
||
+ | |||
+ | $ ping6 ff02::1%eth0 |
||
+ | |||
+ | マルチキャストアドレス {{ic|ff02::2}} に ping するとルーターだけが返答します。 |
||
+ | |||
+ | {{ic|-I ''your-global-ipv6''}} オプションを追加すると、リンクローカルホストはリンクグローバルスコープアドレスを返します。この場合はインターフェイスを省略できます: |
||
+ | |||
+ | $ ping6 -I 2001:4f8:fff6::21 ff02::1 |
||
+ | |||
+ | == ステートレス自動設定 (SLAAC) == |
||
+ | |||
+ | ネットワークが設定されている場合、IPv6 アドレスを取得する一番簡単な方法は''ステートレスアドレス自動設定''になります (略して SLAAC)。ルーターが示すプレフィックスから自動的にアドレスが推測されるため、特別な設定や DHCP クライアントなどのソフトウェアが必要ありません。 |
||
+ | |||
+ | === クライアント === |
||
+ | |||
+ | [[netctl]] を使っている場合、イーサネットまたはワイヤレス設定に以下の行を追加するだけで使えます。 |
||
+ | |||
+ | IP6=stateless |
||
+ | |||
+ | [[NetworkManager]] を使用している場合、自動的に IPv6 アドレスが有効になります。 |
||
+ | |||
+ | ステートレス自動設定は IPv6 の icmp パケットがネットワークを通過できる場合にのみ利用することができるので注意してください。クライアント側から {{ic|ipv6-icmp}} パケットを許可する必要があります。[[シンプルなステートフルファイアウォール]]/[[iptables]] を使っているのであれば次を追加してください: |
||
+ | |||
+ | -A INPUT -p ipv6-icmp -j ACCEPT |
||
+ | |||
+ | 他のファイアウォールフロントエンド (ufw, shorewall など) を使っている場合はそれぞれのドキュメントを読んで {{ic|ipv6-icmp}} パケットを有効にしてください。 |
||
+ | |||
+ | === ゲートウェイ === |
||
+ | |||
+ | ネットワーク上のクライアントに IPv6 を正しく配るためには広告デーモンを使用する必要があります。広告に使われる標準的なツールは {{Pkg|radvd}} で[[公式リポジトリ]]からインストールすることができます。radvd の設定はとてもシンプルです。{{ic|/etc/radvd.conf}} を編集して以下を記述してください: |
||
+ | |||
+ | # replace LAN with your LAN facing interface |
||
+ | interface LAN { |
||
+ | AdvSendAdvert on; |
||
+ | MinRtrAdvInterval 3; |
||
+ | MaxRtrAdvInterval 10; |
||
+ | prefix ::/64 { |
||
+ | AdvOnLink on; |
||
+ | AdvAutonomous on; |
||
+ | AdvRouterAddr on; |
||
+ | }; |
||
+ | }; |
||
+ | |||
+ | 上記の設定は、広告されている /64 ブロックのアドレスを使って自動的に設定するようにクライアントに伝えます。上記の設定では LAN インターフェイスに割り当てられた''全てのプレフィックス''を広告することになるので注意してください。広告するプレフィックスを制限したい場合は {{ic|::/64}} の代わりに適当なプレフィックスを使って下さい。例えば {{ic|2001:DB8::/64}}。{{ic|prefix}} ブロックは宣言したいプレフィックスの数だけ繰り返し用いることができます。 |
||
+ | |||
+ | ゲートウェイも {{ic|ipv6-icmp}} パケットを全てのチェインで許可する必要があります。[[シンプルなステートフルファイアウォール]]/[[iptables]] を使っている場合は以下を追加: |
||
+ | |||
+ | -A INPUT -p ipv6-icmp -j ACCEPT |
||
+ | -A OUTPUT -p ipv6-icmp -j ACCEPT |
||
+ | -A FORWARD -p ipv6-icmp -j ACCEPT |
||
+ | |||
+ | 他のファイアウォールフロントエンドを使っている場合も適当に設定して、忘れずに {{ic|radvd.service}} を有効にしてください。 |
||
== プライバシー拡張 == |
== プライバシー拡張 == |
||
+ | SLAAC を通じてクライアントがアドレスを取得した場合、IPv6 アドレスは宣伝されたプレフィックスとクライアントのネットワークインターフェイスの MAC に由来することになります。そうすると IPv6 アドレスから簡単にコンピューターの MAC アドレスを割り出せてしまうためセキュリティ上の懸念になりかねません。この問題に取り組むために ''IPv6 Privacy Extensions'' ([https://tools.ietf.org/html/rfc4941 RFC 4941]) が開発されました。プライバシー拡張を有効にすると、カーネルは自動設定された元のアドレスからわからなくした''一時''アドレスを生成します。リモートサーバーに接続するときはプライベートアドレスが使用されるためオリジナルのアドレスは隠匿されます。プライバシー拡張を有効にするには以下の手順に従って下さい: |
||
− | [https://tools.ietf.org/html/rfc4941 RFC 4941] にあるように IPv6 の Privacy Extensions for Stateless Address Autoconfiguration を有効にするには、以下の手順に従って下さい: |
||
以下の行を {{ic|/etc/sysctl.d/40-ipv6.conf}} に追加: |
以下の行を {{ic|/etc/sysctl.d/40-ipv6.conf}} に追加: |
||
38行目: | 94行目: | ||
{{Note|Although it may seem the {{ic|scope global temporary}} IPv6 address created by enabling Privacy Extensions never gets renewed (it never shifts to {{ic|deprecated}} status at the term of its {{ic|valid_lft}} lifetime), it is to be verified over a longer period of time that this address '''does''' indeed change.}} |
{{Note|Although it may seem the {{ic|scope global temporary}} IPv6 address created by enabling Privacy Extensions never gets renewed (it never shifts to {{ic|deprecated}} status at the term of its {{ic|valid_lft}} lifetime), it is to be verified over a longer period of time that this address '''does''' indeed change.}} |
||
− | |||
− | == 近隣探索 == |
||
− | |||
− | Pinging the multicast address {{ic|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 {{ic|ff02::2}} only routers will respond. |
||
− | |||
− | If you add an option {{ic|-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 |
||
== 固定アドレス == |
== 固定アドレス == |
||
63行目: | 107行目: | ||
Routes6=('abcd::1234') |
Routes6=('abcd::1234') |
||
Gateway6='1234:0:123::abcd' |
Gateway6='1234:0:123::abcd' |
||
+ | |||
+ | == IPv6 と PPPoE == |
||
+ | |||
+ | PPPoE の標準ツールである {{ic|pppd}} は PPPoE における IPv6 をサポートしています (あなたの ISP とモデムがサポートしている場合)。以下を {{ic|/etc/ppp/pppoe.conf}} に追加してください: |
||
+ | |||
+ | +ipv6 |
||
+ | |||
+ | PPPoE に [[netctl]] を使っている場合、netctl の設定に以下を追加してください: |
||
+ | |||
+ | PPPoEIP6=yes |
||
+ | |||
+ | == プレフィックス委譲 (DHCPv6-PD) == |
||
+ | {{Note|このセクションではゲートウェイのカスタム設定について述べており、クライアントのマシンは対象にしていません。市場に出ている標準的なルーターについては、ルーターのドキュメントを読んでプレフィックス委譲を有効にする方法を調べて下さい。}} |
||
+ | |||
+ | プレフィックス委譲は多くの ISP で IPv6 を展開するのに使われている技術です。ネットワークプレフィックスをユーザーサイト (ローカルネットワーク) に割り当てる手法になります。ルーターを設定することでネットワークプレフィックスを様々なサブネットワークに割り当てるができます。ISP は DHCPv6 を使ってネットワークプレフィックスの手綱を握り (大抵は {{ic|/56}} か {{ic|/64}})、dhcp クライアントがプレフィックスをローカルネットワークに割り当てます。インターフェイスが2つのシンプルなゲートウェイの場合、WAN (もしくは ppp などの擬似インターフェイス) に接続されたインターフェイスから取得したアドレスから、ローカルネットワークに接続されたインターフェイスに IPv6 プレフィックスが割り当てられます。 |
||
+ | |||
+ | === dibbler を使う === |
||
+ | |||
+ | [http://klub.com.pl/dhcpv6/ Dibbler] はポータブルな DHCPv6 クライアントであり、プレフィックス委譲に使うことができます。[[AUR]] の {{AUR|dibbler}} でインストール可能です。 |
||
+ | |||
+ | {{ic|dibbler}} を使用する場合、{{ic|/etc/dibbler/client.conf}} を編集して下さい: |
||
+ | |||
+ | log-mode short |
||
+ | log-level 7 |
||
+ | # use the interface connected to your WAN |
||
+ | iface "WAN" { |
||
+ | ia |
||
+ | pd |
||
+ | } |
||
+ | |||
+ | {{Tip|詳しくは {{ic|dibbler-client(8)}} の man ページを見て下さい。}} |
||
+ | |||
+ | === dhcpcd を使う === |
||
+ | |||
+ | [[Dhcpcd]] は IPv4 の dhcp サポートの他に、DHCPv6 クライアントのほぼ完全な実装も備えており、DHCPv6-PD も含まれています。{{ic|dhcpcd}} を使用する場合 {{ic|/etc/dhcpcd.conf}} を編集して下さい。IPv4 で既に dhcpcd を使っている場合は既存の設定を上書きしてください。 |
||
+ | |||
+ | duid |
||
+ | noipv6rs |
||
+ | waitip 6 |
||
+ | # Uncomment this line if you are running dhcpcd for IPv6 only. |
||
+ | #ipv6only |
||
+ | |||
+ | # use the interface connected to WAN |
||
+ | interface WAN |
||
+ | ipv6rs |
||
+ | iaid 1 |
||
+ | # use the interface connected to your LAN |
||
+ | ia_pd 1 LAN |
||
+ | #ia_pd 1/::/64 LAN/0/64 |
||
+ | |||
+ | この設定は WAN インターフェイス ({{ic|WAN}}) からプレフィックスを要求して内部インターフェイス ({{ic|LAN}}) に委譲します。{{ic|/64}} が発行される場合、コメントアウトされている {{ic|ia_pd instruction}} を使う必要があります。また、WAN インターフェイス ({{ic|WAN}}) 以外の全てのインターフェイスでルーター要請は無効になります。 |
||
+ | |||
+ | {{Tip|{{ic|dhcpcd(8)}} と {{ic|dhcpcd.conf(5)}} の man ページも参照。}} |
||
+ | |||
+ | === WIDE-DHCPv6 を使う === |
||
+ | |||
+ | [http://wide-dhcpv6.sourceforge.net/ WIDE-DHCPv6] は Dynamic Host Configuration Protocol for IPv6 (DHCPv6) のオープンソース実装で、KAME プロジェクトによって開発されました。[[AUR]] の {{AUR|wide-dhcpv6}} からインストール可能です。 |
||
+ | |||
+ | {{ic|wide-dhcpv6}} を使用する場合 {{ic|/etc/wide-dhcpv6/dhcp6c.conf}} を編集して下さい: |
||
+ | |||
+ | # use the interface connected to your WAN |
||
+ | interface WAN { |
||
+ | send ia-pd 0; |
||
+ | }; |
||
+ | |||
+ | id-assoc pd 0 { |
||
+ | # use the interface connected to your LAN |
||
+ | prefix-interface LAN { |
||
+ | sla-id 1; |
||
+ | sla-len 8; |
||
+ | }; |
||
+ | }; |
||
+ | |||
+ | {{Note|1={{ic|sla-len}} は {{ic|1=(WAN-prefix) + (sla-len) = 64}} となるように設定してください。上記の場合 {{ic|/56}} プレフィックス用に設定されています (56+8=64)。{{ic|/64}} プレフィックスの場合 {{ic|sla-len}} は {{ic|0}} になります。}} |
||
+ | |||
+ | wide-dhcpv6 クライアントを起動・有効化するには以下のコマンドを使います。{{ic|WAN}} は WAN に接続しているインターフェイスに置き換えてください: |
||
+ | # systemctl enable/start dhcp6c@WAN.service |
||
+ | |||
+ | {{Tip|詳しくは {{ic|dhcp6c(8)}} と {{ic|dhcp6c.conf(5)}} の man ページを読んで下さい。}} |
||
== Comcast の IPv6 == |
== Comcast の IPv6 == |
||
121行目: | 244行目: | ||
==== dhcpcd ==== |
==== dhcpcd ==== |
||
− | ''dhcpcd'' |
+ | ''dhcpcd'' は (無害ですが) IPv6 のルーター要請を送信し続けます。これを無効にするには、{{ic|dhcpcd.conf (5)}} [[man ページ]]に書かれているように、以下を {{ic|/etc/dhcpcd.conf}} に追加してください: |
noipv6rs |
noipv6rs |
||
138行目: | 261行目: | ||
# systemctl edit ntpd.service |
# systemctl edit ntpd.service |
||
+ | ドロップインスニペットが作成されデフォルトの {{ic|ntpd.service}} の代わりに実行されます。{{ic|-4}} フラグは ntp デーモンによって IPv6 が使われるのを防ぎます。以下をドロップインスニペットに記述してください: |
||
− | This will create a drop-in snippet that will be run instead of the default {{ic|ntpd.service}}. The {{ic|-4}} flag prevents IPv6 from being used by the ntp daemon. Put the following into the drop-in snippet: |
||
[Service] |
[Service] |
||
144行目: | 267行目: | ||
ExecStart=/usr/bin/ntpd -4 -g -u ntp:ntp |
ExecStart=/usr/bin/ntpd -4 -g -u ntp:ntp |
||
+ | 最初に {{ic|ExecStart}} を消去して、次に {{ic|-4}} フラグを使って置き換えます。 |
||
− | which first clears the previous {{ic|ExecStart}}, and then replaces it with one that includes the {{ic|-4}} flag. |
||
== 参照 == |
== 参照 == |
2015年6月22日 (月) 00:25時点における版
Arch Linux では、IPv6 はデフォルトで有効になっています。IPv6 トンネルに関する情報を探している場合は、IPv6 tunnel broker setup を見ると良いでしょう。
目次
近隣探索
マルチキャストアドレス ff02::1
に ping するとリンクローカルスコープの全てのアドレスが返答します。インターフェイスを指定する必要があります:
$ ping6 ff02::1%eth0
マルチキャストアドレス ff02::2
に ping するとルーターだけが返答します。
-I your-global-ipv6
オプションを追加すると、リンクローカルホストはリンクグローバルスコープアドレスを返します。この場合はインターフェイスを省略できます:
$ ping6 -I 2001:4f8:fff6::21 ff02::1
ステートレス自動設定 (SLAAC)
ネットワークが設定されている場合、IPv6 アドレスを取得する一番簡単な方法はステートレスアドレス自動設定になります (略して SLAAC)。ルーターが示すプレフィックスから自動的にアドレスが推測されるため、特別な設定や DHCP クライアントなどのソフトウェアが必要ありません。
クライアント
netctl を使っている場合、イーサネットまたはワイヤレス設定に以下の行を追加するだけで使えます。
IP6=stateless
NetworkManager を使用している場合、自動的に IPv6 アドレスが有効になります。
ステートレス自動設定は IPv6 の icmp パケットがネットワークを通過できる場合にのみ利用することができるので注意してください。クライアント側から ipv6-icmp
パケットを許可する必要があります。シンプルなステートフルファイアウォール/iptables を使っているのであれば次を追加してください:
-A INPUT -p ipv6-icmp -j ACCEPT
他のファイアウォールフロントエンド (ufw, shorewall など) を使っている場合はそれぞれのドキュメントを読んで ipv6-icmp
パケットを有効にしてください。
ゲートウェイ
ネットワーク上のクライアントに IPv6 を正しく配るためには広告デーモンを使用する必要があります。広告に使われる標準的なツールは radvd で公式リポジトリからインストールすることができます。radvd の設定はとてもシンプルです。/etc/radvd.conf
を編集して以下を記述してください:
# replace LAN with your LAN facing interface interface LAN { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; prefix ::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; };
上記の設定は、広告されている /64 ブロックのアドレスを使って自動的に設定するようにクライアントに伝えます。上記の設定では LAN インターフェイスに割り当てられた全てのプレフィックスを広告することになるので注意してください。広告するプレフィックスを制限したい場合は ::/64
の代わりに適当なプレフィックスを使って下さい。例えば 2001:DB8::/64
。prefix
ブロックは宣言したいプレフィックスの数だけ繰り返し用いることができます。
ゲートウェイも ipv6-icmp
パケットを全てのチェインで許可する必要があります。シンプルなステートフルファイアウォール/iptables を使っている場合は以下を追加:
-A INPUT -p ipv6-icmp -j ACCEPT -A OUTPUT -p ipv6-icmp -j ACCEPT -A FORWARD -p ipv6-icmp -j ACCEPT
他のファイアウォールフロントエンドを使っている場合も適当に設定して、忘れずに radvd.service
を有効にしてください。
プライバシー拡張
SLAAC を通じてクライアントがアドレスを取得した場合、IPv6 アドレスは宣伝されたプレフィックスとクライアントのネットワークインターフェイスの MAC に由来することになります。そうすると IPv6 アドレスから簡単にコンピューターの MAC アドレスを割り出せてしまうためセキュリティ上の懸念になりかねません。この問題に取り組むために IPv6 Privacy Extensions (RFC 4941) が開発されました。プライバシー拡張を有効にすると、カーネルは自動設定された元のアドレスからわからなくした一時アドレスを生成します。リモートサーバーに接続するときはプライベートアドレスが使用されるためオリジナルのアドレスは隠匿されます。プライバシー拡張を有効にするには以下の手順に従って下さい:
以下の行を /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_tempaddr
や default.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 を有効にする を見て下さい。
固定アドレス
固定アドレスを使うことによって場合によりセキュリティが向上することがあります。例えば、あなたのローカルなルーターが近隣探索や 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'
IPv6 と PPPoE
PPPoE の標準ツールである pppd
は PPPoE における IPv6 をサポートしています (あなたの ISP とモデムがサポートしている場合)。以下を /etc/ppp/pppoe.conf
に追加してください:
+ipv6
PPPoE に netctl を使っている場合、netctl の設定に以下を追加してください:
PPPoEIP6=yes
プレフィックス委譲 (DHCPv6-PD)
プレフィックス委譲は多くの ISP で IPv6 を展開するのに使われている技術です。ネットワークプレフィックスをユーザーサイト (ローカルネットワーク) に割り当てる手法になります。ルーターを設定することでネットワークプレフィックスを様々なサブネットワークに割り当てるができます。ISP は DHCPv6 を使ってネットワークプレフィックスの手綱を握り (大抵は /56
か /64
)、dhcp クライアントがプレフィックスをローカルネットワークに割り当てます。インターフェイスが2つのシンプルなゲートウェイの場合、WAN (もしくは ppp などの擬似インターフェイス) に接続されたインターフェイスから取得したアドレスから、ローカルネットワークに接続されたインターフェイスに IPv6 プレフィックスが割り当てられます。
dibbler を使う
Dibbler はポータブルな DHCPv6 クライアントであり、プレフィックス委譲に使うことができます。AUR の dibblerAUR でインストール可能です。
dibbler
を使用する場合、/etc/dibbler/client.conf
を編集して下さい:
log-mode short log-level 7 # use the interface connected to your WAN iface "WAN" { ia pd }
dhcpcd を使う
Dhcpcd は IPv4 の dhcp サポートの他に、DHCPv6 クライアントのほぼ完全な実装も備えており、DHCPv6-PD も含まれています。dhcpcd
を使用する場合 /etc/dhcpcd.conf
を編集して下さい。IPv4 で既に dhcpcd を使っている場合は既存の設定を上書きしてください。
duid noipv6rs waitip 6 # Uncomment this line if you are running dhcpcd for IPv6 only. #ipv6only # use the interface connected to WAN interface WAN ipv6rs iaid 1 # use the interface connected to your LAN ia_pd 1 LAN #ia_pd 1/::/64 LAN/0/64
この設定は WAN インターフェイス (WAN
) からプレフィックスを要求して内部インターフェイス (LAN
) に委譲します。/64
が発行される場合、コメントアウトされている ia_pd instruction
を使う必要があります。また、WAN インターフェイス (WAN
) 以外の全てのインターフェイスでルーター要請は無効になります。
WIDE-DHCPv6 を使う
WIDE-DHCPv6 は Dynamic Host Configuration Protocol for IPv6 (DHCPv6) のオープンソース実装で、KAME プロジェクトによって開発されました。AUR の wide-dhcpv6AUR からインストール可能です。
wide-dhcpv6
を使用する場合 /etc/wide-dhcpv6/dhcp6c.conf
を編集して下さい:
# use the interface connected to your WAN interface WAN { send ia-pd 0; }; id-assoc pd 0 { # use the interface connected to your LAN prefix-interface LAN { sla-id 1; sla-len 8; }; };
wide-dhcpv6 クライアントを起動・有効化するには以下のコマンドを使います。WAN
は WAN に接続しているインターフェイスに置き換えてください:
# systemctl enable/start dhcp6c@WAN.service
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 の無効化
機能を無効にする
カーネル行に 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 は (無害ですが) IPv6 のルーター要請を送信し続けます。これを無効にするには、dhcpcd.conf (5)
man ページに書かれているように、以下を /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
ドロップインスニペットが作成されデフォルトの ntpd.service
の代わりに実行されます。-4
フラグは ntp デーモンによって IPv6 が使われるのを防ぎます。以下をドロップインスニペットに記述してください:
[Service] ExecStart= ExecStart=/usr/bin/ntpd -4 -g -u ntp:ntp
最初に ExecStart
を消去して、次に -4
フラグを使って置き換えます。
参照
- IPv6 - kernel.org ドキュメント
- IPv6 temporary addresses - a summary about temporary addresses and privacy extensions
- IPv6 prefixes - a summary of prefix types
- net.ipv6 options - カーネルパラメータのドキュメント