web-dev-qa-db-ja.com

IPv6は、ルーティングボックスにpingを実行した後にのみ機能します

状況:

私たちのネットワークにはipv4のみのルーターがあり、すべてのコンピューターがそれに接続されています(wifiまたはケーブル)。 ipv4とipv6を備えたサーバーもこのルーターに接続されています。サーバーは、6to4トンネリングとradvd用のトンネルブローカーで構成されています。ネットワーク内のクライアントには正しいプレフィックスがあり、ipv6を介して相互にpingを実行できます。ただし、最初にサーバー(トンネルのあるサーバー)にpingを実行するまで、インターネットにpingを実行することはできません。どこかでicmpの問題であることがわかりましたが、解決策が見つかりませんでした。

ルーターがipv4のみであるという問題はありますか?

  • サーバーとクライアントはLinuxを実行します
  • ルーターはipv6サポートなしでdd-wrtを実行します:(

Pingを試してください:

 standa @ Standa-laptop:〜$ ping6 ipv6.google.com 
 PING ipv6.google.com(2a00:1450:8007 :: 69)56データバイト
 ^ C 
 --- ipv6.google.comping統計--- 
 29パケット送信、0受信、100%パケット損失、時間28223ms 
 
 standa @ Standa -laptop:〜$ ping6 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478 
 PING 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478(2001:470:XXXX:XXXX :21c:c0ff:fe2b:6478)56データバイト
 2001年から64バイト:470:XXXX:XXXX:21c:c0ff:fe2b:6478:icmp_seq = 1 ttl = 64 time = 3.55ms 
 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478から64バイト:icmp_seq = 2 ttl = 64 time = 0.311 ms 
 2001:470:XXXX:XXXX:21c:c0ffから64バイト: fe2b:6478:icmp_seq = 3 ttl = 64 time = 0.269 ms 
 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478から64バイト:icmp_seq = 4 ttl = 64 time = 0.292 ms 
 ^ C 
 --- 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478ping統計--- 
 4パケット送信、4受信、0%パケット損失、時間3000ms 
 rtt min/avg/max/mdev = 0.269/1.107/3.559/1.4 15ミリ秒
 standa @ Standa-laptop:〜$ ping6 ipv6.google.com 
 PING ipv6.google.com(2a00:1450:8007 :: 69)56データバイト
 2a00:1450:8007 :: 69から64バイト:icmp_seq = 1 ttl = 57時間= 20.7ms 
 2a00:1450:8007 :: 69から64バイト:icmp_seq = 2 ttl = 57時間= 20.2ms 
 2a00:1450:8007 :: 69から64バイト:icmp_seq = 3 ttl = 57 time = 23.4 ms 
 ^ C 
 --- ipv6.google.comping統計- -
 3パケット送信、3受信、0%パケット損失、時間2001ms 
 rtt min/avg/max/mdev = 20.267/21.479/23.413/1.392 ms 

更新:Radvd構成

 interface eth0 {
 AdvSendAdvert on; 
 MinRtrAdvInterval 3; 
 MaxRtrAdvInterval 10; 
 AdvLinkMTU 1280; 
プレフィックス2001:470:1f0a:1511:1 ::/64 {
 AdvOnLink on; 
 AdvAutonomous on; 
 AdvRouterAddr on; 
}; 
}; 

更新2:接続なし

 ip -6 neigh 
 fe80 :: 21c:c0ff:fe2b:6478 dev wlan1 lladdr 00:1c:c0:2b:64:78 router REACHABLE 

接続あり(ping後)

 fe80 :: 21c:c0ff:fe2b:6478 dev wlan1 lladdr 00:1c:c0:2b:64:78 router STALE 
 2001:470:1f0a:1511 :: 1 dev wlan1 lladdr 00 :1c:c0:2b:64:78ルーターREACHABLE 

Ping中に隣人の勧誘が発生しました:

 fe80 :: 21c:c0ff:fe2b:6478 2001:470:1f0a:1511:21c:bfff:fe60:b389ICMPv6近隣要請
 2001:470:1f0a:1511:21c:bfff: fe60:b389 fe80 :: 21c:c0ff:fe2b:6478ICMPv6近隣アドバタイズメント
7
Ficik

クライアントのプレフィックスは手動で割り当てられていますか?通常、近隣探索プロトコルを介してルーターを自動的に検出する必要があります(ルーターがアドバタイズメントを送信し、プレフィックスを自動的に割り当てる間)が、その手順が欠落している可能性があります。

さらに、ルーターアドバタイズメントでは、ルーターアドバタイズメントのICMPヘッダーにオプションとしてリンク層アドレスを含める必要があります。このフィールドが欠落している場合、クライアントはルーターにデータを送信する方法を知りません。これが当てはまるようです。クライアントは、近隣探索メッセージを送信し、ルーターから近隣アドバタイズメントを受信するまで(ICMPメッセージセットのルーターフラグを使用して)、ルーターに到達する方法を知りません。

ルーターアドバタイズメントにソースリンク層アドレスを含めるには、radvd.confに以下を追加します

AdvSourceLLAddress on;
2
Jeff

クライアントがサーバーのipv6アドレスをゲートウェイ/ルーターとして使用していることを確認します。 Jeffが指摘したように、これは自動的に割り当てられるか(radvdの構成を確認してください)、手動で割り当てられる場合があります。その場合は、クライアントの構成を確認してください。

0
Peter

Pingの前後でクライアントのip -6 addr; ip -6 routeを比較しても問題はありませんが、radvd.confは問題ないと思います。トンネルボックスまたはルーターで何らかの接続追跡が有効になっていますか?トンネルボックスからのping6で十分ですか?ステートフルファイアウォールは、pingが成功した後にのみパケットが返される理由を説明できます。

0
Tobu