代理后面的名称解析

代理后面的名称解析

使用 Linux(Debian)

在我目前的工作地点,我位于 ISA 代理服务器后面,我无法在这台机器上进行任何更改。

我正在开发软件,并使用 kvm 设置了虚拟机,几乎一切正常。虚拟机位于虚拟网络 192.168.122.0 上

在 /etc/profile 中我有以下环境变量:

http_proxy=http://x.x.x.x:8080/
no_proxy=localhost,192.168.122.0/24

我在 /etc/hosts 中找到了虚拟机的名称。

从主机我可以 ping 虚拟机并通过名称通过 ssh 进行连接。

我无法使用浏览器连接到在 VM 上运行的 apache 服务器,名称解析被传递给 ISA 服务器,并且显示无法找到主机名的故障(企业 DNS 不知道我的 VM 并不奇怪)..

我在所有浏览器中都得到相同的结果,因此

elinks http://vmname

失败,尽管

elinks -lookup vmname

返回虚拟机的正确 IP 地址。

但是,“getent hosts vmname”返回了虚拟机的正确本地 IP。

如果我做 :

http_proxy="" elinks http://vmname

然后我可以通过 http 正常连接。

我是否遗漏了某个配置?我查看了 /etc/nsswitch.conf & /etc/host.conf & /etc/resolv.conf

我注意到“主机虚拟机名称”返回 2(SERVFAIL) 而不是 3(NXDOMAIN)。是否可以进行配置,以便我可以同时连接到外部服务器和内部虚拟机,而无需为每个服务器重新配置浏览器?

答案1

将虚拟机的名称添加到no_proxy变量。

no_proxy=localhost,192.168.122.0/24,vmname

这应该可以帮你解决问题。你的问题是所有浏览器都在向你的 ISA 代理发送 HTTP 请求。

答案2

首先你应该添加<ip> vmname到你的本地/etc/hosts

然后还在浏览器设置中添加您的本地网络作为不应使用代理的例外,就像您已经在 /etc/profile 中完成此操作一样。

那么它就可以工作了。

答案3

如果您有代理,DNS 解析将在代理中完成。您无法更改这一点。修改 /etc/hosts 毫无用处。如果目标 Web 服务器没有虚拟主机,您可以尝试使用 IP 地址进行连接。但如果有虚拟主机,您就无法进行任何合法操作。

相关内容