ルート化されていないAndroidでホストからIPへのマッピングを設定する方法


10

パソコンでウェブサイトを実行していますが、Nexus 7タブレットでテストしたいと思います。つまり、ローカルWiFi LAN経由。名前付き仮想ホスティングを使用しているため、IPアドレスを入力すると接続されますが、間違ったWebサイトが表示されます。

したがって、私がしたいことはmysite.local、NexusのChrome / Firefoxに入力し、それを10.1.2.3(またはローカルIPアドレスが何であれ)変換してから、ホストとしてリクエストを送信する10.1.2.3サーバーを呼び出すことmysite.localです。

私の質問: Android 4.xタブレットには、/etc/hosts編集可能なファイルまたは同等のものがありますか?(タブレットなどをルート化する必要はありません。)

私のLinuxコンピュータでは、次の場所にエントリを追加してこれを行います/etc/hosts

10.1.2.3  mysite.local

(またはWindows\System32\drivers\etc\hosts、Windowsマシンでも同様です。)

ところで、これはIPアドレスのホスト名を手動で設定(つまり/ etc / hosts equiv。?)の半複製ですが、その質問はAndroid 2.2に関するものであり、明らかに不可能でした。(代替案の1つは、ローカルルーターでDNSを構成することを提案しましたが、私の知る限り、ルーターはローカルでDNSを実行しないため、そのオプションはありません。独自のDNSサーバーをセットアップして、これを実行できますが、それは大きな仕事のソリューションのように感じます。)


それはむしろサーバーフォールトスーパーユーザーのための質問です。また、これらのホスト名はローカルサーバー(DHCPサーバーからDNSノードとして提示される)で設定する必要があります。
イジー

1
@Izzy Izzyに感謝しますが、サーバーで/ etc / hostsを構成する方法を知っています。私がどうすればよいかわからないのは、Android 4.xタブレットで同等のものを検索/編集することです(または、ルート化しない同等のものがある場合でも)。(私のDHCPサーバー、つまりwifiルーターは、カスタム名を追加するオプションを提供していないようです:カスタムDNSサーバーを指定するオプションはありますが、それは私が本当に手を入れたくなかった泥だらけのプールです。 )
ダレン・クック

ダレン:私は編集を提案しませんでした/etc/hostsが、「ネームサーバー」(例:DNSMasq、またはあなたが使うもの)を設定することを勧めませんでした。あなたのルーターはあなたにその場所を与えるかもしれません。それ以外の場合は/etc/hostsマシンで編集する必要があります。Androidの対応するファイルは、「ルート権限」でのみ編集できます(正確な場所がわからないのですが、/data/systemAFAIR のどこかにあります)。参照:etc / hostsファイルの編集方法
Izzy

回答:


6

Android上のhostsファイルは、読み取り専用のファイルシステムにあるため、単純に編集することはできません/system/etc/hosts

代替案は次のとおりです。

  • ローカルネットワークでDNSMasqのようなDNSサーバーを使用して、「集中的に」処理する
  • 「ルート権限」を使用して、上記のようにシステムファイルを強制的に編集します
  • それを使用するには、Androidデバイスに「ローカルDNSサーバー」をインストールします(例:DNSサーバー)

やあ、イジー、私はDNSサーバーを使ってこれを処理しようとしました。私の電話へのrootアクセスがないからです。ホスト名を問題のIPにリダイレクトする単純なルールを追加しましたが、機能しません。何が問題なのですか?
George Katsanos、2015年

DNSサーバーは、ネットワーク内の他のデバイスにサービスを提供することになっています(説明にあるように、そのためにさらにポート転送を使用する必要があります)。そのためには、それらのデバイス(Androidデバイスを含む)を使用するように構成する必要があります。私はAndroidデバイスでそのようなDNSサーバーを使用しなかったため、ここで何をする必要があるかを正確に確認しませんでした。ただし、ほとんどの場合、ネットワーク設定でDNSエントリを調整する必要があります(WiFiネットワークのエントリを長押しし、[詳細]を選択して、最初のDNSエントリを調整します。2つ目は「バックアップ」としてそのままにします)。
イジー

@GeorgeKatsanosこれに興味があるかもしれません:stackoverflow.com/a/14211550/1768141
Vinayak

2

lzzyが述べたように、DNSMasqサーバーを使用してこれを実現できます。ただし、Chromeは独自のDNS解決プロセスを使用しているため、この方法は機能しない可能性があります。

サーバーを起動するには、次のコマンドを使用します。

sudo /usr/local/sbin/dnsmasq -d \
                             --no-hosts \
                             --no-resolv \
                             --conf-file=/dev/null \
                             --server=8.8.8.8 --server=8.8.4.4 \
                             --address=/example.com/192.168.0.101
  • sudo ポート53でバインドする必要があります
  • -d フォアグラウンドでサーバーを起動する
  • --no-hosts ローカルホストファイルを使用しない
  • --conf-file=/dev/null 設定ファイルを使用しないでください
  • --server=8.8.8.8 --server=8.8.4.4 上流サーバーのアドレス(この例ではGoogle DNS)
  • --address=/example.com/192.168.0.101オーバーライドするホスト。この行でホストを追加する必要があります。そこで複数のホストを追加することもできます。

次に、デバイスのDNSサーバーを変更します。これは、DNSチェンジャーアプリを使用して簡単に行うことができます。

これらのステップの後、これらのホストへのリクエストはあなたのアドレスに送られるべきです。


0

ホストからIPへのマッピングを定義する最も簡単な方法はhosts、ほとんどのDNSリゾルバーがそのファイルを尊重するファイルであるためです。しかし、他の回答で述べたように、/etc/hostsAndroidデバイスをルート化せずに編集することはできません。仮想ホスティングのため、IPアドレスでWebサーバーにアクセスすることもできません。ルート権限を取得していないデバイスで使用できるいくつかのオプションを次に示します。

  • hosts構成された上流のDNSサーバーにクエリを行う前に、DNSトラフィックをインターセプトしてカスタムファイルを検索するVPNアプリを使用します。
  • DNSサーバーを実行します。特定の名前に対して事前定義されたIPアドレスを返すように構成できます。たとえば、を使用dnsmasqする場合は、「dnsmasq.conf」に追加address=/mysite.local/10.1.2.3します。または、「cloaking-rules.txt」に追加します。dnscrypt-proxymysite.local 10.1.2.3
  • プロキシまたはVPNを使用するように電話を構成し、プロキシサーバーのファイルにエントリ10.1.2.3 mysite.localを追加するhostsか、VPNサーバーでローカルDNSサーバーを実行します。
  • ブートローダーがロック解除可能な場合はhosts、カスタムリカバリからファイルを編集します。

詳細については、ルート化せずにドメイン名を常に固定IPに解決する方法を参照してください


関連:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.