FreeBSD QandA 344
Q. ppp(8) を利用して PPP 接続を行ったところ、 接続は出来て ping も通る
のですが、 telnet hostname とすると 'unknown host' というエラーが返っ
てきて、接続出来ないのですが?
A. ホスト名から IP アドレスが取得できないようです。/etc/ppp/ppp.conf の
該当セクションに、
enable dns
の一行を加えてください。これにより、ISP の DNS サーバを自動的に参照す
るように、/etc/resolv.conf が設定されます。ただし、最近では少ないと思
いますが、ISP の PPP サーバがこれらの情報を返してくれない場合、こちら
の設定で対処するしかありません。これについては後述します。
もし、ローカルで DNS サーバが動作していて、PPP に接続していないときは
ローカルの DNS サーバを参照する必要があれば、/etc/ppp/ppp.linkdown の
該当セクションに、
resolv restore
を追加します。もし設定ファイル自体がなければ作成してください。
/usr/share/examples/ppp/ 以下にインストールされたサンプルが参考になる
でしょう。
上記の方法が使えない場合、または FreeBSD 2.2.7-RELEASE 以前では、少々
原始的な方法を取らざるを得ません。/etc/resolv.conf に、
nameserver 192.168.1.2 192.168.2.3
などのように DNS サーバの IP アドレスを並べます。最大 3 つまで書けます
が、もし一番目のサーバが問い合わせに答えなければ、順にあとの DNS サー
バへの問い合わせを行います。接続先が ISP なら、契約時に DNS サーバの
IP アドレスを教えてもらったはずなので、その IP アドレスを書けばよいで
す。それ以外の環境ではそのサイトの管理者に問い合わせてください。詳しい
書式は man ページの resolv.conf(5) を参照してください。
FreeBSD でホスト名の解決を行うには、/etc/hosts データベース、DNS といっ
た順でホスト名から IP アドレスを検索します (2.2.7-RELEASE 以前は逆でした。
詳しくは /etc/host.conf を参照)。このうち、/etc/hosts には IP アドレスと
ホスト名が一覧されていますが、当然のことながら世界中のホストについて列
挙することは不可能です。このため、/etc/hosts でホスト名が見付からない
場合、DNS への問い合わせを行うのですが、この際どこに問い合わせれば良い
かを指定するのが /etc/resolv.conf です。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。