既に述べてきたように、PPP サーバを設定する方法はいくつもあります。ここ で紹介するのは(Cyclades のマルチポートシリアルカードを使って)私が使っ ている方法で、電話回線は一つの番号に複数の回線が接続するロータリーダイ アル式になっています。
ここで紹介した方法がお気に召さなければ、ぜひ自分流の方法でやってみてく ださい。この HOWTO の将来のバージョンではいろいろな設定方法を紹介しよ うと思っているので、コメントや試した方法について教えてください。
ここで説明するのは Linux を PPP サーバとして設定する話のみで、特別なター ミナルサーバについての説明などは(一切)するつもりはありません。
また、私は shadow password を試したことがありません(いつかやってみたい のですが)。ですから、以下に説明する話は shadow password 環境については 一切あてはまりません。
今までに述べてきたカーネルのコンパイルやカーネルのバージョンと pppd の バージョンの問題全てがあてはまります。この章では今までに述べてきたこと 全てに目を通されたものとして話を進めます。
PPP サーバ用にはカーネルに IP forward機能を組みこむことが必須です。必要ならばその他の機能(例えば IP ファイアウォールや IP アカ ウンティングなど)も組みこんでください。
マルチポートシリアルカードを使う場合、必要なドライバを組みこむのを忘れ ないように。
電話回線を経由して PPP(と SLIP)で接続してくるユーザ用にユーザアカウン トとシェルアカウントをユーザ名/パスワードのペアを使って提供します。こ うしておけば(我々にとって有利なことに)ユーザが必要になるのは一つのアカ ウントのみで、そのアカウントで全ての接続を行うことになります。
私たちは教育機関の人間で、スタッフや学生のアクセスに課金しません。です から、接続時間の管理や接続料の請求には煩わされないことにします。
インターネットと私たちのサイトの間にはファイアウォールを設け、ファイア ウォール内部へ電話回線経由でアクセスしてくるユーザが外部へアクセスする のを制限します(実際には内部にもいくつかファイアウォールがあるのですが、 それらについては必要ないので触れません)
ユーザが PPP で接続してくる手順としては(もちろん有効なアカウントを持っ たユーザです):
ppp
コマンドを使ってサーバの PPP を起動
サーバはそれぞれの/etc/ppp/options.ttyXX
ファイルを使って、そ
れぞれのポートごとに異なる IP 番号を接続先にセットします(接続する側か
らすると動的な IP 割りあてになります)。サーバは接続してくるクライアン
トに proxyarp ルーティングを使って経路を作ります(pppd のオプションで指
定します)。こうしておけば routed や gated は不要になります。
ユーザが接続を切った場合、pppd が接続断を認識してモデムに回線を切るよ うに命じ、同時に PPP 接続も終了するようにします。
以下のようなソフトウェアが必要です。
PPP サーバを設定する前に Linux が正しく電話を受けられることを確認して おいてください。
この HOWTO ではその部分は扱いません。選んだ getty のドキュメントや serial HOWTO を御覧ください。
/etc/ppp/options
には全てのポートに共通するオプションを設定し
ます。私たちが使っているオプションは:
asyncmap 0 netmask 255.255.254.0 proxyarp lock crtscts modem
注意 - 私たちは(明示的に)経路を指定していません - 加えてデフォルトルート オプションも指定していません。なぜなら、(PPP サーバにとって)必要な機能 は ppp クライアントからのパケットを LAN/Internet へ送りだし、 LAN/Internet からのパケットをクライアントへ送りだすことだけだか らです。
このために必要なのはクラアントマシンへのホストとしての経路とpppd に与 える 'proxyarp' オプションだけです。
proxyarp オプションを指定すると(驚くべきことに) PPP サーバの arp テー ブルに「PPP クライアント宛てのパケットは全て私に送って」という意味にな るエントリが作成されます。これが一台の PPP クライアントへの経路を作る もっとも簡単な方法です。しかしながら、この方法では 2 つの LAN を結びつ けることはできません。そのためには proxy arp ではなく正しくネットワー クルートを定義してやる必要があります。
電話回線経由で接続してくるユーザに動的に IP アドレスを割りあてるために
は、ポートごとに IP 番号を割りあてておきます。そのためには
/etc/ppp/options.ttyXX
をポートごとに作っておきます。
このファイルにはローカル(サーバ側)の IP 番号とそのポートに割りあてる IP 番号を記述しておきます。例えば:
kepler:slip01
このファイルには有効なホスト名を指定できることに注意してください(私の 憶えている IP 番号は本当に核となるマシンとネットワークデバイスのみでし た。ホスト名は数字よりも意味があるので記憶しやすいでしょう)。
ppp 接続を開始する際にはカーネルのデバイス(ネットワークインターフェイ ス)を設定し、カーネルのルーティングテーブルを操作しなければいけません ので、ルート権限が必要になります。
幸いなことに、pppd は uid を root にしても「安全」なようにデザインされ ているので、
chmod u+s /usr/sbin/pppd
しておきます。
このファイルを ls -l すると次のように表示されます。
-rwsr-xr-x 1 root root 74224 Apr 28 07:17 /usr/sbin/pppd
こうなっていないとユーザが ppp 接続を開始することができません。
接続してくるユーザに分りやすいように、/etc/bashrc
にエイリアスを
設定して、ログインすれば一つのコマンドだけで ppp を起動できるようにし
ておきましょう。
私たちはこういうエイリアスを作っています。
alias ppp="exec /usr/sbin/pppd -detach"
このエイリアスの意味は
6:24pm up 3 days, 7:00, 4 users, load average: 0.05, 0.03, 0.00 User tty login@ idle JCPU PCPU what hartr ttyC0 3:05am 9:14 -
これでお終い。初めに言った通り、単純で基本的な PPP サーバシステムが出 来上がりました。