1 つのコマンドのホスト解決設定?

1 つのコマンドのホスト解決設定?

ホストの解決されたアドレスを変更するには、/etc/hostsを変更します。/etc/hostsを 実際
に変更せずに単一のスクリプトを実行するときにその機能を使用したいと思います。

$HOST=foo.bar:10.0.1.256 ping foo.bar

/etc/hostsにエントリがあるのと同じで 10.0.1.256 foo.bar
$ ping foo.bar

これは実行可能でしょうか?

答え1

重複/etc/hosts を補完するユーザー固有の hosts ファイルを作成できますか?HOSTALIASES の使用について説明しています。

基本的には、独自の hosts ファイルを指す HOSTALIASES 環境変数を設定します。

詳細はホスト名(7) マニュアルページ

答え2

ユーザー ホスト ファイルはありません。複雑なバインド設定により、アプリケーションを別の内部 IP の背後でホストできますが、アプリケーションは DNS をスキップできる必要があります。

http/https 呼び出しを行うアプリケーションでこれを実行する場合は、DNS を完全にスキップできます。http 要求を行うと、ドメインがヘッダーにコピーされます。ヘッダーをオーバーライドすることで、この手順をスキップできます...

例えば;

wget --header="ホスト: www.example.com" "http://127.0.0.1/bob/is/cool

これにより、http 要求が localhost に送信されますが、http 要求は 127.0.0.1 ではなく www.example.com に対して送信されます。

(DNS をバイパスし、正しいドメインに対して有効な http 呼び出しを実行しました)。

何らかの理由で、リクエストにホストのような識別子がない代替 TCP サービスである場合は、クレイジー バインド設定が機能します (アプリケーションの src IP を拒否すると、別の DNS サービスで解決されます)。

別の解決策としては、カーネル ファイアウォールを使用することです...

アプリケーションを別の LAN またはループバック アドレスに分割すると、ソース パケット アドレスに基づいて別の IP に DNAT できるようになります...

関連情報