PPPoE を使用することにより、1 台以上の DSL モデムを使用している複数のクライアントに PPP 超高速デジタルサービスを提供できます。PPPoE は、3 つの関係者、つまり企業、電話会社、サービスプロバイダを通して Ethernet トンネルを作成することにより、このサービスを実現します。
PPPoE の動作の概要と説明については、PPPoE の概要 を参照してください。
PPPoE トンネルの設定作業については、第 30 章「PPPoE トンネルの設定 (手順)」を参照してください。
この節では、PPPoE コマンドおよびファイルについて詳しく説明します。概要を次の表に示します。
表 32–8 PPPoE のコマンドと構成ファイル
ファイルまたはコマンド |
説明 |
参照先 |
---|---|---|
/etc/ppp/pppoe |
PPPoE がシステムに設定したすべてのトンネルに対してデフォルトで適用される特性を含むファイル | |
/etc/ppp/pppoe. device |
PPPoE がトンネルに使用する特定のインタフェースの特性を含むファイル | |
/etc/ppp/pppoe.if |
PPPoE が設定したトンネルが動作する Ethernet インタフェースをリストしたファイル | |
/usr/sbin/sppptun |
PPPoE トンネルに関係する Ethernet インタフェースを設定するためのコマンド | |
/usr/lib/inet/pppoed |
PPPoE を使ってトンネルを設定するためのコマンドとオプション |
PPPoE トンネルの両端で使用されるインタフェースは、トンネルが PPP 通信をサポートする前に、あらかじめ設定しておく必要があります。設定には、/usr/sbin/sppptun および /etc/ppp/pppoe.if ファイルを使用します。これらのツールを使用して、すべての Solaris PPPoE クライアントおよび PPPoE アクセスサーバー上の Ethernet インタフェースを設定する必要があります。
/etc/ppp/pppoe.if ファイルは、ホスト上の PPPoE トンネルで使用されるすべての Ethernet インタフェースの名前をリストします。このファイルはシステムの起動時に処理され、ファイルにリストされているインタフェースは PPPoE トンネルで使用するために plumb されます。
/etc/ppp/pppoe.if は明示的に作成する必要があります。各行ごとにインタフェース名を 1 つずつ入力して PPPoE 用に設定します。
次に、PPPoE トンネルに 3 つのインタフェースを提供するサーバーの /etc/ppp/pppoe.if ファイルの例を示します。
# cat /etc/ppp/pppoe.if hme1 hme2 hme3 |
PPPoE クライアントは通常、/etc/ppp/pppoe.if にリストされているインタフェースを 1 つだけ使用します。
/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 |
上の 1 つめの sppptun コマンドを実行したときは、発見プロトコル pppoed がインタフェースに plumb されます。2 つめの sppptun を実行したときは、セッションプロトコル pppoe が plumb されます。sppptun は、plumb されたインタフェースの名前を表示します。必要な場合は、この名前を使ってインタフェースを unplumb します。
詳細は、sppptun(1M) のマニュアルページを参照してください。
次の例は、/usr/sbin/sppptun を使用して PPPoE のインタフェースを手動で plumb します。
# /usr/sbin/sppptun plumb pppoed hme0 hme0:pppoed # /dev/sppptun plumb pppoe hme0 hme0:pppoe |
次の例は、PPPoE に plumb されたアクセスサーバー上のインタフェースを表示します。
/usr/sbin/sppptun query hme0:pppoe hme0:pppoed hme1:pppoe hme1:pppoed hme2:pppoe hme2:pppoed |
# sppptun unplumb hme0:pppoed # sppptun unplumb hme0:pppoe |
DSL のサービスまたはサポートを顧客に提供するサービスプロバイダは、Solaris PPPoE を実行するアクセスサーバーを使用できます。PPPoE アクセスサーバーとクライアントは、従来のクライアントとサーバーの関係で機能します。この関係は、ダイアルアップリンクでのダイアルアウトマシンとダイアルインサーバーの関係に似ています。つまり、ある PPPoE システムが通信を開始し、別の PPPoE システムが応答します。これに対して、PPP プロトコルにはクライアントとサーバーの関係という概念はなく、両方のマシンが同等のピアとみなされます。
PPPoE アクセスサーバーを設定するコマンドおよびファイルには、以下が含まれます。
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 ファイルは、アクセスサーバーが提供するサービスと、PPP が PPPoE トンネル上でどのように実行するかを定義するオプションを説明します。 インタフェースごとに個別にサービスを定義することも、広域的にアクセスサーバー上のすべてのインタフェースに対してサービスを定義することもできます。アクセスサーバーは、将来の PPPoE クライアントからのブロードキャストに応答して、/etc/ppp/pppoe ファイル内の情報を送信します。
以下に、/etc/ppp/pppoe の基本的な構文を示します。
global-options service service-name service-specific-options device interface-name |
/etc/ppp/pppoe ファイルのデフォルトのオプションを設定する。このオプションには、pppoed または pppd で使用可能なオプションはすべて使用できる。オプションの完全なリストについては、pppoed(1M) および pppd(1M) のマニュアルページを参照
たとえば、グローバルオプションには、PPPoE トンネルで使用できる Ethernet インタフェースをリストする必要がある。/etc/ppp/pppoe でデバイスを定義しないと、インタフェースでサービスを提供できない
devices をグローバルオプションとして定義するには、次の形式を使用する
device interface <,interface> |
service-name というサービスの定義を開始する。service-name には、提供されるサービスに適した任意の文字列を指定できる
このサービスに固有の PPPoE および PPP のオプションを表示する
上記でリストしたサービスを利用できるインタフェースを指定する
/etc/ppp/pppoe のこの他のオプションについては、pppoed(1M) および pppd(1M) のマニュアルページを参照してください。
次に、典型的な /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" |
このファイルでは、以下の値が適用されています。
PPPoE トンネルに使用されるアクセスサーバー上の 3 つのインタフェース
将来のクライアントに対して internet というサービスを通知する。また、サービスを提供するプロバイダは internet の定義についても決定する。たとえば、プロバイダは、インターネットへのアクセスだけでなく、さまざまな IP サービスを意味する internet サービスを提供できる
呼び出し元が pppd を呼び出したときに使用されるコマンド行オプションを設定する。 "name internet-server" オプションは、ローカルマシン (アクセスサーバー) の名前を internet-server と付ける
intranet という別のサービスを想定クライアントに通知する
呼び出し元が pppd を呼び出したときに使用されるコマンド行オプションを設定する。 呼び出し元が pppd を呼び出すと、ローカルマシン (アクセスサーバー) の IP アドレスとして 192.168.1.1 が設定される
PPPoE 用に定義されているインタフェースに 3 番目のサービス、デバッグを通知する
PPPoE トンネルに対するデバッグを hme1 に限定する
呼び出し元が pppd を起動したときに使用されるコマンド行オプション、この場合は PPP デバッグをローカルマシン internet-server に設定する
/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 共有オブジェクトファイルで、PPPoE のアクセスサーバーおよびクライアントによって呼び出されます。 このファイルは、MTU および MRU を 1492 に制限し、ドライバからのパケットにフィルタをかけ、pppoed とともに PPPoE トンネルをネゴシエートします。 アクセスサーバー側では、pppoe.so は pppd デーモンによって自動的に呼び出されます。
ここでは、あるアクセスサーバーを構成するために使用するすべてのファイルのサンプルを紹介します。このアクセスサーバーはマルチホームで、3 つのサブネット、green、orange、および purple が接続されています。pppoed は、サーバー上で root として実行します。これはデフォルトの動作です。
PPPoE クライアントは、hme0 および hme1 インタフェースを通じて orange および purple ネットワークにアクセスできます。クライアントは、標準の UNIX ログインを使ってサーバーにログインします。サーバーは、クライアントを PAP を使って認証します。
green ネットワークは、クライアントに通知されません。クライアントが green にアクセスできるためには、直接「green-net」を指定し、CHAP 認証資格を提供しなければなりません。さらに、クライアント joe および mary だけが、静的 IP アドレスを使用して green ネットワークにアクセスできます。
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:" |
purple ネットワーク用の service 節は、ネットワーク名とサーバー名が異なる以外は、orange ネットワーク用の service 節と同じです。
次の service 節は、green ネットワークのサービスを説明します。
service green-net device hme1 pppd "require-chap name green-server green-server:" nowildcard |
このアクセスサーバーのシナリオでは、次のような /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 ファイルを使用します。
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 ファイルを示します。
* orange-server "" 172.16.0.2/16+ * purple-server "" 172.17.0.2/16+ |
次に、CHAP 認証に使用される /etc/ppp/chap-secrets ファイルを示します。joe および mary というクライアントだけがファイルにリストされていることに注意してください。
joe green-server "joe's secret" joes-pc mary green-server "mary's secret" marys-pc |
DSL モデム上で PPP を実行するには、マシンが PPPoE クライアントになる必要があります。PPPoE を実行するためにインタフェースを plumb し、次に pppoec ユーティリティを使ってアクセスサーバーの存在を「発見」する必要があります。その後、クライアントは DSL モデム上に PPPoE トンネルを作成し PPP を実行できます。
PPPoE クライアントは、従来のクライアント - サーバーモデルでアクセスサーバーに接続します。PPPoE トンネルはダイアルアップリンクではありませんが、ほぼ同じような方法で構成され、操作されます。
PPPoE クライアントを設定するコマンドおよびファイルには、以下が含まれます。
/usr/lib/inet/pppoec ユーティリティは、PPPoE トンネルのクライアント側をネゴシエーションします。 pppoec は、Solaris PPP 4.0 の chat ユーティリティに似て います。pppoec は直接起動しません。直接起動するのではなく、pppd の connect オプションの引数として /usr/lib/inet/pppoec を起動します。
pppoe.so は PPPoE 共有オブジェクトで、PPPoE によって読み込まれ、PPPoE 機能をアクセスサーバーとクライアントに提供します。 共有オブジェクト pppoe.so は、MTU および MRU を 1492 に制限し、ドライバからのパケットにフィルタをかけ、実行時 PPPoE メッセージを処理します。
クライアント側では、ユーザーが plugin pppoe.so オプションを指定すると、pppd が pppoe.so を読み込みます。
アクセスサーバーが pppoec によって発見されるように定義する場合は、 pppoec および pppd デーモンの両方に適用されるオプションを使用します。アクセスサーバーの /etc/ppp/peers/peer-name ファイルは次のパラメータを必要とします。
sppptun – PPPoE トンネルが使用するシリアルデバイスの名前
plugin pppoe.so – pppd に pppoe.so 共有オブジェクトを読み込むように指示する
connect "/usr/lib/inet/pppoec device" – 接続を開始する。次に、PPPoE にplumb されているインタフェース device 上で pppoec ユーティリティを起動する
/etc/ppp/peers/peer-name ファイル内の残りのパラメータは、サーバー上の PPP リンクに適用されます。ダイアルアウトマシン上の /etc/ppp/peers/peer-name と同じオプションを使用します。オプションの数を PPP リンクで必要な最小数に制限するようにしてください。
次の例は、PPPoE アクセスサーバーピアを定義する方法で紹介されています。
# 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 リンクを設定するときに使用するパラメータを定義します。オプションには、以下が含まれます。