我在 Linux 上运行 Chrome。我有本地 DNS 来将 *.myname.com 解析为 127.0.0.2(我输入“host whatever.myname.com”或“host myname.com”,然后我可以看到正确的地址)。但是在 Chrome 中,当我输入“myname.com”时,它会重定向到“www.myname.com”,并解析我不想要的“真实”网站。
仅当我输入“test.myname.com”而不是“www.myname.com”时,Chrome 才会将其正确解析为 127.0.0.2。我猜 Chrome 正在尝试对 www.anything.com 和 anything.com 进行一些奇怪的操作。
如何修复?
PS:我使用的本地 DNS 是 dnsmasq。如果我明确地将 myname.com 放入 /etc/hosts,Chrome 会将其正确解析为 127.0.0.2,但我无法在 /etc/hosts 中使用通配符。
PPS:我可以在 chrome://net-internals/#dns 上确认 Chrome 正确地将 myname.com 和 www.myname.com 改为真实的公共 IP。
答案1
实际上,Chrome 使用自己的 DNS 客户端与多个 DNS 服务器(本地 DNS、路由器 DNS、IPv6 中的路由器 DNS)通信。我转到 chrome://flags 并禁用“内置异步 DNS”。现在它可以正常工作了。
答案2
您可以更改您的代理设置并强制其使用您想要的地址。
打开一个新文件,以.pac 为扩展名,这些文件被系统用来确定代理,将其复制到文件内容中:
function FindProxyForURL(url, host) {
if (host=='www.myname.com' || host=='myname.com'){
return 'PROXY 127.0.0.2';
}
// All other domains should connect directly without a proxy
return "DIRECT";
}
转到 chrome 代理设置,在“自动代理配置的 url”下输入该文件的路径。
不需要有DNS服务器,您可以将其重定向到机器上的不同端口,并且可以根据您的需要对其进行编程。