検索
連載

IPv6アドレスの自動生成による不具合解消法UNIX処方箋

「事件は枯れたシステムが稼働する現場で起こってるんだ」と現場ですぐに役立つ知識を欲するあなたへ贈る珠玉のTips集。今回は、IPv6アドレスの自動生成による不具合解消法だ。

Share
Tweet
LINE
Hatena

社内で試験的にIPv6ネットワークを構築しています。IPv6対応ルーターでネットワーク1(1:1:1:1::/64)とネットワーク2(2:2:2:2::/64)をルーティングし、各ネットワーク上にSolaris 8のホストを数台配置しています。ルーターは、ネットワーク1とネットワーク2にRA*を配信し、各ホストはRAを受け取って動的にIPv6アドレスを生成しています。最近、ネットワーク1のホストを1台だけネットワーク2へ移動しました(図1)。ネットワーク2のRAを受け取って自動的にIPv6アドレスを生成し、ネットワーク2上のホストと通信できるようになったのですが、ネットワーク1のホストとは通信ができません。何が原因なのでしょうか?

図1
図1 試験的に構築したIPv6ネットワーク

 IPv6では、1つのネットワークインタフェースに対して複数のIPアドレスを割り当てることが可能です。ここでは、複数のIPアドレスを自動生成してしまったことが、通信に失敗した原因だと思われます。

RAによって複数のIPアドレスを自動生成

 質問にあるネットワーク初めからネットワーク2に移動したホスト(以下ホストA)は、ネットワーク1に接続していた時点でRAを受信してネットワーク1のIPアドレスを生成しています。さらに、ネットワーク2に移ってからもRAを受信してネットワーク2のIPアドレスを生成したため、1つのネットワークインタフェースにネットワーク1とネットワーク2のIPアドレスを持っているわけです(実行例1)

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

実行例1 ネットワーク2のRAを受信したときのネットワーク情報

 RAで動的にIPアドレスを生成する場合、そのホストのデフォルトゲートウェイはRAを配信したルーターになります。通常、ネットワーク2のホストは、ネットワーク1のホスト宛てのパケットをデフォルトゲートウェイであるルーターに送ります。しかしホストAは、ネットワーク1のIPアドレスを持っているのでネットワーク1をローカルネットワークと認識し、ネットワーク1宛てのパケットをルーターへ送りません。

 ローカルネットワーク上にNS*を送信して、パケットのあて先であるネットワーク1のホストのMACアドレスを探し出そうとします。ローカルネットワーク上にネットワーク1のホストは存在しないため、パケットはあて先に到達せず、通信は失敗します。これが、ホストAがネットワーク1のホストと通信できない理由です。

 ホストAがネットワーク1のホストと通信するためには、ホストA上にあるネットワーク1のIPアドレスを削除します。この結果、ネットワーク1をローカルネットワークと認識しなくなるため、ネットワーク1宛てのパケットをルーターに送るようになります。

IPアドレスの削除

 ネットワーク1のIPアドレスを削除する手順は以下のとおりです。

 まず、RAで取得したIPv6アドレス情報をすべて削除します。RAによって生成されたIPv6アドレス、更新時間、有効期間の情報は、/var/inet/ndpd_state.<interface>ファイルに保存されているので、これを削除(あるいはファイル名を変更)します(実行例2)。削除後、in.ndpdデーモンを再起動すると、RAによって生成されたIPv6アドレスは初期化されます(実行例3)

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

実行例2 /var/inet/ndpd_state.<interface>ファイルの削除

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

実行例3 in.ndpdデーモンの再起動

 これによって、ネットワーク1とネットワーク2のIPアドレスは両方とも削除されますが、ネットワーク2上では一定期間でRAが配信されています。ホストAがそのRAを受信すると、ネットワーク2のIPアドレスは再度生成されるので、最終的にはネットワーク1のアドレスだけが削除されることになります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

このページで出てきた専門用語

RA

Router Advertisementの略。ネットワークのプレフィックス情報を通知するために、主にルーターから配信されるメッセージ。これを受け取ったホストは、プレフィックス情報と自身のMACアドレスを組み合わせて、IPアドレスを自動生成できる。

NS

Neighbor Solicitationの略。MACアドレスの問い合わせを行うメッセージ。IPv4でのARPの役割に相当する。


関連キーワード

IPv6 | 自動生成 | 不具合 | Solaris


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る