IPv6トラブルシューティング:一般的な接続問題の修正
このステップバイステップガイドでIPv6接続の問題を診断および修正します。「アドレスなし」から「動作するが遅い」まで、実際の問題を解決します。
IPv6が壊れると、症状はさまざまです:アドレスが割り当てられていない、一部のサイトへの接続のみ、またはすべてが機能するが遅いと感じる。このガイドは、最も迅速なチェックから深いネットワーク分析まで、体系的な診断を案内します。
TL;DR - 要点まとめ
重要ポイント:
- 3つの質問から始める:アドレスはあるか?IPで到達できるか?ローカルで到達できるか?
- グローバルアドレスがない場合(リンクローカルのみ)はルーターアドバタイズメントを確認
- ICMPv6はブロックしてはいけない — IPv6動作に必須
- パケットが止まる場所を見つけるにはtraceroute6を使用
ジャンプ: ローカル設定 | よくある問題 | ISPに連絡するとき
3つの質問から始める#
コマンドを実行する前に、問題を絞り込みます:
- **IPv6アドレスがありますか?**そうでない場合、問題は割り当てレベル(DHCP、SLAAC、またはルーターアドバタイズメント)にあります。
- **アドレスでIPv6サイトに到達できますが、名前では到達できませんか?**DNSが犯人です。
- **リンクローカルアドレスには到達できますが、それ以外には到達できませんか?**ルーティングまたはファイアウォールの問題です。
これら3つの質問により、トラブルシューティングパスの80%が排除されます。
ローカル設定を確認#
デバイスにIPv6アドレスがあり、ゲートウェイを知っていることを確認することから始めます。
Linux:
ip -6 addr show
ip -6 route showmacOS:
ifconfig
netstat -nr -f inet6Windows:
ipconfig
netsh interface ipv6 show routeグローバルユニキャストアドレス(2または3で始まる)を探します。リンクローカルアドレス(fe80::で始まる)も表示されるはずです。リンクローカルのみがある場合、ホストは適切なIPv6プレフィックスを受信していません。
ルーターアドバタイズメントを確認#
ほとんどのIPv6ネットワークはSLAAC(ステートレスアドレス自動設定)を使用し、ルーターがその存在とネットワークプレフィックスをブロードキャストします。デバイスにグローバルアドレスがない場合、ルーターアドバタイズメントが到達していない可能性があります。
RA受信を確認(Linux):
sudo rdisc6 eth0RA受信を確認(macOS/Windows): WiresharkまたはtcpdumpをICMPv6タイプ134(ルーターアドバタイズメント)パケットをキャプチャするために使用:
sudo tcpdump -i en0 'icmp6 and ip6[40] == 134'30秒後にRAが表示されない場合、ルーターがアドバタイズしていないか、何かがそれらをフィルタリングしています。最初にルーターのIPv6設定を確認してください。
リンクローカル接続をテスト#
リンクローカルアドレスは、ルーター設定なしで機能します。これらが失敗した場合、レイヤー2の問題があります。
ゲートウェイのリンクローカルアドレスを見つけます:
# Linux
ip -6 route show default
# macOS/Windows
ルーティングテーブルに表示されているゲートウェイを使用インターフェイスを指定してpingします:
# Linux
ping6 -c 4 fe80::1%eth0
# macOS
ping6 -c 4 fe80::1%en0
# Windows
ping -6 fe80::1%12fe80::1を実際のゲートウェイアドレスに、eth0/en0/12をインターフェイス名/番号に置き換えます。これが失敗した場合、ケーブル、スイッチ、WiFi接続を確認してください。
インターネット接続をテスト#
既知の良好なIPv6アドレスを使用して、DNSを完全にバイパスします。
# Cloudflare DNS
ping6 2606:4700:4700::1111
# Google DNS
ping6 2001:4860:4860::8888
# ping6.net
ping6 2a07:8dc0:18:0:78:47ff:fe6e:da5aこれらが機能する場合、IPv6スタックは機能しており、DNSが問題です(先にスキップ)。失敗した場合、問題がローカルかアップストリームかをテストします。
DNS解決を確認#
多くの「IPv6が機能しない」という報告は、実際にはDNSの問題です。デバイスには接続があるかもしれませんが、AAAAレコードを解決できません。
AAAAレコードルックアップをテスト:
# システムリゾルバーを使用
nslookup -type=AAAA google.com
# 特定のDNSサーバーを使用
dig @2001:4860:4860::8888 AAAA google.com
# Windows
nslookup -type=AAAA google.com 2001:4860:4860::8888AAAAクエリが失敗するが、A クエリ(IPv4)が成功する場合、DNSサーバーにIPv6接続がないか、AAAAレコードを処理するように設定されていない可能性があります。Cloudflare(2606:4700:4700::1111)またはGoogle(2001:4860:4860::8888)DNSサーバーに変更してみてください。
DNSサーバーがIPv6経由で到達可能であることを確認:
ping6 2606:4700:4700::1111到達できない場合、IPv6対応DNSサーバーを設定するか、ネットワークがそれへの発信接続をブロックしています。
パスを分析#
一部の宛先にはpingできるが他にはpingできない場合は、tracerouteを使用してパケットが停止する場所を見つけます。
# Linux/macOS
traceroute6 google.com
# Windows
tracert -6 google.com次を探します:
- **ホップ1-2でのタイムアウト:**ローカルネットワークの問題(ゲートウェイ、ファイアウォール)
- **数ホップ後のタイムアウト:**ISPルーティングの問題
- **非対称ルートまたはループ:**BGP設定ミス(ISPに連絡)
Tracerouteツールを使用して、ホップごとのレイテンシを確認し、パケットがドロップされる場所を特定することもできます。
一般的な問題と修正#
IPv6アドレスが割り当てられていない#
症状:fe80::リンクローカルアドレスのみが表示されます。
原因:
- ルーターがRAを送信していない
- DHCPv6サーバーに到達できない
- IPv6用にインターフェイスが無効
修正:
- ルーターがIPv6を有効にしており、プレフィックス委任が設定されていることを確認
- ネットワークインターフェイスを再起動:
sudo ifdown eth0 && sudo ifup eth0(Linux)またはWiFiをオフ/オンに切り替え - SLAACを強制:
sudo dhclient -6 -r && sudo dhclient -6(Linux) - Windowsの場合:
netsh interface ipv6 resetして再起動
リンクローカルのみ(デフォルトルートなし)#
症状:fe80::アドレスがあり、ローカルリンクにpingできますが、インターネットがありません。
原因:
- ルーターがプレフィックス情報なしでRAを送信
- ファイアウォールがICMPv6をブロック
- 静的ルート設定ミス
修正:
- ルーターが/64プレフィックスを委任していることを確認(自身をアドバタイズするだけでなく)
- ICMPv6がブロックされていないことを確認:
sudo ip6tables -L(Linux)またはWindowsファイアウォール設定 - 手動でデフォルトルートを追加(一時的):
sudo ip -6 route add default via fe80::1 dev eth0
アドレスはあるが接続なし#
**症状:**グローバルIPv6アドレスが割り当てられ、ルーティングテーブルが正しく見えますが、何にも到達できません。
原因:
- ISPがトラフィックをブロック
- MTUの問題(パケットフラグメンテーション障害)
- ファイアウォールが確立された接続をドロップ
修正:
- ISPサポートラインでテスト(IPv6をアクティブ化する必要がある可能性があります)
- MTUを下げる:
sudo ip link set eth0 mtu 1280(IPv6最小) - ファイアウォールルールが発信IPv6を許可していることを確認
- IPv6を削除するCGNATの背後にいないことを確認
IPv6がIPv4よりも遅い#
**症状:**サイトは読み込まれますが、IPv4と比較して顕著な遅延があります。
原因:
- トンネルオーバーヘッド(6to4、Teredo、6rd)
- 最適でないルーティング(パケットが長いパスを通る)
- Happy Eyeballsタイムアウトの問題
修正:
- トンネルを使用している場合は、ISPからネイティブIPv6に切り替え
- tracerouteホップを比較:
traceroute google.com対traceroute6 google.com - ネイティブが利用可能な場合はトンネルを無効化:
netsh interface teredo set state disabled(Windows) - IPv6 Pingツールでベースラインレイテンシを測定してテスト
一部のサイトで機能し、他では機能しない#
**症状:**Google、Cloudflareには到達できますが、多くのサイトが失敗します。
原因:
- サイトにIPv6が壊れている(AAAAレコードの設定ミス)
- パスMTU検出の障害
- ファイアウォールが特定のプレフィックスをブロック
修正:
- サイトに実際にIPv6があるかテスト:
dig AAAA example.comまたはDNSルックアップツールを使用 - AAAAレコードが存在するが失敗する場合、サイトのIPv6が壊れています(あなたの責任ではありません)
- IPv4を強制:
/etc/hosts(Linux/macOS)またはC:\Windows\System32\drivers\etc\hosts(Windows)にエントリを追加 - サイトオペレーターに報告(知らない可能性があります)
ISPに連絡するタイミング#
次の場合はISPに電話してください:
- ルーターに「IPv6サポートされていません」または「プレフィックス委任待ち」と表示される
- プレフィックスが割り当てられているがルーティング可能ではない(外部pingでテスト)
- ネットワークを離れた直後にTracerouteが障害を示す
- 上記の修正のいずれも機能せず、設定が正しく見える
電話する前に、次を収集します:
ip addrまたはipconfigからの出力- 割り当てられたIPv6プレフィックス
ping6 2001:4860:4860::8888からの結果- 障害が発生する場所を示すTraceroute出力
これにより、サポートコールの時間が大幅に短縮されます。
関連記事#
- Windows、macOS、Linux、ルーターでIPv6を有効にする方法 - 一般的な問題を回避するためにIPv6を正しく設定する方法を学びます。
- IPv6セキュリティ:脅威、軽減策、ベストプラクティス - IPv6ネットワークが安全に設定され、脆弱性から保護されていることを確認します。
実際に試してみましょう
診断ツールを使用してセットアップを確認:IPv6 Ping、Traceroute、およびMTR。