Go to main content
Oracle® Solaris 11.3 での UUCP および PPP を使用したシリアルネットワークの管理

印刷ビューの終了

更新: 2015 年 10 月
 
 

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

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

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

表 27  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 のインタフェースを構成するためのファイル

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

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

/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 コマンド

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

sppptun は、PPPoE トンネルで使用される Ethernet インタフェースを ipadm コマンドと同様の方法で plumb します。ipadm とは異なり、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 コマンドの例

次の例は、/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

次の例は、インタフェースを unplumb する方法を示しています。

# sppptun unplumb hme0:pppoed
# sppptun unplumb hme0:pppoe

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

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

/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) のマニュアルページを参照してください。

たとえば、この global-options には、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 ファイルの例を示します。

使用例 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 の定義方法についても決定します。たとえば、プロバイダは、internet とは、インターネットへのアクセスだけでなく、さまざまな IP サービスを意味するものと解釈する場合があります。

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 アクセスサーバーの 1 つのインタフェース上で提供されるサービスを記述します。/etc/ppp/pppoe. device には、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 Fileで示した /etc/ppp/pppoe ファイル オプションを使用できない点だけです。

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 ネットワークにアクセスできます。

使用例 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 オプションにより、サーバー名が、chap-secrets ファイルで使用される green-server に設定されます。nowildcard オプションは、green ネットワークの存在をクライアントに通知しないことを指定します。

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

使用例 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 ファイルを使用します。

使用例 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 ファイルを示します。

使用例 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 というクライアントだけがファイルにリストされていることに注意してください。

使用例 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 トンネルはダイアルアップリンクではありませんが、ほぼ同じような方法で構成され、操作されます。

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

/usr/lib/inet/pppoec ユーティリティーは、PPPoE トンネルのクライアント側をネゴシエーションします。pppoec は、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 ファイルは次のパラメータを必要とします。

  • sppptun – PPPoE トンネルが使用するシリアルデバイスの名前。

  • plugin pppoe.sopppdpppoe.so 共有オブジェクトをロードするように指示します。

  • connect "/usr/lib/inet/pppoec device" – 接続を開始します。次に、connect は PPPoE に plumb されているインタフェース device を介して pppoec ユーティリティーを起動します。

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

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

使用例 10  リモートアクセスサーバーを定義するための /etc/ppp/peers/peer-name
# cat /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 に指示します。リンクがシステムのインターネットへのリンクである場合、これは PPoE クライアントに該当し、/etc/ppp/peers/peer-name 内に defaultroute を含める必要があります。