IP アドレスを含む Hostaliases ファイル

IP アドレスを含む Hostaliases ファイル

環境変数を使用すると、HOSTALIASESユーザーはこれを行うことなく自分のホストエイリアスを設定できますsudoedit /etc/hosts(詳細は、たとえばhttp://blog.tremily.us/posts/HOSTALIASES/)

ただし、/etc/hostsIPアドレスを名前でエイリアスを指定でき、名前を名前でエイリアスを指定できますが、名前エイリアスのみが機能しているようHOSTALIASESです。

私は試した:

cat > .hosts
work 10.10.0.1
g www.google.com
^D
export HOSTALIASES=$PWD/.hosts

curl g #works 
curl 10.10.0.1 #works
curl work #doesn't work

curl work書き込み権限のないファイル()を編集せずに作業を完了できますか/etc/hosts

答え1

HOSTALIASESこの機能はglibcのパーサ関数によって提供されますgethostbyname()。この関数は、エイリアス照会の結果hosts:がで指定された後続のlibnssモジュール呼び出しに変更なしで渡されるため、/etc/nsswitch.confそれを処理できるモジュールがないとgethostbyname()失敗します。

10.10.0.1ほとんどのプログラムでは、以前に処理された数値アドレス記号(たとえば、および)が呼び出されます。2a00:1450:400c:c05::67inet_aton() inet_pton() getaddrinfo()gethostbyname()

一部のDNSサーバー(dnsmasqを含む)は、数値アドレス文字列が適用されたクエリに有効なアドレスレコードを返しますinet_aton()。たとえば、10.10.0.1FQDNを含むクエリのAレコードを返します10.10.0.1.。ただし、BINDを含む他のサーバーは、そのようなクエリに対してNXDOMAINのみを返します。したがって、work 10.10.0.1代替品HOSTALIASESを定義するためにこれに頼ることはできません/etc/hosts

1つの可能な解決策は、パブリックDNSサービスを利用することです。xip.ioすべてのIPv4アドレスの確認可能なFQDNを取得します。たとえば、work次のように定義できます10.10.0.1

work 10.10.0.1.xip.io

関連情報