ダイアルアップ接続への道(FreeBSD編)
IIJ-PPP版

Office:greg@apt.fxis.fujixerox.co.jp
Home:greg@greg.rim.or.jp
last modified 1995/08/25
現在、工事中です。
御意見/要望などがありましたら上記アドレスまで御連絡下さい。

1 はじめに

 今日、私達を取り巻く環境の中に「インターネット」と言う単語が 多くなって来ています。そんな中、自分も利用/接続してみたいと考 えている人も増えて来ていると思います。

 従来は利用したい/接続したいと考えても限られた人/機関しか 利用できませんでした。しかし、今日ではIIJ等に代表されるインター ネットプロパダイバが登場し、個人でも接続できるようになりました。 これはこれで喜ばしい事ではあるのですが、接続するための敷居と言う物は NIFTYなどに代表されるパソコン通信と違ってなかなか高いようです。しかし、 それは

「接続するためのノウハウが入手しづらい」
「近くに接続経験を持った人がいない」

と言う事が原因のようなきがします。たしかにパソコン通信に比べると、 多少多くの知識を要求されるかも知れません。しかし、一つ一つの事は決して 難しい事ではありません。一つ一つこなしてゆけばいいのです。その先には きっと明るいインターネットへの道が開けているでしょう!


2 接続方法の決定まで

 では、インターネットへ接続するためのお話しにはいりましょう。 まず、インターネットへ接続する回線と方法を決定しなければなり ません。私が考えただけでも以下のようなものが考えられます。


 個人的にインターネットへ接続する事を前提としているので、 専用線を使うようなコストがかかる方法は取れません(お金持ち な人はトライしてください)。ということで、一般電話回線か ISDNを利用する事になります。
 次に、接続するためにどの様な方法を取るかです。私の場合、 以下のような理由でダイアルアップPPP接続を選択しました。

  1. とりあえず、お金がかからない方法である事。
  2. IPでの対外接続をしてみたかった

で、FreeBSD 2.0以降でPPPを使用する場合、

  1. pppd 2.0.4を使用する。
  2. IIJ-PPPを使用する。

の2つの選択肢があります。以前はpppd 2.0.4を使用していましたが、 現在はIIJ-PPPを使用しています。
pppd 2.0.4を使用したい人は こっち を見て下さい。

3 どの様なシステムを使うか

 まず、貴方はどのようなシステムでインターネットへ接続しよう としているでしょうか?私の場合、IBM-PCの上でFreeBSD2.0.5Rを 走らせ、ダイアルアップPPPで接続しています。貴方のシステムが 私のシステムと違っているからといって、接続できないなんて 考えないでください。現在ではほとんどのシステムでPPPを 利用できるのです。もし私の場合と違っている場合でも、 同じような点をクリアしてゆけば必ず接続できます。

4 下準備

 接続方法が「一般電話回線を利用したダイアルアップPPP接続」 と決定した所で、一つチェックしなければなりません。 それは、「貴方が接続先を確保しているか?」ということです。 持っているなら、次の章は不要です。 読み飛ばしてください

5 接続先の確保

 まず始めに、接続先の確保です。最近は個人を対象にしたプロパダイバが 簡単に見付かるので、苦労する事は無いと思います。 とりあえず、申し込んで下さい。私が知っている限り、以下のような所が サービスを提供しているようです。


6 準備するソフトウェアについて

 貴方がFreeBSDを使っている場合(NetBSDも同様のはずです)、 特に用意するべき物はありません。強いて言えばカーネルにトンネリング デバイスのコードを入れ忘れない事です。入れていない場合は以下のような 行をコンフィグレーションファイルに追加してリコンフィグして下さい。

pseudo-device	tun	2 

これで、準備はできました。後は実際に接続するだけです。


7 とりあえず、接続

 では、接続を行ってみましょう。接続するには以下の物が確保されて いなければなりません。

どうです?揃っていますか?揃っていない場合、 前の章に戻って揃えて下さい。 つぎに、IIJ-PPPのコンフィグレーションファイルを用意します。 内容は以下のようになるでしょう。

#
# Default setting
#
default:
	set device /dev/cuaa2
	set speed 38400
	set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATZ2 OK AT%K1 OK ATD\\T TIMEOUT 40 CONNECT"
	set timeout 180
	set login "TIMEOUT 5 login:-\\r-login: \\U word: \\P"
	disable lqr
	deny lqr
#
# For RIM-NET
#
<貴方の接続先の名前>:
	set phone <接続先の電話番号>
	set authname <あなたのユーザ名>
	set authkey <あなたのパスワード>
	set openmode active
	set login ""
	disable pred1

 スクリプトの「"ogin:"」「"asswd:"」の部分は接続先のシステムによって 違いがあるかも知れませんので、自分で書き換えて下さい。
また、正常に接続できた場合、IIJ-PPPは/etc/ppp/ppp.linkupと言うファイル を呼び出しますので、それを用意します。内容は以下の物程度でよいでしょう。

MYADDR:
	 add 0 0 HISADDR

用意できたら、コマンドラインから以下のように入れます。

% ppp <貴方の接続先の名前>

 入力すると、IIJ-PPPのプロンプトが以下のように出て来るはずです。

	ppp>

ここで、

	ppp> dial

と入力して下さい。すると、

	ppp> dial
	ppp> Packet mode
	ppp>
	PPP>
と出力されるかも知れません。これが正常な動作です。 接続されているかどうか、確認するにはnetstatコマンドを 使用してみるのも良いです。ルーティング情報を確認して、 外への経路が存在する事を確認して下さい。
 次に、本当にリンクが確立されているか確認して下さい。 確認する方法は以下のようにします。

% ping YY.YY.YY.YY

 これは、接続先のホストにICMP ECHOを送ってみて、相手のホストから 応答があるかどうかで接続が確立されているか確認する方法です。
 正常に、接続できていますか?出来たらこれで終りです。とくに何も する必要はありません。本来ならルーティングについて設定する所ですが、 /etc/ppp/ppp.linkupがデフォルト経路を設定してくれているので、必要 ありません。


8 各種関連事項について

 前の章までの作業で、IP接続そのものは出来ました。しかし、今のままでは 各ホストの情報を/etc/hostsに記述していなければなりません。そこで、 いくつか便利なものを設定しましょう。

8.1 resolverの設定

 リモートホストのIPアドレスを外部に問い合わせるために 設定する物です。必要が無い人は 読み飛ばして下さい。

 それでは、設定しましょう。まず、/etc/resolv.confという ファイルが存在しているかチェックして下さい。ありましたか? あった場合、貴方のマシンは既にresolverを使用している 可能性があります。nslookupと言うコマンドを起動してみて 下さい。プロンプトが帰って来ましたか?帰って来なかった 場合は設定ファイルを破棄して構わないでしょう。無かった 場合と同様の事を行って下さい。
無かった場合、resolv.confを作成します。内容は以下の ようになります。

domain		some.domain.name
nameserver	XX.XX.XX.XX
内容は貴方の接続先似合わせて書き換えて下さい。私の場合、 以下のようなものを使用しています。
domain		greg.rim.or.jp
nameserver	171.32.1.1
ここまでで来たら、nslookupコマンドで動作を確認して 下さい。とりあえず、以下のようにすれば良いでしょう。
% nslookup
Default Server:	foo.bar.some.domain
Address:	XX.XX.XX.XX

> ftp.iij.ad.jp
どうです。IPアドレスが表示されましたか?表示された場合、 DNSを使って外部のホストのIPアドレスを引く事が出来るよう になりました。

8.2 DNSの設定。

 もし、ローカルでBINDを走らせている場合、この項目は 必要無いかも知れません。貴方のサイトの管理者に相談 してみて下さい。その場合ここを 読み飛ばしてもかまいません。
では、独自にBINDを立ち上げる事を前提に説明します。始めに /etc/named.bootを作成します。詳しい設定はUNIXマガジン 等に譲として、私の設定をお見せします。
directory       /usr/Server/named

cache           .                       root.cache

; Zone
secondary       .                        192.244.176.54  backup/root
secondary       jp                       192.244.176.54  backup/jp
secondary       ad.jp                    192.244.176.54  backup/ad.jp
secondary       ac.jp                    192.244.176.54  backup/ac.jp
secondary       co.jp                    192.244.176.54  backup/co.jp
secondary       go.jp                    192.244.176.54  backup/go.jp
secondary       or.jp                    192.244.176.54  backup/or.jp
secondary       rim.or.jp                202.255.181.2   backup/rim.or.jp
primary         greg.rim.or.jp           greg.rim.or.jp.zone

; Reverse
secondary       ARPA                     192.244.176.54  backup/ARPA
secondary       181.255.202.IN-ADDR.ARPA 202.255.181.2   backup/181.255.202.IN-ADDR.ARPA
primary         172.IN-ADDR.ARPA         172.IN-ADDR.ARPA.rev
primary         31.172.IN-ADDR.ARPA      31.172.IN-ADDR.ARPA.rev
primary         1.31.172.IN-ADDR.ARPA    1.31.172.IN-ADDR.ARPA.rev
primary         0.0.127.IN-ADDR.ARPA     localhost.rev
本来、無闇やたらとセカンダリーサーバになるべき物 ではないのですが、ダイアルアップPPPで間欠的に接続 している関係上、無闇やたらとUnauthrized secondary にならなければなりません。理由はnslookupをデバッグ モードで立ち上げて、ローカルホストのIPアドレスを獲得 しようとしてみれば分かります。

まず、fooというホスト名をネームサーバを用いて検索 して見ましょう。

> foobar
;; res_mkquery(0, foo.bar.or.jp, 1, 1)
------------
Got answer:
    HEADER:
        opcode = QUERY, id = 14, rcode = NOERROR
        header flags:  response, auth. answer, want recursion, recursion avail.
        questions = 1,  answers = 1,  authority records = 0,  additional = 0

    QUESTIONS:
        foo.bar.or.jp, type = A, class = IN
    ANSWERS:
    ->  foo.bar.or.jp
        internet address = 172.31.1.1
        ttl = 3600 (1 hour)

------------
となります。これはこれで正しい動作です。しかし、 本来あるべき名前は

foo.bar.or.jp

なので、この名前で問い合わせて見るとホスト名は

foo.bar.or.jp.bar.or.jp

になります。このようなホスト名は存在しないので

# 問い合わせ文字列          問い合わせ先サーバ
foo.bar.or.jp.rim.or.jp  -> rim.or.jp
foo.bar.or.jp.or.jp      -> or.jp
foo.bar.or.jp.jp         -> jp
foo.bar.or.jp            -> bar.or.jp
のように、より上位のネームサーバに問い合わせを 行おうとします。この状態になった場合、タイムアウト を待たされます。また場合によっては挙げ句の果てに

host lookup fail

になります。

次に、PPPでリンクが確立されている事を確認した後、BINDを 立ち上げます。この時、起動に時間がかかるかも知れません が、気にしないで下さい。なお、私の設定の場合、BINDの プロセスサイズは1.4MB程度になりました。BINDが応答できる ようになったらnslookupコマンドできちんと動作しているか 確認して下さい。これで、BINDの立ち上げは終了です。


9 おまけ

9.1 telnet

 IP接続しようとしている人に取ってTELNETの説明は 必要無い気がしますがとりあえず(^_^;;
telnetはリモートサイトへログインする時に使用する コマンドです。

telnet remote.host.some.domain

と言うように使用します。第二引数は指定しなくても 構いません。

9.2 ftp

 これもtelnetと同じく、IP接続しようとしている人に 取って説明は必要無い気がしますがとりあえず(^_^;;;
ftpはリモートサイトとの間で、ファイル転送を行う コマンドです。

ftp remote.host.some.domain

と言うように使用します。

本来、ftpはリモートサイト上にアカウントがある事が前提 となるのですが、アカウントを必要としないで利用できる ケースも存在します。これを「匿名ftp(anonmouse-ftp)」 と言います。これはユーザ名に「ftp」パスワードに貴方の メールアカウント指定した物です。

9.3 WWWクライアント

 ダイアルアップPPPで接続しようとしている人の大部分は、 Mosic等のWWWクライアントを使用する事を前提としていると 思います。そこで、私がFreeBSD上で動作確認できたWWW クライアントをあげておきます。

  • Mosic
     OMRONなどにFreeBSD用のバイナリ があります。proxyサーバを使うには、多少 の小細工が必要でしたが、とくに問題はない ようです。
  • Netscape-1.1N
     日本語が表示できない/ペーストすると 落ちる以外はとくに問題はありません。
  • Chimera-1.5[14]jp
     多少、怪しげな動作をする時があります が、大体安定して動作しています。
  • Chimera-1.61jp
     オリジナルと同じように動作している ようですが、インラインイメージ関連が 不安定です。それ以外はまともに動作して います。
  • Lynx-jp
     1バイトコードのみを対象にすれば、 まともに動作するようです。

9.4 UUCPとの共存

 私の場合、メール/ニュースの配送にはUUCP、ftp/telnet の場合はPPPと、目的によって使い分けています。pppd 2.0.4 まではUUCPロックをかけてくれなかったのいろいろと行い ましたが、IIJ-PPPは平気です。気にしないで使って下さい。