ルートアクセスなしで/ etc / hostsに書き込むのと同様に、オーバーライドDNSを作成できますか


48

ブラウザで使用するDNSレコードを設定したいのですが、ルートアクセス権がないため、変更できません/etc/hosts。dnsがまだセットアップされていないapacheでvhostをテストするためにこれを行う必要があります。firefoxとchromeにアクセスできるので、それを促進できるプラグインがあれば。または他のオプションが役立ちます。

更新: DNSをオーバーライドする代わりに、おそらくHTTPヘッダーを変更します。正しいヘッダーがapacheに送信された場合、正しいコンテンツが返されます。


1
最後の行は不明瞭です。また、これはSFにもっと適合しませんか?
シェパン

@tshepang ...いいえ、Linuxデスクトップでこれを行う必要があるのですか?
-xenoterracide

1
まだそれほど明確ではありません。「または他のオプションが役立つ」とはどういう意味ですか?推測させないでください。
シェパン

3
@tshepang探しているものがわからない...なぜ私が尋ねるのか知っていたら?私が検討していないオプションがあるかもしれません。Apache仮想ホスト、http、およびDNSがどのように連携するかを説明するように求めているように感じます。
xenoterracide

あなたはこれを探していると思う:unix.stackexchange.com/a/104511/135943-
ワイルドカード

回答:


65

テスト目的で修正されたDNS解決を使用してプログラムを実行する方法を探していました。私にとって、ソリューションはHOSTALIASES環境変数を使用していました:

$ echo "foo www.google.com" >> ~/.hosts
$ HOSTALIASES=~/.hosts wget foo

をご覧くださいhostname(7)

(補足:この例では、HOSTALIASES環境変数はwgetプロセスにのみ影響します。もちろん、export HOSTALIASES現在のシェルのすべてのサブプロセスに対して環境変数を有効にすることができます。)


1
本当にこれは+ 10kのようになりますが、残念ながら+1しか与えられません
xenoterracide

同意する!+ 10k !!
アンデルス・ハンソン

3
どうもありがとう!exportほとんどの場合、例は先頭に追加する必要がありますexport HOSTALIASES=~/.hosts
エセキエル・garzon

8
ホストのエイリアスのみをサポートし、IPはサポートしていないようです。
netawater

Windowsにも同じソリューションがありますか?
アクセプター

10

libc関数のラッパーを作成してホスト名を解決し、/ etc / hostsとは異なるファイルでそれらを検索できます。次に、hostsファイルを使用するアプリケーションを実行します

LD_PRELOAD=wrapper.so firefox

4
最も有効、開口部のリダイレクトあなたのラッパーを作る/etc/nsswitch.conf~/.nsswitch.confし、作る~/.nsswitch.confあなたのDNSデータベースを照会しています。
ジル 'SO-悪であるのをやめる'

6

これを行う最善の方法は、SOCKS5プロキシを設定し、firefoxにSOCKS5プロキシ(network.proxy.socks_remote_dns)を介してDNS要求を送信するよう指示することだと思います。opensshを使用してsocks5プロキシをかなり簡単にセットアップし(-Dオプション)、カスタムの/ etc / hosts、またはより複雑なDNS設定用のDNSMasqなどでリモートホストを実行できます。ただし、事実上、これはDNS設定の構成をシステム全体に変更できるシステムにプッシュすることです。


私たちがsshするのをブロックするために
構築

5

スーパーユーザーで次の質問を確認してください。

https://superuser.com/questions/184643/override-dns-in-firefox

議論されたオプションとSOリンクが実行可能なソリューションではない場合は、チェックアウトしてください。

https://superuser.com/questions/100239/hostname-override-in-firefox

特にチェックアウト:

https://addons.mozilla.org/en-US/firefox/addon/redirector/

このアドオンが役立つように思えますが、実際の実装に依存しています。


残念ながら、その質問のopによく似ていますが、これらはどれも実行可能とは思えません。
xenoterracide

@xenoterracide-回答を更新しました-リダイレクタアドオンはオプションですか?
maxschlepzig

言葉遣いからそうは思わない..本当に必要なのは、送信されるHTTPヘッダーを変更することです...ホストを使用してハッキングする代替オプションとして
-xenoterracide

SOソリューション(TamperData)を調べましたが、その中でホストを変更する方法がわかりませんでした。ライブhttpヘッダーの事で本当にヘッダーを変更できるのか、それはビューアーだと言っています。
xenoterracide

SOの少し下にリストされているModify Headers拡張が機能すると思います... Hostホスト名を使用する場合...その中...まだテストされていません...それを使用している破壊サイトの外で。
xenoterracide

2

仮想ホストをテストするには、FirefoxでApacheサーバーをプロキシとして設定します。入力した名前はApacheに転送されます。これにより他のサイトの閲覧が中​​断されるため、完了したらプロキシを元に戻します。


0

数週間ごとにIPを変更し続けるサーバーには、ssh、scpなどにも同様のものが必要でした(そして、ITにはホストの設定に数週間の遅延があります)。私はこのサーバーの特別な変数を使用してそれを解決しました:export FOO='131.227.aaa.bbbそれから私はちょうどそれを行うことができssh bar@$FOO~/.bashrcそれが変わるたびにIPを変更します...


-2

不運ではない、あなたはあなた自身のインターネットブラウザを書くことを除いて、できません。

いくつかのテストを行う必要がある場合、仮想マシンでも実際のテストマシンでもテストマシンが必要です。そのため、開発環境をどのように配置できるかをUnix管理者(またはホスティングプロバイダー)に尋ねる必要があります。

また、PCにVMをインストールし、Linuxディストリビューション、Apacheをインストールして、変更をテストすることもできます(見た目ほど難しくありません)

更新

説明をわかりやすくするために、各アプリケーションは標準ライブラリを使用して記述されているため、低レベルのライブラリやgethostbyname()などの関数を書き換える必要はありません。

これらの関数は通常、ファイル(/ etc / hosts)およびDNSを使用するように設定されているため、不幸なことに、ブラウザが/ etc / hostsに設定されている名前よりも名前を解決する必要がある場合、あまり多くの選択肢はありません。

  1. 独自のDNSサーバーをセットアップし、/ etc / resolve.confを変更するルート権限を持っている人に尋ねることができます
  2. DeleGateなどのプロキシサーバーをインストールし、VirtualHostにいくつかのルールを設定できます。
  3. その顧客ホストのsudo権限を尋ねる
  4. 接続をテストするために使用しているアプリケーションの動作を変更します(ブラウザーを推測します)。たとえば、https://addons.mozilla.org/en-US/firefox/addon/switchhosts/

4
-1言葉遣いが乏しく、愛顧的。私はホスティングプロバイダーであり、テストする必要があるのは、サーバー上のいまいましい顧客サイトです。私たちには管理者アクセス権のないネットワークブートLinuxがあり、その上でVMをブートできるとは思いません。
-xenoterracide

@xenoterracideと言っても過言ではありません。SOCKETの作成方法を変更することを除いて、あなたが求めていることは実際には不可能です。
tmow

1
@xenoterracideところで、気分を害するつもりはありませんでした。
tmow

ホスティングプロバイダーと同様に...私は実際に「sudo権限」を持っています。すべてのボックスに本当のルートがあり、デスクトップ(アイロール)を除くすべてに完全にアクセスできますが、ネームサーバーをまだ変更したくない場合は..私はそれを助けることはできません...
xenoterracide

1
LD_PRELOADを使用すると、特定の「低レベル」機能を「オーバーライド」して、必要なことを実行できます。上のあなた自身の「/ etc / hostsの」に関するプログラム告げるopen()と限りコードの動的ロードがinvovledされると、他の低レベルのコール...(.soは)
アキラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.