在 Windows 机器上,我想将所有发往某台主机的传出网络流量导向另一台主机(而不是另一个 IP 地址)。例如,所有发往的请求都host.acme.com
必须发往server.ajax.net
或类似的东西。
该怎么做或者我必须搜索什么?(如果我理解了正确的术语,搜索就会容易得多)。
(关于我想要实现的目标的一些背景知识:我想在我的计算机上为自己设置类似 UnoTelly 的东西,其中对某些主机的请求会发送到 AWS Cloudfront 服务器。但是,为此,将主机名解析为不同的 IP 地址是不够的;我必须实际上通过主机名将流量转发到不同的主机)。
答案1
最简单的方法是使用机器的主机文件:
- 找出要重定向到的计算机的 IP 地址
- 使用任何文本编辑器编辑该
c:\windows\system32\drivers\etc\hosts
文件(是的,没有扩展名)。您可能需要使用高安全性令牌启动编辑器(如果启用了 UAC,则以管理员身份运行) - 在主机文件中添加一行内容:
1.2.3.4 host.acme.com
(其中 1.2.3.4 实际上是目标机器的 IP 地址)
保存文件,您就大功告成了。但请注意,这只会更改使用host.acme.com
dns 主机名时要连接的计算机的 IP 地址。它不会更改这些连接的内容中的任何内容,因此如果您使用 HTTP(或 SSL)等协议,其中主机名嵌入到数据中,则目标计算机可能无法正确响应。
答案2
正如以下答案指出的那样,您无法路由到主机名:https://serverfault.com/a/301984/118544
但是,就我的目的而言,因为我只对路由 Web 流量感兴趣,所以我能做的似乎就是使用 /etc/hosts 向某些主机发出请求,然后转到本地主机,然后使用本地 Apache 实例和 mod_rewrite 在标头匹配时将请求转发到不同的主机host
。