Solaris のシステム管理 (資源管理とネットワークサービス)

DSL サポート用の PPPoE トンネルの作成

PPPoE を使用することにより、1 台以上の DSL モデムを使用している複数のクライアントに PPP 超高速デジタルサービスを提供できます。PPPoE は、3 つの関係者、つまり企業、電話会社、サービスプロバイダを通して Ethernet トンネルを作成することにより、このサービスを実現します。

この節では、PPPoE コマンドおよびファイルについて詳しく説明します。概要を次の表に示します。

表 36-8 PPPoE のコマンドと構成ファイル

ファイルまたはコマンド 

説明 

参照先 

/etc/ppp/pppoe

PPPoE がシステムに設定したすべてのトンネルに対してデフォルトで適用される特性を含むファイル 

/etc/ppp/pppoe ファイル

/etc/ppp/pppoe.device

PPPoE がトンネルに使用する特定のインタフェースの特性を含むファイル 

/etc/ppp/pppoe.device ファイル

/etc/ppp/pppoe.if

PPPoE が設定したトンネルが動作する Ethernet インタフェースをリストしたファイル 

/etc/ppp/pppoe.if ファイル

/usr/sbin/sppptun

PPPoE トンネルに関係する Ethernet インタフェースを設定するためのコマンド 

/usr/sbin/sppptun コマンド

/usr/lib/inet/pppoed

PPPoE を使ってトンネルを設定するためのコマンドとオプション 

/usr/lib/inet/pppoed デーモン

PPPoE のインタフェースを設定するためのファイル

PPPoE トンネルの両端で使用されるインタフェースは、トンネルが PPP 通信をサポートする前に、あらかじめ設定しておく必要があります。設定には、/usr/sbin/sppptun および /etc/ppp/pppoe.if ファイルを使用します。これらのツールを使用して、すべての Solaris PPPoE クライアントおよび PPPoE アクセスサーバー上の Ethernet インタフェースを設定する必要があります。

/etc/ppp/pppoe.if ファイル

/etc/ppp/pppoe.if ファイルは、ホスト上の PPPoE トンネルで使用されるすべての Ethernet インタフェースの名前をリストします。このファイルはシステムの起動時に処理され、ファイルにリストされているインタフェースは PPPoE トンネルで使用するために plumb されます。

/etc/ppp/pppoe.if は明示的に作成する必要があります。各行ごとにインタフェース名を 1 つずつ入力して PPPoE 用に設定します。

/etc/ppp/pppoe.if ファイルサンプル

次に、PPPoE トンネルに 3 つのインタフェースを提供するサーバーの /etc/ppp/pppoe.if ファイルの例を示します。


# cat /etc/ppp/pppoe.if
hme1
hme2
hme3

PPPoE クライアントは通常、/etc/ppp/pppoe.if にリストされているインタフェースを 1 つだけ使用します。

/usr/sbin/sppptun コマンド

/usr/sbin/sppptun コマンドを使用すると、PPPoE トンネルで使用する Ethernet インタフェースを手動で plumb したり unplumb したりできます。これに対して、/etc/ppp/pppoe.if はシステムの起動時だけ読み取られます。これらのインタフェースは、/etc/ppp/pppoe.if にリストされているインタフェースと一致する必要があります。

sppptun は、PPPoE トンネルで使用する Ethernet インタフェースを ifconfig コマンドと同様の方法で plumb します。ifconfig とは異なり、2 つの Ethernet プロトコル番号が必要なため、PPPoE をサポートするにはインタフェースを 2 回 plumb する必要があります。

sppptun の基本的な構文を次に示します。


# /usr/sbin/sppptun plumb pppoed device-name
     device-name:pppoed
# /usr/sbin/sppptun plumb pppoe device-name
     device-name:pppoe
この構文で、device-name は PPPoE に plumb されるデバイス名です。

上の 1 つめの sppptun コマンドを実行したときは、発見プロトコル pppoed がインタフェースに plumb されます。2 つめの sppptun を実行したときは、セッションプロトコル pppoe が plumb されます。sppptun は、plumb されたインタフェースの名前を表示します。必要な場合は、この名前を使ってインタフェースを unplumb します。

詳細は、sppptun(1M) のマニュアルページを参照してください。

インタフェースを管理するための sppptun コマンドサンプル

PPPoE アクセスサーバーのコマンドとファイル

DSL のサービスまたはサポートを顧客に提供するサービスプロバイダは、Solaris PPPoE を実行するアクセスサーバーを使用できます。PPPoE アクセスサーバーとクライアントは、従来のクライアントとサーバーの関係で機能します。この関係は、ダイアルアップリンクでのダイアルアウトマシンとダイアルインサーバーの関係に似ています。つまり、ある PPPoE システムが通信を開始し、別の PPPoE システムが応答します。これに対して、PPP プロトコルにはクライアントとサーバーの関係という概念はなく、両方のマシンが同等のピアとみなされます。

PPPoE アクセスサーバーを設定するコマンドおよびファイルには、以下が含まれます。

/usr/lib/inet/pppoed デーモン

pppoed デーモンは、将来の PPPoE クライアントからブロードキャストを受け取ります。さらに、pppoed は PPPoE トンネルのサーバー側とネゴシエーションし、PPP デーモン pppd をそのトンネル上で実行します。

pppoed サービスは、/etc/ppp/pppoe および /etc/ppp/pppoe.device ファイルで設定します。システム起動時に /etc/ppp/pppoe が存在する場合は、pppoed が自動的に実行します。コマンド行で /usr/lib/inet/pppoed と入力することにより、pppoed デーモンを明示的に実行することもできます。

/etc/ppp/pppoe ファイル

/etc/ppp/pppoe ファイルは、アクセスサーバーが提供するサービスと、PPP が PPPoE トンネル上でどのように実行するかを定義するオプションを説明します。インタフェースごとに個別にサービスを定義することも、広域的にアクセスサーバー上のすべてのインタフェースに対してサービスを定義することもできます。アクセスサーバーは、将来の PPPoE クライアントからのブロードキャストに応答して、/etc/ppp/pppoe ファイル内の情報を送信します。

以下に、/etc/ppp/pppoe の基本的な構文を示します。


global-options
service service-name
    service-specific-options
    device interface-name
  
パラメータの意味は次のとおりです。

global-options

/etc/ppp/pppoe ファイルのデフォルトのオプションを設定する。このオプションには、pppoed または pppd で使用可能なオプションはすべて使用できる。オプションの完全なリストについては、pppoed(1M) および pppd(1M) のマニュアルページを参照

たとえば、グローバルオプションには、PPPoE トンネルで使用できる Ethernet インタフェースをリストする必要がある。/etc/ppp/pppoe でデバイスを定義しないと、インタフェースでサービスを提供できない

devices をグローバルオプションとして定義するには、次の形式を使用する


device interface <,interface>
interface は、サービスが将来の PPPoE クライアントを待つインタフェースを指定する。複数のインタフェースがサービスに関連付けられている場合は、名前をコンマで区切って指定する

service service-name

service-name というサービスの定義を開始する。service-name には、提供されるサービスに適した任意の文字列を指定できる

service-specific-options

このサービスに固有の PPPoE および PPP のオプションを表示する 

device interface-name

上記でリストしたサービスを利用できるインタフェースを指定する 

/etc/ppp/pppoe のこの他のオプションについては、pppoed(1M) および pppd(1M) のマニュアルページを参照してください。

次に、典型的な /etc/ppp/pppoe ファイルの例を示します。


例 36-4 基本的な /etc/ppp/pppoe ファイル


device hme1,hme2,hme3
service internet
   pppd "name internet-server"
service intranet
   pppd "192.168.1.1:"
service debug
   device hme1
   pppd "debug name internet-server"

このファイルでは、以下の値が適用されています。

hme1,hme2,hme3

PPPoE トンネルに使用されるアクセスサーバー上の 3 つのインタフェース 

service internet

将来のクライアントに対して internet というサービスを通知する。また、サービスを提供するプロバイダは internet の定義についても決定する。たとえば、プロバイダは、インターネットへのアクセスだけでなく、さまざまな IP サービスを意味する internet サービスを提供できる

pppd

呼び出し元が pppd を呼び出したときに使用されるコマンド行オプションを設定する。"name internet-server" オプションは、ローカルマシン (アクセスサーバー) の名前を internet-server と付ける

service intranet

intranet という別のサービスを想定クライアントに通知する

pppd "192.168.1.1:"

呼び出し元が pppd を呼び出したときに使用されるコマンド行オプションを設定する。呼び出し元が pppd を呼び出すと、ローカルマシン (アクセスサーバー) の IP アドレスとして 192.168.1.1 が設定される

service debug

PPPoE 用に定義されているインタフェースに 3 番目のサービス、デバッグを通知する 

device hme1

PPPoE トンネルに対するデバッグを hme1 に限定する

pppd "debug name internet-server"

呼び出し元が pppd を起動したときに使用されるコマンド行オプション、この場合は PPP デバッグをローカルマシン internet-server に設定する

/etc/ppp/pppoe.device ファイル

/etc/ppp/pppoe.device ファイルは、PPPoE アクセスサーバーのインタフェース上で提供されるサービスと、PPP が PPPoE トンネル上でどのように実行するかを定義するオプションを説明します。/etc/ppp/pppoe.device はオプションのファイルで、グローバルの /etc/ppp/pppoe とまったく同様に動作します。ただし、/etc/ppp/pppoe.device がインタフェース用に定義されている場合、そのインタフェースでは、このファイルのパラメータが、/etc/ppp/pppoe で定義されているグローバルパラメータより優先されます。

以下に、/etc/ppp/pppoe.device の基本的な構文を示します。


service service-name
     service-specific-options
service another-service-name
      service-specific-options    

上記の構文と /etc/ppp/pppoe の構文の違いは、/etc/ppp/pppoe ファイルで示した device オプションを使用できない点だけです。

pppoe.so プラグイン

pppoe.so は PPPoE 共有オブジェクトファイルで、PPPoE のアクセスサーバーおよびクライアントによって呼び出されます。このファイルは、MTU および MRU を 1492 に制限し、ドライバからのパケットにフィルタをかけ、pppoed とともに PPPoE トンネルをネゴシエートします。アクセスサーバー側では、pppoe.sopppd デーモンによって自動的に呼び出されます。

アクセスサーバー構成のための PPPoE および PPP ファイルの使用

この節では、あるアクセスサーバーを構成するために使用するすべてのファイルのサンプルを紹介します。このアクセスサーバーはマルチホームで、3 つのサブネット、greenorange、および purple が接続されています。pppoed は、サーバー上で root として実行します。これはデフォルトの動作です。

PPPoE クライアントは、hme0 および hme1 インタフェースを通じて orange および purple ネットワークにアクセスできます。クライアントは、標準の UNIX ログインを使ってサーバーにログインします。サーバーは、クライアントを PAP を使って認証します。

green ネットワークは、クライアントに通知されません。クライアントが green にアクセスできるためには、直接「green-net」を指定し、CHAP 認証資格を提供しなければなりません。さらに、クライアント joe および mary だけが、静的 IP アドレスを使用して green ネットワークにアクセスできます。


例 36-5 アクセスサーバー用の /etc/ppp/pppoe ファイル


service orange-net
     device hme0,hme1
     pppd "require-pap login name orange-server orange-server:"
service purple-net
     device hme0,hme1 
     pppd "require-pap login name purple-server purple-server:"
service green-net
     device hme1 
     pppd "require-chap name green-server green-server:"
     nowildcard

このサンプルは、アクセスサーバーから使用できるサービスを説明します。1 番目の service 節は、orange ネットワークのサービスを説明します。


service orange-net
     device hme0,hme1
     pppd "require-pap login name orange-server orange-server:"
クライアントは、hme0 および hme1 インタフェース上で orange ネットワークにアクセスできます。pppd コマンドに指定されているオプションにより、サーバーは、想定クライアントからの PAP 資格を要求します。また、pppd オプションはサーバーの名前を orange-server に設定します。この名前は pap-secrets ファイルで使用されます。

purple ネットワーク用の service 節は、ネットワーク名とサーバー名が異なる以外は、orange ネットワーク用の service 節と同じです。

次の service 節は、green ネットワークのサービスを説明します。


service green-net
     device hme1 
     pppd "require-chap name green-server green-server:"
     nowildcard
この節は、クライアントのアクセスをインタフェース hme1 に限定しています。pppd コマンドに指定されているオプションにより、サーバーは、想定クライアントからの CHAP 資格を要求します。また、pppd オプションはサーバー名を green-server に設定しています。この名前は chap-secrets ファイルで使用されます。nowildcard オプションは、green ネットワークの存在をクライアントに通知しないことを指定します。

このアクセスサーバーのシナリオでは、次のような /etc/ppp/options ファイルを設定する場合があります。


例 36-6 アクセスサーバー用の /etc/ppp/options ファイル


 	auth
 	proxyarp
 	nodefaultroute
 	name no-service	# don't authenticate otherwise

name no-service オプションは、通常、PAP または CHAP 認証時に検索されるサーバー名を無効にします。サーバーのデフォルト名は、/usr/bin/hostname に記述されています。前述の例の name オプションは、サーバー名を no-service に変更します。no-service は、pap または chap-secrets ファイルでは見つかりそうにない名前です。この処理により、任意のユーザーが pppd を実行したり、/etc/ppp/options で設定されている auth および name オプションを上書きするのを防ぐことができます。pppd は、no-service のサーバー名ではクライアントのシークレットを見つけることができないため、失敗します。

このアクセスサーバーのシナリオでは、次の /etc/hosts ファイルを使用します。


例 36-7 アクセスサーバー用の /etc/hosts ファイル


     172.16.0.1	orange-server
     172.17.0.1	purple-server
     172.18.0.1	green-server
     172.18.0.2	joes-pc
     172.18.0.3	marys-pc

次に、orange および purple ネットワークにアクセスしようとするクライアントの PAP 認証に使用する /etc/ppp/pap-secrets ファイルを示します。


例 36-8 アクセスサーバー用の /etc/ppp/pap-secrets ファイル


* orange-server "" 172.16.0.2/16+
* purple-server "" 172.17.0.2/16+

次に、CHAP 認証に使用される /etc/ppp/chap-secrets ファイルを示します。joe および mary というクライアントだけがファイルにリストされていることに注意してください。


例 36-9 アクセスサーバー用の /etc/ppp/chap-secrets ファイル


 joe green-server "joe's secret" joes-pc
mary green-server "mary's secret" marys-pc

PPPoE クライアントのコマンドとファイル

DSL モデム上で PPP を実行するには、マシンが PPPoE クライアントになる必要があります。PPPoE を実行するためにインタフェースを plumb し、次に pppoec ユーティリティを使ってアクセスサーバーの存在を「発見」する必要があります。その後、クライアントは DSL モデム上に PPPoE トンネルを作成し PPP を実行できます。

PPPoE クライアントは、従来のクライアント - サーバーモデルでアクセスサーバーに接続します。PPPoE トンネルはダイアルアップリンクではありませんが、ほぼ同じような方法で構成され、操作されます。

PPPoE クライアントを設定するコマンドおよびファイルには、以下が含まれます。

/usr/lib/inet/pppoec ユーティリティ

/usr/lib/inet/pppoec ユーティリティは、PPPoE トンネルのクライアント側をネゴシエーションします。 pppoec は、Solaris PPP 4.0 の chat ユーティリティに似て います。pppoec は直接起動しません。直接起動するのではなく、pppdconnect オプションの引数として /usr/lib/inet/pppoec を起動します。

pppoe.so プラグイン

pppoe.so は PPPoE 共有オブジェクトで、PPPoE によって読み込まれ、PPPoE 機能をアクセスサーバーとクライアントに提供します。共有オブジェクト pppoe.so は、MTU および MRU を 1492 に制限し、ドライバからのパケットにフィルタをかけ、実行時 PPPoE メッセージを処理します。

クライアント側では、ユーザーが plugin pppoe.so オプションを指定すると、pppdpppoe.so を読み込みます。

アクセスサーバーピアを定義するための /etc/ppp/peers/peer-name ファイル

アクセスサーバーが pppoec によって発見されるように定義する場合は、 pppoec および pppd デーモンの両方に適用されるオプションを使用します。アクセスサーバーの /etc/ppp/peers/peer-name ファイルは次のパラメータを必要とします。

/etc/ppp/peers/ peer-name ファイル内の残りのパラメータは、サーバー上の PPP リンクに適用されます。ダイアルアウトマシン上の /etc/ppp/peers/peer-name と同じオプションを使用します。オプションの数を PPP リンクで必要な最小数に制限するようにしてください。

次の例は、PPPoE アクセスサーバーピアを定義する方法で紹介されています。


例 36-10 リモートアクセスサーバーを定義するための /etc/ppp/peers/peer-name


# vi /etc/ppp/peers/dslserve
sppptun
plugin pppoe.so
connect "/usr/lib/inet/pppoec hme0"
noccp
noauth
user Red
password redsecret
noipdefault
defaultroute

このファイルは、アクセスサーバー dslserve に PPPoE トンネルと PPP リンクを設定するときに使用するパラメータを定義します。オプションには、以下が含まれます。

オプション 

説明 

sppptun

sppptun をシリアルデバイスの名前として定義する

plugin pppoe.so

pppdpppoe.so 共有オブジェクトを読み込むように指示する

connect "/usr/lib/inet/pppoec hme0"

pppoec を実行し、PPPoE トンネルおよび PPP リンク用のインタフェースとして hme0 を指定する

noccp

接続上で CCP 圧縮をオフに設定する


注 -

多くの ISP は独自の圧縮アルゴリズムだけを使用します。公開された CCP アルゴリズムをオフにすると、ネゴシエーションの時間を節約し、偶発的な相互運用性の問題を避けることができます。


noauth

pppd が認証資格をアクセスサーバーに要求するのを停止する。ほとんどの ISP は認証資格を顧客に提供しない

user Red

アクセスサーバーによる PAP 認証に必要なクライアントのユーザー名として Red の名前を設定する

password redsecret

PAP 認証のためにアクセスサーバーに提供されるパスワードとして redsecret を定義する

noipdefault

初期 IP アドレスとして 0.0.0.0 を割り当てる 

defaultroute

IPCP ネゴシエーション後にデフォルトの IPv4 経路指定をインストールするよう pppd に指示する。接続がシステムのインターネットへの接続である場合、/etc/ppp/peers/peer-name 内に defaultroute を含める必要がある。PPPoE クライアントの場合これにあてはまる