環境変数を使用すると、HOSTALIASES
ユーザーはこれを行うことなく自分のホストエイリアスを設定できますsudoedit
/etc/hosts
(詳細は、たとえばhttp://blog.tremily.us/posts/HOSTALIASES/)
ただし、/etc/hosts
IPアドレスを名前でエイリアスを指定でき、名前を名前でエイリアスを指定できますが、名前エイリアスのみが機能しているよう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::67
inet_aton()
inet_pton()
getaddrinfo()
gethostbyname()
一部のDNSサーバー(dnsmasqを含む)は、数値アドレス文字列が適用されたクエリに有効なアドレスレコードを返しますinet_aton()
。たとえば、10.10.0.1
FQDNを含むクエリの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