/etc/hostsファイルの代わりに・・・

2002/5/27更新 /etc/hostsを優先的に参照させる方法がわかりました! ここをクリック

     

今回は/etc/hostsファイルについて書こうと思います。UNIXユーザーならご存知のとおり/etc/hostsはIPアドレス対ホスト名の静的なマッピングファイルです。ここにIPアドレスとホスト名を記述しておけばホストを指定する際にIPアドレスを使わずに済むということです。例えば/etc/hostsに
200.200.200.200  www.hogeohoge.com
100.100.100.100  server
などと書いておけばpingを打つ際に
ping www.hogehoge.com
ping server
とホスト名で指定できます。www.hogehoge.comのようなFQDNはDNSサーバーが名前解決してくれるのであまり使うことは無いと思いますが、小規模なLAN(例えばうち)でしょっちゅうssh、ping、ftp、scpする時に毎回192.168.〜〜と打つのは結構面倒なものです。我が家はゲートウェイマシン兼色々サーバーにLinuxサーバーを使っているのでMacOSXのターミナルからも「ping linux」のように省略して打ちたいと考えていました。が、理由は知りませんがMacOSXでは/etc/hostsを編集してもホスト名を認識してくれません。

[localhost:~] root# cat /etc/hosts
127.0.0.1 localhost
192.168.1.254 linux  <<これ
255.255.255.255 broadcasthost

として

[localhost:~] root# ping linux
ping: unknown host linux
「そんなホストは知らん」と言われます。ずーっと解決策が分からないままで、最終的にはDNSサーバーをLinuxで動かそうか考えていたのですがついに解決策がわかりました。多分これはNetInfo系を知っている人にとっては常識だと思うんですが検索してもなかなか見つからなかったのでこの機会に解説します。

まずは/Application/Utilities/NetInfo Managerを立ち上げます。うさん臭いFinderみたいなのが立ち上がり色々なオブジェクトがありますが今回必要なのは/machinesの部分だけです。素ユーザーでログインしている場合はroot権限を得るためにドメイン>セキュリティ>認証を選びパスワードを入力します。
次に/machinesを選択した状態でディレクトリ>から新規のサブディレクトリを選びます。このディレクトリにプロパティを追加していきます。
「new_directory」というのが出来るので下のプロパティシートの「name」の値にに登録したいホスト名を入れます。うちの場合は「linux」でやっています。
「新規のプロパティ」を選び新しいオブジェクトを追加します。プロパティの名前を「ip_address」にして、値を入れるためにそのオブジェクトを選択した状態で「値の挿入」を選びます。
値にはそのホストのIPアドレスを追加します。

別のディレクトリをクリックしたりアプリを終了しようとするとNetInfoデーターベースに保存していいかと訪ねられますのでOKを選びます。

これで作業は終わりです。ためしにpingを打ってみましょう。
[localhost:~] root# ping linux
PING linux (192.168.1.254): 56 data bytes
64 bytes from 192.168.1.254: icmp_seq=1 ttl=255 time=0.58 ms
ばっちり。

作業が面倒なので/etc/hostsでも出来るようにして欲しいのですよね。技術的なことはあまりわからないのですがこれくらいできそうですよねぇ・・・どうなんでしょ?
ちなみにシングルユーザーモードであれば/etc/hostsを認識してくれるという話を聞いたことがあります。

あとコマンドからであればsudo niload hosts . < [filename] でもいいらしいです。これを/etc/hostsにすりゃばっちりだと思う。


掲示板でsuzukureさんに教えていただいた情報です。どうもありがとうございます。そのままコピペで・・・

以下の方法で キャッシュ→NetInfo設定→/etc/hosts→DNS→NISの順で名前解決させることができるようになると思います。

1.NetInfo Managerで以下のディレクトリを作ります。
/locations/lookupd/hosts

2.そこに LookupOrder というプロパティを作成します。

3.以下のようになるように値を追加していきます。

プロパティ
LookupOrder CacheAgent
  NIAgent
  FFAgent
  DNSAgent
  NILAgent

4.netinfodとlookupdをSIGHUPします。

未検証です・・・

分からない点があれば掲示板に書き込んでみてください。

34513 Hits

戻る