ユーザーごとに、つまりファイル/etc/hosts
でホストエイリアス(/home/user/.hosts
など)を定義する方法はありますか?
私の主な目的は、小さなLAN内のマシン間でrsyncを介してホストエイリアスを簡単に共有することです。常に確実に接続されるマシンはないので、DNSサーバーはオプションではありません(そうですか?)。
ありがとうございました。
より良い解決策は、Avahiとlibnss-mdnsをインストールしてから、HOSTNAME.local
アドレスを使用することです。
これらの名前はユーザーごとではありませんが、LAN上のすべてのマシンに共通の名前を付けるという指定された目的を解決します。
要求どおりの操作を行う方法については、 https://github.com/figiel/hosts を参照してください。
これは、LD_PRELOADを介してロードされ、プログラムがDNS解決に使用するgethostbyname()およびいくつかの関連関数をオーバーライドする小さなライブラリーです。それは私にはうまくいきます。私が見つけた唯一の警告は、Chrome WebブラウザはネイティブDNS解決を使用せず、代わりに独自のDNSクライアントを実装することです。その問題を解決するには、 ChromeのDNSクライアントを無効にします 。
Linuxのglibc実装ではそれができません。
しかし、あなたはそれができるnssライブラリでそれを拡張することができました。のnss_filesディレクトリにあるlibcの関連部分を取り去ることができるため、これは簡単に記述できます。
http://ftp.gnu.org/gnu/glibc/glibc-2.5.tar.bz2
例えば
ただし、これは標準的ではない、奇妙なことです。
ほとんどの場合稼働する2台のマシンがある場合、それぞれにBINDを立ち上げてDNSサーバーにするか、またはこれらの1台を取得します( http://www.marvell.com/ products/embedded_processors/developer/kirkwood/sheevaplug.jsp )。
その上でBINDを使用して、常にDNSを提供します。
このページの他の回答で説明されているように、同様の機能を実現する方法はいくつかありますが、
いいえ、/etc/hosts
のような「ユーザーごとの」ファイルや、GNU/Linuxの非特権ユーザーとしてデフォルトの名前解決をオーバーライドする他の方法はありません。