[Japanese|English]

ADSLを始めたこと

背景情報

私が加入しているのは、東京めたりっく通信の「Single コース」と称する、ADSL によるインターネット接続サービスです。プロバイダの説明によると、Single コースでは、以下のようなサービスが提供されます。

ここでポイントは「1 台のパソコン」とか「専用ソフトウェア」という部分の「意味」でしょう。FAQ などから間接的に理解されるところによると、東京めたりっく通信の場合、これは「ルール」ではなく、サポート範囲を示すものです。つまり、「1 台のパソコンを、TMインターネットメガアクセス」を使って接続した場合だけがサポート対象で、その他の形態は「やってもいいが、うまく行かなくても責任は持たない」つまり「勝手にやるならどうぞ」というスタンスと考えられます。

そこで、FreeBSD でルーティングという、サポート範囲から言うと「箸にも棒にもかからない」ことをやっても、別に構わないということになります。

目指したもの

一応、目標はこんな感じです。まぁ、だいたい実現できていると思います。

なぜ FreeBSD で NAT ルータか

なぜ「Family コース」にしなかったか

東京めたりっく通信では、家庭内に LAN を用意して、複数台のパソコンを繋ぐための標準のサービスメニューとして「Family コース」が提供されています。私が選択した「Single コース」と違い「Family コース」では、ADSL ルータが提供され、複数台のパソコンの接続がサポートされます。しかし、私の場合、この選択肢はほとんど眼中にありませんでした。理由は次のようなものです。

ところで、申し込んだ時点では気づいていませんでしたが、「Family コース」は予想以上に自由度が低いようで、WWW で検索してみると、実際のユーザからの文句が多数みつかります。配布される ADSL ルータの (設定の) 問題点として、例えば、以下のような点が指摘されています。

そして、これに加えて多くのパワーユーザーたちの反発を買っている最大のポイントは、

ということでしょうか。常識で考えて、この種の IP の設定が変更できない製品なんて市販されるはずがない (実際変更できる) んで、管理コンソールにログインできればあとはなんとでもなるだろうと思うのだが、パスワードを教えてもらえないのでできない、頼んでも設定を変えてもくれない、というのは、腕に自信のある人にはなんともイライラする状況でしょう。

と、いうことで、結果論ですが「Single コース」にしたのは正解だったな、と思っています。

その後、東京めたりっく通信ではSingleコースの募集が停止され、個人向けのサービスはFamilyコースだけになってしまいました。ただし、Familyコースで提供されるADSLルータの設定が変更できるようにもなりました。

なぜ FreeBSD か

DOS/Win32 (Windows 95/98/Me) をインターネットに直結して常時接続なんて、(私には) とても恐くてできない。論外。(Microsoft には、別の言い分があるかも知れない。)

Windows NT/2000 なら、まぁいいのだが、以下の理由により除外

FreeBSD なら安いし、クライアントのランセンスなんて言われないし、とりあえず Windows 系よりは使いなれているし、なんと言ってもソースがあって中身が分かってるので、イザとなればなんとでもなる。そういう判断で FreeBSD にしました。

(私は過去の経緯で FreeBSD ですけど、たぶん、21 世紀初頭の定番は、Linux なんでしょう。)

ハマった点

インターフェースのメディアを固定する

本当のことを言うと、幸いにして私はハマりませんでしたが、一応書いておきます。

ADSL モデム (またはケーブルモデム) のイーサネットインターフェースっていうのは、大抵デキが悪いということになっています。特に、速度検出がうまく動作しないという報告が多いようです。

全然通信できない、または、なんとなく通信できるけど不安定という場合は、とりあえず、FreeBSD 側の設定で、10Mbps 固定、半二重固定にしてみるといいようです。一部の古いネットワークカードと古いネットワークドライバの組合せの場合を除いて、FreeBSD では、ifconfigmedia オプションで固定に設定できます。具体的には、/etc/rc.conf で、以下のように指定すればいいでしょう。

ifconfig_sis1="up media 10baseT/UTP"

ただし、sis1 の部分は、実際に使用するインターフェースの名前にします。

インターフェースを UP させる

不思議なことに (それとも、当然なのか?)、私の場合は、ppp を起動する前に ifconfig を用いてインターフェースを up させておかないと、エラーになって通信できませんでした。FreeBSD で PPPoE を設定するという話題はいくつかありますが、予め UP させるという記述は見たことがありません。ひょっとすると、これは、sis ドライバに固有の問題かも知れません。なんであれ、上で示した ifconfig_sis1 の設定は、この事情を反映して up を含めてあります。

MTU

PPPoE では、MTU の値が一般的な 1500 よりも小さいため、問題を起こすことがあります。実際、私のところでも、問題になりました。これについては、別のページで説明しています

DNS

東京めたりっく通信の「設定方法」というドキュメントを見ても、DNS サーバのアドレスが明記されていません。DNS サーバのアドレスは、PPP (PPPoE) によって自動設定される、ということになっています。実際、DNS サーバのアドレスが通知されています。

実は、私の環境では、ルータ機上で named も動かしていおり、LAN に繋がった他のマシンはルータに問い合わせるように設定してあります。このため、named が PPPoE によって通知された DNS サーバに問い合わせるようにしたいわけです。ところが、ppp コマンドには、/etc/resolv.conf を書き換える機能はあっても、/etc/named/named.conf を書き換える機能はありません。一瞬、ppp を改造することも考えましたが、named.conf の構文は resolv.conf に比べると著しく複雑なため、簡単にはできません。

これは、よく考えると PPPoE に固有ではなく、ダイアルアップでも状況は同じです。たまたま私が従来使っていたプロバイダが、固定の DNS サーバのアドレスを公表していたため問題にならなかったに過ぎません。そこで、世間一般ではどうしているのかを調べたのですが、よくわかりませんでした。

結局、現在は、予め PPPoE で通知される DNS サーバのアドレスを調べて、これを named.confforwarders に直接書き込むという方法で対処しています。実は、別のアドレスが通知されることがあるかも知れませんが、この named.conf では forward only を指定していないため、最悪、ルートサーバから自力で問い合わせるため、これでいいことにしています。何かもっとうまい方法があれば教えていただきたいと思っています。