Solaris のシステム管理 (IP サービス)

第 16 章 IPv6 のファイルおよびコマンド (リファレンス)

Solaris の IPv6 の実装は、主にカーネルレベルとユーザーレベルの両方の TCP/IP スタックへの変更から構成されます。新しい IPv6 モジュールにより、トンネル、ルーター検索、ステートレスアドレス自動設定を使用できます。この章では、IPv6 の Solaris 実装に伴う概念について説明します。

この章では、以下の内容について説明します。

Solaris IPv6 実装の概要

IPv4 から IPv6 への移行の一部として、IPv6 では IPv6 パケットを IPv4 パケット内にカプセル化する方式が指定されます。また、IPv6 では、IPv6 パケット内にカプセル化された IPv6 パケットも指定します。その結果、パケットのカプセル化を行う新しいモジュール tun(7M) が追加されました。このモジュールはトンネルモジュールと呼び、物理的インタフェースと同様に ifconfig ユーティリティで plumb され、設定されます。このモジュールによってトンネルモジュールが IP デバイスと IP モジュール間に配置されます。トンネルデバイスにもシステムインタフェースリストにエントリがあります。

ifconfig(1M) ユーティリティも変更されました。このユーティリティは、IPv6 スタックを作成し、新しいパラメータをサポートします。これらについてはこの章で、あとから説明します。

ルーター検索とステートレスアドレス自動設定を行うため、in.ndpd(1M) デーモンが追加されました。

IPv6 ネットワークインタフェース構成ファイル

IPv4 では起動時に /etc/hostname.interface を使用しましたが、IPv6 でも起動時にファイル /etc/hostname6.interface を使用してネットワークインタフェースを自動的に定義します。このとき、少なくとも /etc/hostname.* ファイルまたは、/etc/hostname6.* ファイルがローカルマシンに存在している必要があります。これらのファイルは、Solaris インストールプログラムで生成されます。ファイル名の interface は、プライマリネットワークインタフェースのデバイス名に置き換えられます。

ファイル名の構文は、次のとおりです。


hostname.interface
hostname6.interface

interface の構文は、次のとおりです。


dev[.Module[.Module ...]]PPA

Dev

ネットワークインタフェースデバイス。デバイスは leqe など物理ネットワークインタフェースか、トンネルなどの論理インタフェース。詳細については、IPv6 の Solaris トンネルインタフェースを参照してください。

Module

結合される際にデバイスにプッシュされるストリームモジュールのリスト 

PPA

物理的な接続ポイント 

構文 [.[.]] も可能です。

有効なファイル名は、次のとおりです。


hostname6.le0
hostname6.ip.tun0
hostname.ip.tun0

IPv6 インタフェース構成ファイルのエントリ

IPv6 におけるインタフェースの自動設定では、その所属するリンク層アドレスに基づいてリンクローカルアドレスをノード側で計算できます。そのため、IPv6 インタフェース構成ファイルにはエントリがないことがあります。その場合、起動スクリプトによってインタフェースが設定されます。ノードは近傍検索デーモン in.ndpd で他のアドレスやプレフィックスの情報を取り出します。インタフェースに静的アドレスが必要な場合、ifconfig ユーティリティのコマンドインタフェースを使用します。その結果、アドレスまたはホスト名が /etc/hostname6.interface (または /etc/hostname.interface) に保存されます。インタフェースが構成されるときに、その内容が ifconfig に渡されます。

この場合、ファイルに含まれるエントリは 1 つだけです。このエントリは、ネットワークインタフェースに関連付けられたホスト名または IP アドレスです。たとえば、ahaggar というマシンの一次ネットワークインタフェースが smc0 であるとします。その /etc/hostname6.* ファイル名は /etc/hostname6.smc0 となります。そのエントリは ahaggar です。

ネットワーキングの起動スクリプトでは、ルーティングデーモンとパケット転送を開始するために、インタフェース数と、/etc/inet/ndpd.conf ファイルの有無を調べます。Solaris IPv6 ルーターの設定方法を参照してください。

ifconfig ユーティリティに対する IPv6 拡張機能

ifconfig ユーティリティにより、IPv6 インタフェースとトンネルモジュールを結合できるようになりました。ifconfig(1M) ユーティリティでは、ioctl の拡張セットで IPv4 ネットワークインタフェースと IPv6 ネットワークインタフェースの両方を設定します。表 16–1 は、このユーティリティに追加されたオプションセットです。このユーティリティによる診断手順については、インタフェースアドレス割り当ての表示方法を参照してください。

表 16–1 新しい ifconfig ユーティリティオプション

オプション 

説明 

index

インタフェースインデックスを設定する 

tsrc/ tdst

トンネルソース / 宛先を設定する 

addif

論理インタフェースの次の候補を作成する 

removeif

指定された IP アドレスの論理インタフェースを削除する 

destination

インタフェースにポイントツーポイント宛先アドレスを設定する 

set

インタフェースにアドレスとネットマスクのどちらか、または両方を設定する 

subnet

インタフェースのサブネットアドレスを設定する 

xmit/ -xmit

インタフェースにおけるパケット伝送を使用可能または使用不能する 

IPv6 設定手順については、IPv6 ノードを有効にするを参照してください。

例 – 新しい ifconfig ユーティリティオプション

次に示す ifconfig コマンドは、まず hme0:3 論理インタフェースを 1234::5678/64 IPv6 アドレスに作成します。次に up オプションでインタフェースを使用可能にし、状態を報告し、インタフェースを使用不可にします。最後に、インタフェースを削除します。


例 16–1 例 – addifremoveif の使用


# ifconfig hme0 inet6 addif 1234::5678/64 up
Created new logical interface hme0:3

# ifconfig hme0:3 inet6
hme0:3: flags=2000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
		inet6 1234::5678/64 

# ifconfig hme0:3 inet6 down

# ifconfig hme0 inet6 removeif 1234::5678

次に示す ifconfig コマンドは、まず物理インタフェース名に関連付けられたデバイスを開きます。次に TCP/IP がデバイスを使用するために必要なストリームを構成し、デバイスの状態を報告し、トンネルのソースアドレスと宛先アドレスを構成します。最後に、構成後のデバイスの最新状態を報告します。


例 16–2 例 – tsrc/tdstindex


# ifconfig ip.tun0 inet6 plumb index 13

# ifconfig ip.tun0 inet6
ip.tun0: flags=2200850<POINTOPOINT,RUNNING,MULTICAST,NONUD,IPv6> mtu 
1480 index 13
		inet tunnel src 0.0.0.0 
		inet6 fe80::/10 --> :: 

# ifconfig ip.tun0 inet6 tsrc 120.46.86.158 tdst 120.46.86.122

# ifconfig ip.tun0 inet6
ip.tun0: flags=2200850<POINTOPOINT,RUNNING,MULTICAST,NONUD,IPv6> mtu 
1480 index 13
		inet tunnel src 120.46.86.158  tunnel dst 120.46.86.122
		inet6 fe80::8192:569e/10 --> fe80::8192:567a

複数のネットワークインタフェースがあるノード

ノードに複数のネットワークインタフェースがある場合、追加インタフェース用に /etc/hostname.interface ファイルを作成する必要があります。

IPv4 の動作

たとえば、図 4–1 に示すマシン timbuktu について考えてみましょう。このシステムには、2 つのネットワークインタフェースがあり、ルーターとして機能します。プライマリネットワークインタフェース le0 は、ネットワーク 192.9.200 に接続されています。システムの IP アドレスは 192.9.200.70、ホスト名は timbuktu です。Solaris インストールプログラムによって、一次ネットワークインタフェースにファイル /etc/hostname.le0 が作成され、ホスト名 timbuktu がファイルに入力されます。

2 番めのネットワークインタフェースは le1 で、192.9.201 に接続されています。このインタフェースは timbuktu に物理的にインストールされていますが、独自の IP アドレスが必要です。そのため、このインタフェースに対して /etc/hostname.le1 ファイルを手動で作成する必要があります。このファイルのエントリはルーター名 timbuktu-201 です。

IPv6 の動作

IPv6 を設定する場合、/etc/hostname6.le0/etc/hostname6.le1 のインタフェースだけが必要です。各インタフェースアドレスは、システムの起動時に自動的に設定されます。

IPv6 デーモン

ここでは、次の IPv6 デーモンについて説明します。

in.ndpd デーモン

このデーモンでは、IPv6 用のルーター発見と自動アドレスの設定が実装されます。表 16–4 は、サポートされているオプションを示します。

表 16–2 in.ndpd デーモンのオプション

オプション 

説明 

-d

すべてのイベントのデバッグをオンにする 

-D

特定のイベントのデバッグをオンにする 

-f

設定を読み出す元のファイル (デフォルトファイルのかわり) 

-I

インタフェースごとに関連情報を印刷する 

-n

ルーター通知をループバックしない 

-r

受信パケットを無視する 

-v

冗長モード (さまざまな種類の診断メッセージを報告する) 

-t

パケット追跡をオンにする 

パラメータは、in.ndpd の動作を制御します。これらのパラメータは /etc/inet/ndpd.conf 構成ファイルと /var/inet/ndpd_stateinterface 起動ファイル (存在する場合) に設定されます。

/etc/inet/ndpd.conf が存在すると構文解析され、ノードをルーターとして使用するための設定が行われます。表 16–3 に、このファイルに出現する可能性がある各種キーワードをまとめます。ホストを起動してもルーターがすぐに利用できなかったり、ルーターが通知したパケットがドロップしてホストに届かないことがあります。/var/inet/ndpd_state.interface ファイルは状態ファイルです。このファイルはノードごとに定期的に更新されます。ノードに障害が発生し再起動した場合、ルーターがなくてもノードはインタフェースを設定できます。このファイルにはインタフェースアドレス、更新時間、有効期間などの情報が保存されています。また、先のルーター通知で得られた情報も保存されています。


注 –

状態ファイルの内容を変更する必要はありません。このファイルは、in.ndpd デーモンが自動的に管理します。


表 16–3 /etc/inet/ndpd.conf キーワード

キーワード 

説明 

ifdefault

すべてのインタフェースのルーターの動作を指定する。次の構文を使用してルーターパラメータと対応する値を設定する  

ifdefault [variable value]

prefixdefault

プレフィックス通知のデフォルトの動作を指定する。次の構文を使用してルーターパラメータと対応する値を設定する 

prefixdefault [variable value]

if

インタフェース別パラメータを設定する。構文は次のとおり 

if interface [variable value]

prefix

インタフェース別プレフィックス情報を通知する。構文は次のとおり 

prefix prefix /length interface [variable value]


注 –

ifdefault/prefixdefault エントリは、構成ファイルの if エントリと prefix エントリの前に置く必要があります。


設定変数と設定できる値については、in.ndpd(1M)ndpd.conf(4) のマニュアルページを参照してください。

例 – /etc/inet/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 qe2 AdvSendAdvertisements 1
prefix 2:0:0:54::/64 qe2
prefix fec0:0:0:54::/64 qe2

in.ripngd デーモン

in.ripngd デーモンは、IPv6 ルーターの RIP 次世代ルーティングプロトコルを実装します。このプロトコルは、IPv6 用の RIP に相当する内容を定義します。RIP は、広く使用されている IPv4 ルーティングプロトコルで、Bellman-Ford 距離ベクトルアルゴリズムに基づいています。表 16–4 は、サポートされているオプションを示します。

表 16–4 in.ripngd デーモンのオプション

オプション 

説明 

-p n

n は RIPNG パケットの送受信に使用する代替ポート番号を指定する

-q

ルーティング情報を打ち切る 

-s

デーモンがルーターとして動作しているかどうかのルーティング情報の提供を強制する 

-P

ポイズンリバースを打ち切る 

-S

in.ripngd がルーターとして機能しない場合、各ルーターにはデフォルトのルートだけが指定される

inetd インターネットサービスデーモン

IPv6 有効化サーバーは、IPv4 アドレスか IPv6 アドレスを処理できるサーバーです。IPv6 有効化サーバーは、対応するクライアントで使用しているプロトコルと同じプロトコルを使用します。/etc/inet/inetd.conf ファイルには、inetd(1M) がソケット経由でインターネット要求を受信したときに呼び出すサーバーリストが保存されています。ソケットベースのインターネットサーバーエントリはそれぞれ、次の構文を使用する 1 行です。


service_name socket_type proto flags user server_pathname args

各フィールドに指定できる値については、inetd.conf(4) のマニュアルページを参照してください。Solaris オペレーティング環境の場合、IPv6 有効化としてサービスを /etc/inet/inetd.conf ファイルに指定するには、proto フィールドに tcp6 または udp6 を指定します。サービスが IPv4 専用の場合、proto フィールドは tcp または udp として指定します。サービスの proto 値に tcp6 または udp6 を指定すると、inetd は所定のデーモンに AF_INET6 ソケットを渡します。

inetd.conf ファイルの次のエントリは、IPv4 クライアントアプリケーションと IPv6 クライアントアプリケーションの両方と通信できる udp サーバー (myserver) を表します。


例 16–3 IPv4 クライアントアプリケーションと IPv6 クライアントアプリケーションの両方と通信するサーバー


myserver   dgram   udp6	wait	root	/usr/sbin/myserver	myserver

IPv6 有効化サーバーは、AF_INET (IPv4 専用) ソケットまたは AF_INET6 (IPv6 と IPv4) ソケットを inetd から継承できます。サービスの proto 値は tcp6 (udp6) または tcp (udp) として指定されます。この種のサーバーでは、2 つの inetd.conf エントリを指定できます。1 つは prototcp として、もう1 つは prototcp6 として指定できます。


注 –

AF_INET6 ソケットは、IPv4 プロトコルと IPv6 プロトコルのどちらでも使用できるため、prototcp6 (udp6) を指定すれば充分です。


各種 IPv6 有効化サーバーの記述方法については、プログラミングインタフェースを参照してください。

Solaris ソフトウェアとともに提供されるサーバーはすべて、proto 値を tcp6 または udp6 と指定する inetd エントリが1 つあれば十分です。ただし、リモートシェルサーバー (shell) とリモート実行サーバー (exec) のエントリには、tcptcp6 の両方の proto 値を指定する必要があります。例 16–4 は、rlogintelnetshellexec 用の inetd エントリです。


例 16–4 Solaris ソフトウェアで提供されるサーバー用の inetd.conf エントリ


login stream	tcp6 nowait root  /usr/sbin/in.rlogind  in.rlogind
telnet stream	tcp6 nowait root /usr/sbin/in.telnetd in.telnetd
shell	stream	tcp	nowait	root	/usr/sbin/in.rshd	in.rshd
shell	stream	tcp6	nowait	root	/usr/sbin/in.rshd	in.rshd
exec	stream	tcp	nowait	root	/usr/sbin/in.rexecd	in.rexecd
exec	stream	tcp6	nowait	root	/usr/sbin/in.rexecd	in.rexecd

TCP ラッパーは、telnet などさまざまなネットワークサービスで入力要求を監視、フィルタ処理するためのパブリックドメインユーティリティです。以上のユーティリティの server_pathname として TCP ラッパーを指定する場合、TCP ラッパーが IPv6 対応である必要があります。対応していない場合、TCP ラッパーで使用するサービスの prototcpudp に指定する必要があります。

また、Solaris ユーティリティを別の実装と入れ替える場合、そのサービスの実装が IPv6 をサポートしていることを確認する必要があります。サポートしていない場合、その実装の prototcpudp に指定する必要があります。


注 –

proto 値を tcpudp のどちらか一方に指定すると、サービスでは IPv4 だけが使用されます。IPv4 接続と IPv6 接続の両方を有効にするには、proto 値を tcp6udp6 に指定する必要があります。サービスで IPv6 をサポートしていない場合、tcp6udp6 は指定しないでください。


ソケットを使用する IPv6 有効化サーバーについては、プログラミングインタフェースのソケット API への IPv6 拡張機能についての説明を参照してください。

既存のユーティリティに対する IPv6 拡張機能

ユーザーレベルインタフェースでは、次のユーティリティの組み込み拡張機能も変更されました。

ifconfig(1M) ユーティリティも変更されました。詳細については、ifconfig ユーティリティに対する IPv6 拡張機能を参照してください。

netstat(1M)

IPv4 ネットワーク状態の表示の他、netstat では IPv6 ネットワーク状態も表示できます。/etc/default/inet_type ファイルと -f コマンド行オプションで DEFAULT_IP 値を設定して、表示するプロトコル情報を選択できます。DEFAULT_IP のパラメータ設定では、netstat に IPv4 情報だけが表示されていることを確認できます。この設定は、-f オプションで無効にできます。inet_type ファイルの詳細については、inet_type(4) のマニュアルページを参照してください。

新しい -p オプションでは、net-to-media テーブルが表示されます。これは、IPv4 用の ARP テーブルであり、IPv6 用の近傍キャッシュです。詳細については、netstat(1M) のマニュアルページを参照してください。このコマンドの使用方法については、ネットワーク状態の表示方法を参照してください。

snoop(1M)

snoop コマンドは、IPv4 パケットと IPv6 パケットの両方を取り込んで、IPv6 ヘッダー、IPv6 拡張ヘッダー、ICMPv6 ヘッダー、近傍検索プロトコルデータを表示できます。 デフォルトで、snoop コマンドは、IPv4 パケットと IPv6 パケットの両方を表示します。ip プロトコルキーワードか ip6 プロトコルキーワードを指定すると、snoop コマンドは IPv4 パケットか IPv6 パケットのどちらかだけを表示します。IPv6 フィルタオプションでは、すべてのパケットをフィルタの対象にでき (IPv4 と IPv6 の両方)、IPv6 パケットだけが表示されます。詳細については、snoop(1M) のマニュアルページを参照してください。このコマンドの使用方法については、IPv6 ネットワークトラフィックの監視方法を参照してください。

route(1M)

このユーティリティは、IPv4 ルーターと IPv6 ルーターの両方で実行できます。デフォルトで、route は IPv4 ルートで実行します。コマンド行で route コマンドの直後にオプション -inet6 を指定すると、操作が IPv6 ルートで実行されます。詳細については、route(1M) のマニュアルページを参照してください。

ping(1M)

ping コマンドは、IPv4 プロトコルと IPv6 プロトコルの両方で、宛先ホストを調べることができます。プロトコル選択は、指定の宛先ホストのネームサーバーが戻すアドレスに依存します。デフォルトでネームサーバーが、宛先ホストの IPv6 アドレスを戻すと、ping コマンドは IPv6 プロトコルを使用します。サーバーが IPv4 アドレスだけを戻すと、IPv4 プロトコルを使用します。-A コマンド行オプションで使用するプロトコルを指定すれば、この動作を無効にできます。

その他、-a コマンド行オプションを指定すれば、マルチホーム宛先ホストのアドレスをすべて ping できます。詳細については、ping(1M) のマニュアルページを参照してください。このコマンドの使用方法については、すべてのマルチホームホストアドレスの探査方法を参照してください。

traceroute(1M)

traceroute コマンドを使用して、指定ホストまでの IPv4 ルートと IPv6 ルートの両方をトレースできます。使用するプロトコルの選択について、traceroute では、ping と同じアルゴリズムを使用します。選択を無効にするには、-A コマンド行オプションを使用します。マルチホームホストのすべてのアドレスまでの各ルートは -a コマンド行オプションでトレースできます。traceroute(1M) のマニュアルページを参照してください。

表示出力の制御

netstat コマンドと ifconfig コマンドによる出力表示の方法を制御できます。

DEFAULT_IP の値は、IP_VERSION4、IP_VERSION6、BOTH のどれかに設定できます。DEFAULT_IP を指定してこのファイルを作成しない場合、netstatifconfig では、両方のバージョンが表示されます。


注 –

inet キーワードオプションと inet6 キーワードオプションは、netstat コマンドと ifconfig コマンドの使用時に inet_type ファイルで設定した値を無効にします。


操作については、IPv6 関連コマンドの出力表示の制御方法を参照してください。

IPv6 の Solaris トンネルインタフェース

トンネルインタフェースのフォーマットは次のとおりです。


ip.tun ppa

ppa は物理的な接続ポイントです。


注 –

Solaris ソフトウェアでは、IPv6 パケット内にパケットをカプセル化できません。


システム起動時に、トンネルモジュール (tun) は、(ifconfig によって) IP の最上位にプッシュされ、仮想インタフェースが作成されます。このプッシュは、hostname6.* ファイルを作成することによって行われます。

たとえば、IPv4 ネットワーク経由で IPv6 パケットをカプセル化するためのトンネルを作成するには、次のファイルを作成します。


/etc/hostname6.ip.tun0

このファイルの内容は、インタフェースが結合された後に ifconfig(1M) に渡されます。ポイントツーポイントトンネルの設定に必要なパラメータになります。

次のリストは、hostname6.ip.tun0 ファイルのエントリの例です。


例 16–5 hostname6.interface エントリ


tsrc 120.68.100.23 tdst 120.68.7.19 up
addif 1234:1234::1 5678:5678::2 up

この例の IPv4 ソースと宛先アドレスは、ip.tun0 インタフェースのソース IPv6 リンクローカルアドレスと宛先 IPv6 リンクローカルアドレスの自動設定に必要なトークンとして機能します。ip.tun0 インタフェースと、addif コマンドによってソース IPv6 アドレスと宛先 IPv6 アドレスが指定された論理インタフェース (ip.tun0:1) の、2 つのインタフェースが設定されます。

すでに述べたとおり、システムをマルチユーザーとして起動すると、これらの設定ファイルの内容が変更されずに ifconfig に渡されます。上の例は次の内容と同じです。


# ifconfig ip.tun0 inet6 plumb
# ifconfig ip.tun0 inet6 tsrc 120.68.100.23 tdst 120.68.7.19 up
# ifconfig ip.tun0 inet6 addif 1234:1234::1 5678:5678::2 up

このトンネルにおける ifconfig -a の出力は次のとおりです。


ip.tun0: flags=2200850<UP,POINTOPOINT,RUNNING,MULTICAST,NONUD,IPv6> mtu 1480 
index 6
        inet tunnel src 120.68.100.23  tunnel dst 120.68.7.19
        inet6 fe80::c0a8:6417/10 --> fe80::c0a8:713
ip.tun0:1: flags=2200850<UP,POINTOPOINT,RUNNING,MULTICAST,NONUD,IPv6> mtu 1480 
index 5
        inet6 1234:1234::1/128 --> 5678:5678::2 

次の構文で設定ファイルに行を追加すれば、さらに論理インタフェースを設定できます。


addif IPv6-source IPv6-destination up

注 –

トンネルのどちらかの端は、トンネル経由で 1 つまたは複数のプレフィックスを通知する IPv6 ルーターです。トンネル構成ファイルには addif コマンドは必要ありません。他のアドレスは自動設定されるため、必要とされる可能性があるのは tsrctdst だけです。


場合によっては、特定のトンネルについて、固有のソースリンクローカルアドレスと宛先リンクローカルアドレスを手動で設定する必要があることもあります。その場合、設定ファイルの最初の行を変更して、これらのリンクローカルアドレスを組み込みます。次に例を示します。


tsrc 120.68.100.23 tdst 120.68.7.19 fe80::1/10 fe80::2 up

ソースリンクローカルアドレスには、長さが 10 のプレフィックスがあります。この例では、ip.tun0 インタフェースは次のようになります。


ip.tun0: flags=2200850<UP,POINTOPOINT,RUNNING,MULTICAST,NONUD,IPv6> mtu 1480 
index 6
        inet tunnel src 120.68.100.23  tunnel dst 120.68.7.19
        inet6 fe80::1/10 --> fe80::2

tun の固有の情報については、tun(7M) のマニュアルページを参照してください。IPv6 への移行時のトンネルの概念の一般的な説明については、トンネル機構を参照してください。トンネルの設定方法については、IPv4 トンネルによる IPv6 の設定方法を参照してください。

Solaris ネームサービスに対する IPv6 拡張機能

ここでは、Solaris 8 リリースで IPv6 の実装により導入されたネーミングの変更について説明します。 IPv6 アドレスは Solaris ネームサービス (NIS、NIS+、DNS およびファイル) のどれでも保存できます。また、IPv6 RPC トランスポートで NIS と NIS+ を使用して NIS データまたは NIS+ データを検出することもできます。

/etc/inet/ipnodes ファイル

/etc/inet/ipnodes ファイルには、IPv4 と IPv6 のアドレスが格納されています。このファイルはローカルデータベースとして、ホスト名を IPv4 アドレスや IPv6 アドレスに関連付けます。ホスト名やそのアドレスは、/etc/inet/ipnodes などの静的ファイルには保存しないでください。ただし、テスト目的の場合は IPv4 アドレスを /etc/inet/hosts に保存するのと同じ方法で IPv6 アドレスを保存します。ipnodes ファイルでは、hosts ファイルと同じフォーマット変換を使用します。hosts ファイルについては、ネットワークデータベースを参照してください。ipnodes ファイルについては、ipnodes(4) のマニュアルページを参照してください。

IPv6-aware (IPv6 が利用可能な) ユーティリティでは、新しい /etc/inet/ipnodes データベースを使用します。既存の /etc/hosts データベースには、IPv4 アドレスだけを保存していますが、既存のアプリケーションの便宜上、このデータベースは変更されません。ipnodes データベースがない場合、IPv6-aware ユーティリティでは既存の hosts データベースを使用します。


注 –

アドレスを追加する必要がある場合、IPv4 アドレスは hosts ファイルと ipnodes ファイルの両方に追加しなければなりません。IPv6 アドレスは ipnodes ファイルにだけ追加します。


例 – /etc/inet/ipnodes ファイル


#
# Internet IPv6 host table
# with both IPv4 and IPv6 addresses
#
::1     localhost
2::9255:a00:20ff:fe78:f37c   fripp.guitars.com fripp fripp-v6
fe80::a00:20ff:fe78:f37c     fripp-11.guitars.com frippll
120.46.85.87   				 fripp.guitars.com fripp fripp-v4
2::9255:a00:20ff:fe87:9aba   strat.guitars.com strat strat-v6
fe80::a00:20ff:fe87:9aba     strat-11.guitars.com stratll
120.46.85.177  				 strat.guitars.com strat strat-v4 loghost

注 –

上記の例のように、ホスト名アドレスは、ホスト名でグループにまとめる必要があります。


IPv6 の NIS 拡張機能

NIS 用に 2 つの新しいマップが追加されました。 ipnodes.bynameipnodes.byaddr です。/etc/inet/ipnodes と同様に、これらのマップには、IPv4 情報と IPv6 情報の両方が保存されます。既存の hosts.bynamehosts.byaddr マップは、IPv4 情報だけを保存しています。既存のアプリケーションの便宜上変更されていません。

IPv6 の NIS+ 拡張機能

NIS+ 用に ipnodes.org_dir という新しいテーブルが追加されました。このテーブルには、ホスト用の IPv4 アドレスと IPv6 アドレスの両方が保存されています。既存の hosts.org_dir テーブルは IPv4 アドレス情報だけを保存しています。このテーブルは、既存のアプリケーションの便宜上変更されていません。

IPv6 の DNS 拡張機能

AAAA レコードとして定義された新しいリソースレコードが、RFC 1886 で定義されています。このAAAA レコードは、ホスト名を 128 ビット IPv6 アドレスにマップします。PTRレコードは IPv6 でも、IP アドレスをホスト名にマップするときに使用されています。128 ビットアドレスの 32 の 4 ビットニブルは、IPv6 アドレス用に反転されています。各ニブルは対応する 16 進 ASCII 値に変換されます。変換後、ip6.int が追加されます。

nsswitch.conf ファイルへの変更

/etc/inet/ipnodes で IPv6 アドレスを調べる機能に加え、IPv6 サポートは、NIS ネームサービス、NIS+ ネームサービス、DNS ネームサービスに追加されています。その結果、nssiwtch.conf(4) ファイルは IPv6 検索をサポートするように変更されました。ipnodes 行が /etc/nsswitch.conf ファイルに追加されました。この追加により、Solaris ネームサービス (NIS、NIS+、DNS、ファイル) の新しいデータベースで検索が可能になりました。次の太字で示された行は、ipnodes エントリの例です。


hosts:  files dns nisplus [NOTFOUND=return]
ipnodes: files dns nisplus [NOTFOUND=return]

注 –

IPv4 アドレスと IPv6 アドレスでこれらの ipnodes データベースを生成してから、複数のネームサービスで ipnodes を探すように /etc/nsswitch.conf ファイルを変更してください。ホストアドレスの解決時に不要な遅延が発生してしまうからです (起動タイミングの遅れが発生することもあります)。


図 16–1 は、gethostbyname() コマンドと getipnodebyname() コマンドを使用するアプリケーションにおける、nsswitch.conf ファイルと新しいネームサービスデータベースの新しい関係を示します。斜体の項目は新規です。gethostbyname() コマンドは、/etc/inet/hosts に保存されている IPv4 アドレスだけを調べます。getipnodebyname() コマンドは、nsswitch.conf ファイルの ipnodes エントリで指定したデータベースを調べます。検索に失敗すると、nsswitch.conf ファイルの hosts エントリで指定したデータベースを調べます。

図 16–1 nsswitch.conf とネームサービスの関係

ダイアグラムは、NIS、NIS+、ファイル、データベースおよび nsswitch.conf ファイル間の関係を示しています。

ネームサービスの詳細については、Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)を参照してください。

ネームサービスコマンドの変更

IPv6 をサポートできるように、既存のネームサービスコマンドで IPv6 アドレスを調べることができます。たとえば、ypmatch コマンドは、新しい NIS マップに使用できます。nismatch コマンドは、新しい NIS+ テーブルに使用できます。nslookup コマンドでは、DNS の新しい AAAA レコードを調べることができます。ネームサービスの変更については、IPv6 の NIS 拡張機能IPv6 の NIS+ 拡張機能、および IPv6 の DNS 拡張機能を参照してください。

これらのコマンドの使用手順については、IPv6 ネームサービス情報の表示を参照してください。

NFS と RPC による IPv6 のサポート

NFS と RPC ソフトウェアは、シームレスに IPv6 をサポートします。NFS サービスに関連のある既存のコマンドは変更されていません。ほとんどの RPC アプリケーションが、変更なしで IPv6 で実行できます。トランスポート機能のある一部の高度 RPC アプリケーションに更新が必要な場合があります。

IPv6–Over-ATM サポート

Solaris オペレーティング環境では、IPv6–over-ATM、固定仮想回路 (PVC)、静的な交換仮想回路 (SVC) をサポートするようになりました。