使用 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 地址进行连接。但如果有虚拟主机,您就无法进行任何合法操作。