是否有某种事实上的方法可以将某些主机名重写为其他主机名?类似于/etc/hosts
主机到主机而不是 ip 到主机。这是可能的还是我应该为该主机创建一个本地 dns cname?
关于评论的更新
我想使用解析为远程域的本地名称。浏览器只是一个例子。我实际上正在编写一个从互联网请求资源的 ios 应用程序,但我想使用本地名称进行仅模拟器运行。所以换句话说,我希望我的应用程序请求http://localalias/,但该系统实际上会获取http://remotehost.com/。
答案1
DNS CNAME 将是实现此目的的实际方法。
编辑:鉴于下面的评论...
我认为你无法做你想做的事。您试图欺骗浏览器或其他程序,让其认为某个地址是地址,但实际上它不是。问题在于,某些东西也会传递它想要的资源的名称,以便远程服务器知道要提供哪个站点。一个给定的 IP 地址上可以托管多个站点。浏览器发送它想要的站点作为其请求的一部分,仅仅通过 DNS 黑客重新路由流量是不够的,因为浏览器会请求远程站点不知道的资源名称。
您需要在本地系统上设置完整的代理系统。它需要使用标准浏览器标头进行响应以将您重定向到远程资源,或者需要获取远程资源本身然后传递数据。这可以通过 apache、squid 或任意数量的其他代理和 http 托管解决方案来完成。如果您提供有关您的场景的更多详细信息,我们可以更具体。
答案2
每一行/etc/主机其格式为:
ip fqdn aliases
在哪里:
- ip是主机的IP地址;
- 完整域名
A
是 DNS 完全限定名称(您将放入 DNS和PTR
记录中的名称) - 别名是同一主机的备用名称(可能为空)列表(这些将是
CNAME
DNS 中的记录)
因此,您可以在中添加任何替代/本地名称别名部分。例如,如果您已经安装了一个 web 应用程序,http://127.0.0.1:80
但想使用生产站点名称来测试它http://webapp.example.org
,您可以将其写入/etc/hosts
:
127.0.0.1 localhost.localdomain localhost webapp.example.org