ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 ネットワークの構成と管理 Oracle Solaris 11.1 Information Library (日本語) |
近傍検索と ARP および関連する IPv4 プロトコルとの比較
このセクションでは、Oracle Solaris で IPv6 が有効なファイル、コマンド、およびデーモンについて説明します。
このセクションでは、IPv6 実装の一部である構成ファイルについて説明します。
/etc/inet/ndpd.conf ファイルは、 近傍検索デーモン in.ndpd が使用するオプションを構成するために使用されます。ルーターの場合、ndpd.conf は、主にサイト接頭辞をリンクに通知されるように構成するときに使用します。ホストの場合、ndpd.conf は、アドレスの自動構成を無効にしたり、一時アドレスを構成したりするときに使用します。
次の表に、ndpd.conf ファイルで使用されるキーワードを示します。
表 8-1 /etc/inet/ndpd.conf キーワード
|
ndpd.conf ファイルでは、この表にあるキーワードといっしょに、いくつかのルーター設定変数を使用します。これらの変数の詳細については、RFC 2461, Neighbor Discovery for IP Version 6 (IPv6) を参照してください。
次の表に、インタフェースを構成するための変数と、その簡単な説明を示します。
表 8-2 /etc/inet/ndpd.conf インタフェース構成変数
|
次の表に、IPv6 接頭辞を構成するときに使用する変数を示します。
表 8-3 /etc/inet/ndpd.conf 接頭辞構成変数
|
例 8-1 /etc/inet/ndpd.conf ファイル
次に、ndpd.conf ファイルでキーワードや構成変数を使用する例を示します。変数を有効にするには、コメント (#) を削除します。
# ifdefault [variable-value ]* # prefixdefault [variable-value ]* # if ifname [variable-value ]* # prefix prefix/length ifname # # Per interface configuration variables # #DupAddrDetectTransmits #AdvSendAdvertisements #MaxRtrAdvInterval #MinRtrAdvInterval #AdvManagedFlag #AdvOtherConfigFlag #AdvLinkMTU #AdvReachableTime #AdvRetransTimer #AdvCurHopLimit #AdvDefaultLifetime # # Per Prefix: AdvPrefixList configuration variables # # #AdvValidLifetime #AdvOnLinkFlag #AdvPreferredLifetime #AdvAutonomousFlag #AdvValidExpiration #AdvPreferredExpiration ifdefault AdvReachableTime 30000 AdvRetransTimer 2000 prefixdefault AdvValidLifetime 240m AdvPreferredLifetime 120m if qe0 AdvSendAdvertisements 1 prefix 2:0:0:56::/64 qe0 prefix fec0:0:0:56::/64 qe0 if qe1 AdvSendAdvertisements 1 prefix 2:0:0:55::/64 qe1 prefix fec0:0:0:56::/64 qe1 if hme1 AdvSendAdvertisements 1 prefix 2002:8192:56bb:1::/64 qfe0 if hme1 AdvSendAdvertisements 1 prefix 2002:8192:56bb:2::/64 hme1
/etc/inet/ipaddrsel.conf ファイルには、IPv6 デフォルトアドレス選択ポリシーテーブルが含まれます。Oracle Solaris をインストールしたときに IPv6 を有効にした場合、このファイルには、表 8-4 に示す内容が含まれます。
/etc/inet/ipaddrsel.conf ファイルの内容は編集できます。しかし、このファイルを変更することは極力避けるべきです。どうしても変更が必要な場合、手順については、「IPv6 アドレス選択ポリシーテーブルを管理する方法」を参照してください。ippaddrsel.conf の詳細については、「IPv6 アドレス選択ポリシーテーブルを変更する理由」と ipaddrsel.conf(4) のマニュアルページを参照してください。
このセクションでは、Oracle Solaris IPv6 実装で追加されたコマンドについて説明します。また、IPv6 をサポートするために行われた既存のコマンドへの変更についても説明します。
ipaddrsel コマンドを使用すると、IPv6 デフォルトアドレス選択ポリシーテーブルを変更できます。
Oracle Solaris カーネルは IPv6 デフォルトアドレス選択ポリシーテーブルを使用して、IPv6 パケットヘッダーに対して、宛先アドレス順序付けやソースアドレス選択を実行します。/etc/inet/ipaddrsel.conf ファイルには、このポリシーテーブルが含まれます。
次の表に、このポリシーテーブルのデフォルトアドレス書式とその優先度のリストを示します。IPv6 アドレス選択に関する技術的な詳細については、inet6(7P) のマニュアルページを参照してください。
表 8-4 IPv6 アドレス選択ポリシーテーブル
|
この表では、IPv6 接頭辞 (::1/128 と ::/0) は 6to4 アドレス (2002::/16) と IPv4 アドレス (::/96 と ::ffff:0:0/96) よりも優先されます。したがって、カーネルは、別の IPv6 宛先に向かうパケットに対して、インタフェースのグローバル IPv6 アドレスをデフォルトで選択します。インタフェースの IPv4 アドレスの優先度は、特に IPv6 宛先に向かうパケットに対しては低くなります。選択した IPv6 ソースアドレスを考えて、カーネルは宛先アドレスにも IPv6 書式を使用します。
ほとんどの場合、IPv6 デフォルトアドレス選択ポリシーテーブルを変更する必要はありません。どうしてもポリシーテーブルを管理する必要がある場合は、 ipaddrsel コマンドを使用します。
次のような場合、ポリシーテーブルの変更をお勧めします。
システムが 6to4 トンネル用のインタフェースを持っている場合、6to4 アドレスにより高いアドレスに変更できます。
特定の宛先アドレスと通信するときだけ特定のソースアドレスを使用したい場合、これらのアドレスをポリシーテーブルに追加します。そのあと、ipadm を使用して、これらのアドレスが優先されるようにフラグを立てることができます。ipadm コマンドの詳細は、ipadm(1M) のマニュアルページを参照してください。
IPv4 アドレスを IPv6 アドレスよりも優先させたい場合、::ffff:0:0/96 の優先度をより大きな値に変更します。
旧式のアドレスにより高い優先度を割り当てる必要がある場合は、旧式のアドレスをポリシーテーブルに追加します。たとえば、IPv6 内でサイトのローカルアドレスが旧式であると仮定します。これらのアドレスには、fec0::/10 という接頭辞があります。この場合、ポリシーテーブルを変更すると、サイトのローカルアドレスにより高いポリシーを与えることができます。
ipaddrsel コマンドの詳細については、ipaddrsel(1M) のマニュアルページを参照してください。
「6to4 トンネリング」を使用すると、孤立した 6to4 サイト間で通信できます。しかし、6to4 以外のネイティブ IPv6 サイトにパケットを転送する場合は、6to4 ルーターは 6to4 リレールーターとのトンネルを確立する必要があります。このトンネルが確立されると、「6to4 リレールーター」によって 6to4 パケットが IPv6 ネットワークに転送され、最終的にネイティブ IPv6 サイトに送信されます。6to4 有効化サイトがネイティブな IPv6 サイトとデータを交換する必要がある場合、6to4relay コマンドを使用して、適切なトンネルを有効にします。
リレールーターの使用は安全とは言えないため、Oracle Solaris のデフォルト設定ではリレールーターとの間のトンネリングは無効になっています。このシナリオを実践に移す場合は、6to4 リレールーターとの間のトンネル構築に伴って発生する問題点をあらかじめ慎重に検討してください。6to4 リレールーターの詳細については、「6to4 リレールーターとの間のトンネルについての考慮事項」を参照してください。6to4 リレールーターのサポートを有効にする場合、その関連手順については、「IP トンネルを作成および構成する方法」を参照してください。
6to4relay -e [-a IPv4-address] -d -h
6to4 ルーターとエニーキャスト 6to4 リレールーター間のトンネルサポートを有効にします。このオプションを指定すると、トンネルのエンドポイントアドレスが 192.88.99.1 (6to4 リレールーターのエニーキャストグループのデフォルトアドレス) に設定されます。
6to4 ルーターと指定された IPv4-address の 6to4 リレールーター間にトンネルのサポートを有効にします。
6to4 リレールーターとの間のトンネリングのサポートを無効にします。これは、Oracle Solaris のデフォルトの設定です。
6to4relay のヘルプを表示します。
詳細は、6to4relay(1M) のマニュアルページを参照してください。
例 8-2 6to4 リレールーターサポートのデフォルトのステータスの表示
引数を指定せずに 6to4relay コマンドを実行すると、6to4 リレールーターサポートの現在のステータスが表示されます。次の例に、Oracle Solaris における IPv6 実装のデフォルトを示します。
# /usr/sbin/6to4relay 6to4relay:6to4 Relay Router communication support is disabled
例 8-3 6to4 リレールーターサポートを有効にしたステータスの表示
リレールーターサポートが有効に設定されている場合には、6to4relay を実行すると次のように表示されます。
# /usr/sbin/6to4relay 6to4relay:6to4 Relay Router communication support is enabled IPv4 destination address of Relay Router=192.88.99.1
例 8-4 6to4 リレールーターを指定したステータスの表示
6to4relay コマンドに -a オプションと IPv4 アドレスを指定した場合、192.88.99.1 ではなく、- a オプションに指定した IPv4 アドレスが表示されます。
6to4relay は、-d、 -e、および -a IPv4 address オプションが成功したかどうかを報告しません。しかし、これらのオプションの実行時に発生した可能性のあるエラーは表示します。
netstat コマンドは、IPv4 ネットワークと IPv6 ネットワークの両方のステータスを表示します。 表示するプロトコル情報を選択するには、/etc/default/inet_type ファイルに DEFAULT_IP 値を設定するか、-f コマンド行オプションを使用します。DEFAULT_IP のパラメータ設定では、netstat に IPv4 情報だけが表示されていることを確認できます。この設定は、-f オプションでオーバーライドできます。inet_type ファイルの詳細については、inet_type(4) のマニュアルページを参照してください。
netstat コマンドの -p オプションは、net-to-media テーブルを表示します。これは、 IPv4 の場合は ARP テーブルであり、IPv6 の場合は近傍キャッシュです。詳細は、netstat(1M) のマニュアルページを参照してください。このコマンドを使用する手順については、「ソケットのステータスを表示する方法」を参照してください。
snoop コマンドは、IPv4 パケットと IPv6 パケットの両方を取り込むことができます。IPv6 ヘッダー、IPv6 拡張ヘッダー、ICMPv6 ヘッダー、近傍検索プロトコルデータを表示できます。デフォルトで、snoop コマンドは、IPv4 パケットと IPv6 パケットの両方を表示します。ip または ip6 のプロトコルキーワードを指定した場合、snoop コマンドは IPv4 パケットまたは IPv6 パケットだけを表示します。IPv6 フィルタオプションでは、すべてのパケットをフィルタの対象にでき (IPv4 と IPv6 の両方)、IPv6 パケットだけが表示されます。詳細は、snoop(1M) のマニュアルページを参照してください。snoop コマンドを使用する手順については、「IPv6 ネットワークトラフィックを監視する方法」を参照してください。
route コマンドは IPv4 ルートと IPv6 ルートの両方で動作します。デフォルトでは、IPv4 ルートで動作します。route コマンドのすぐあとに -inet6 コマンド行オプションを指定した場合、route コマンドは IPv6 ルート上で動作します。詳細は、route(1M) のマニュアルページを参照してください。
ping コマンドは、ターゲットホストを検証するのに、IPv4 プロトコルと IPv6 プロトコルの両方で使用できます。プロトコル選択は、指定のターゲットホストのネームサーバーが戻すアドレスに依存します。デフォルトでネームサーバーによってターゲットホストの IPv6 アドレスが返されると、ping コマンドは IPv6 プロトコルを使用します。サーバーが IPv4 アドレスだけを戻すと、ping コマンドは IPv4 プロトコルを使用します。-A コマンド行オプションで使用するプロトコルを指定すれば、この動作をオーバーライドできます。
詳細については、ping(1M) のマニュアルページを参照してください。ping を使用する手順については、「ping コマンドによるリモートホストの検証」を参照してください。
traceroute コマンドは、指定したホストへの IPv4 ルートと IPv6 ルートの両方で使用できます。使用するプロトコルの選択について、traceroute では、ping と同じアルゴリズムを使用します。選択をオーバーライドするには、-A コマンド行オプションを使用します。マルチホームホストのすべてのアドレスまでの各ルートは -a コマンド行オプションでトレースできます。
詳細については、traceroute(1M) のマニュアルページを参照してください。traceroute を使用する手順については、「traceroute コマンドによるルーティング情報の表示」を参照してください。
このセクションでは、IPv6 関連のデーモンについて説明します。
in.ndpd デーモンは、IPv6 近傍検索プロトコルとルーター発見を実装します。このデーモンは、IPv6 のアドレス自動構成も実装します。次に、in.ndpd でサポートされるオプションを示します。
ステートレスおよびステートフルアドレス自動構成をオフに設定します。
デバッグを有効にします。
デフォルトの /etc/inet/ndpd.conf ファイルではなく、構成を読み取るファイルを指定します。
すべての発信および着信パケットのパケット追跡をオンに設定します。
in.ndpd デーモンは、/etc/inet/ndpd.conf 構成ファイルに設定されたパラメータと、/var/inet/ndpd_state.interface 起動ファイルの任意の適用可能なパラメータによって制御されます。
/etc/inet/ndpd.conf が存在すると構文解析され、ノードをルーターとして使用するための構成が行われます。表 8-1 に、このファイルに現れる可能性がある有効なキーワードのリストを示します。ホストをブートしても、ルーターがすぐには使用できない場合があります。ルーターによって通知されたパケットがドロップしたり、また、通知されたパケットがホストに届かない場合もあります。
/var/inet/ndpd_state.interface ファイルは状態ファイルです。このファイルはノードごとに定期的に更新されます。ノードに障害が発生し再起動した場合、ルーターがなくてもノードはインタフェースを構成できます。このファイルにはインタフェースアドレス、最終更新時間、有効期間などの情報が含まれています。また、先のルーター広告で得られた情報も含まれています。
構成変数とそれに指定できる値のリストについては、in.ndpd(1M) のマニュアルページと ndpd.conf(4) のマニュアルページを参照してください。
in.ripngd デーモンは、RIPng (Routing Information Protocol next-generation for IPv6 routers) を実装します。RIPng は IPv6 における RIP 相当機能を定義します。routeadm コマンドで IPv6 ルーターを構成し、IPv6 ルーティングを有効にした場合、in.ripngd デーモンはそのルーターに RIPng を実装します。
次に、RIPng のサポートされるオプションを示します。
n は RIPng パケットの送受信に使用する UDP ポート番号を指定します。
ポイズンリバースの使用を打ち切ります。
ルーティング情報を打ち切ります。
デーモンがルーターとして動作しているかどうかのルーティング情報の提供を強制します。
送受信されたすべてのパケットを標準出力に出力します。
ルーティングテーブルへのすべての変更 (タイムスタンプを含む) を標準出力に出力します。
IPv6 が有効なサーバーアプリケーションは、IPv4 要求と IPv6 要求の両方、あるいは、IPv6 要求だけを処理できます。IPv6 が有効なサーバーは常に、IPv6 ソケット経由の要求を処理します。さらに、IPv6 が有効なサーバーは、対応するクライアントで使用しているプロトコルと同じプロトコルを使用します。
IPv6 用にサービスを追加または変更するには、Service Management Facility (SMF) から入手できるコマンドを使用します。
SMF コマンドについては、『Oracle Solaris 11.1 でのサービスと障害の管理』の「SMF コマンド行管理ユーティリティー」を参照してください。
SMF を使用して、SCTP 経由で動作する IPv4 サービスマニフェストを構成するタスクの例については、 「SCTP プロトコルを使用するサービスを追加する方法」を参照してください。
IPv6 サービスを構成するには、そのサービスの inetadm プロファイルにある proto フィールド値に、適切な値のリストが含まれていることを確認する必要があります。
IPv4 要求と IPv6 要求の両方を処理するサービスの場合、proto 値として、tcp6、udp6、または sctp を選択します。proto 値として、tcp6、udp6、または sctp6 のいずれかを選択した場合、inetd は IPv6 が有効なサーバーに IPv6 ソケットを渡します。IPv4 クライアントが要求を持っている場合に備えて、IPv6 が有効なサーバーは IPv4 マップ済みアドレスを含んでいます。
IPv6 要求だけを処理するサービスの場合、proto 値として、tcp6only または tcp6only を選択します。これらの値を proto に選択した場合、 inetd は IPv6 が有効なサーバーに IPv6 ソケットを渡します。
Oracle Solaris コマンドを別の実装で置き換えた場合、そのサービスの実装が IPv6 をサポートすることを確認する必要があります。その実装が IPv6 をサポートしない場合、proto 値と して、tcp、udp、または sctp のいずれかを指定する必要があります。
次に、IPv4 とIPv6 の両方をサポートし、SCTP で動作する echo サービスマニフェストに inetadm を実行した結果のプロファイルを示します。
# inetadm -l svc:/network/echo:sctp_stream SCOPE NAME=VALUE name="echo" endpoint_type="stream" proto="sctp6" isrpc=FALSE wait=FALSE exec="/usr/lib/inet/in.echod -s" user="root" default bind_addr="" default bind_fail_max=-1 default bind_fail_interval=-1 default max_con_rate=-1 default max_copies=-1 default con_rate_offline=-1 default failrate_cnt=40 default failrate_interval=60 default inherit_env=TRUE default tcp_trace=FALSE default tcp_wrappers=FALSE
proto フィールドの値を変更するには、次の構文を使用します。
# inetadm -m FMRI proto="transport-protocols"
Oracle Solaris ソフトウェアが提供されるサーバーはすべて、proto 値として、tcp6、udp6、または sctp6 のいずれかを指定するプロファイルエントリを 1 つだけ必要とします。しかし、リモートシェルサーバー (shell) とリモート実行サーバー (exec) は、現在、単一のサービスインスタンスで設定されており、proto 値として、tcp と tcp6only の両方を含める必要があります。たとえば、shell の proto 値を設定するには、次のコマンドを発行します。
# inetadm -m network/shell:default proto="tcp,tcp6only"
ソケットを使用する IPv6 対応サーバーの作成方法の詳細については、『Programming Interfaces Guide』のソケット API の IPv6 拡張機能を参照してください。
サービスを IPv6 用に追加または変更するときには、次のことに注意しておく必要があります。
IPv4 接続と IPv6 接続の両方を有効にするには、proto 値として、 tcp6、sctp6、または udp6のいずれかを指定する必要があります。proto 値として、 tcp、 sctp、または udp を指定した場合、そのサービスは IPv4 だけを使用します。
inetd に対して、一対多スタイルの SCTP ソケットを使用するサービスインスタンスも追加できますが、推奨しません。inetd は、一対多スタイルの SCTP ソケットでは機能しません。
wait-status プロパティーまたは exec プロパティーが異なるため、サービスが 2 つのエントリを必要とする場合、オリジナルのサービスから 2 つのインスタンスまたはサービスを作成する必要があります。