ホストの確認アドレスを変更するには、/ 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を補完するためにユーザー固有のホストファイルを作成できますか?、HOSTALIASESの使い方を説明します。
デフォルトでは、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を実行できます。