如何在无根Android上设置主机到IP映射的主机?


10

我的计算机上正在运行一个网站,我想在Nexus 7平板电脑上对其进行测试。即通过本地WiFi LAN。如果输入IP地址,它将连接,但显示错误的网站,因为我使用的是命名虚拟主机。

所以,我想要做的是能输入mysite.local,以便对Nexus的镀铬/火狐,让他们将其转换成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的,显然是不可能的。(建议的替代方法之一是在本地路由器上配置DNS,但据我所知,我的路由器不在本地进行DNS,因此没有该选项。我可以设置自己的DNS服务器来执行此操作,但是感觉就像是一个大工作解决方案。)


对于Server FaultSuper User来说,这是一个问题。而且,您应该使用本地服务器(由DHCP服务器作为DNS节点显示)设置这些主机名。
伊齐

1
@Izzy感谢Izzy,但是我知道如何在服务器上配置/ etc / hosts。我不知道该怎么做,是在Android 4.x平板电脑上查找/编辑等效项(即使没有root也不存在等效项)。(我的DHCP服务器,即wifi路由器,似乎没有提供添加自定义名称的选项:我确实可以指定自定义DNS服务器,但这是一个泥泞的池,我实在不想把它放进去。 )
达伦·库克

你误会我了,达伦:我不建议编辑/etc/hosts,而是配置“名称服务器”(例如DNSMasq或您使用的任何名称)。您的路由器可能会为此提供一个位置。否则,/etc/hosts需要在每台计算机上进行编辑-并且Android上的相应文件只能使用“ root powers”进行编辑(我不知道其确切位置超出了我的头,但它位于/data/systemAFAIR 内的某个位置)。请参阅:如何编辑etc / hosts文件
的Izzy

Answers:


6

您不能简单地在Android上编辑hosts文件,因为它位于只读文件系统中:/system/etc/hosts,请参阅:

替代方法是:

  • 使用局域网中的DNSMasq这样的DNS服务器来“集中”
  • 如上所述,使用“ root powers”强制编辑系统文件
  • 在您的Android设备上安装“本地DNS服务器”以使用它,例如DNS服务器

嘿,Izzy,我尝试使用DNS服务器来处理此问题,因为我无权访问手机。我添加了一个简单的规则,将主机名重定向到有问题的IP ..但是它不起作用..我在做什么错?
乔治·卡萨诺斯

DNS服务器应该服务于网络中的其他设备(如描述所述,您还需要为此使用端口转发)。始终需要将那些设备(包括您的Android设备)配置为使用它。我没有在Android设备上使用任何此类DNS服务器,因此我没有检查此处到底需要做什么。但最有可能需要在网络设置中调整DNS条目(长按WiFi网络的条目,选择“高级”,然后调整第一个DNS条目–将第二个DNS保持原样以备“备份”)。
伊齐

@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 Changer应用程序可以轻松完成此操作。

完成这些步骤后,对这些主机的请求应发送到您的地址。


0

定义主机到IP映射的最简单方法是hosts文件,因为大多数DNS解析器都会使用该文件。但是,正如其他答案中提到的那样,如果/etc/hosts不扎根Android设备,则无法进行编辑。由于存在虚拟主机,因此无法使用IP地址访问Web服务器。您可以在无根设备上使用以下选项:

  • hosts在查询配置的上游DNS服务器之前,请使用VPN应用程序拦截DNS流量并查找自定义文件。
  • 运行DNS服务器;它们可以配置为返回特定名称的预定义IP地址。例如,如果使用dnsmasq,则将其添加address=/mysite.local/10.1.2.3“ dnsmasq.conf”。或dnscrypt-proxy添加mysite.local 10.1.2.3“ cloaking-rules.txt”
  • 配置电话以使用代理或VPN,然后将条目添加10.1.2.3 mysite.localhosts代理服务器上的文件或在VPN服务器上运行本地DNS服务器。
  • 如果引导加载程序不可解锁,请hosts从自定义恢复中编辑文件。

有关更多详细信息,请参见:如何始终将域名解析为固定IP而无需生根?


有关:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.