配置了代理后如何本地解析DNS?

配置了代理后如何本地解析DNS?

如果我配置代理,在设置->网络->代理下,然后尝试访问“http://google.com“,名称解析(google.com 的 IP)将在代理服务器上进行,但是...

我怎样才能改变这种行为?

我的意思是,在使用代理之前,我需要在我的桌面本地解析 DNS。

但为什么?

这样,我将配置“忽略具有大量子网(IPv4 / IPv6)的主机,这些主机不需要代理即可访问它们”,然后,Ubuntu 首先需要:

1-在本地解析DNS(即不通过代理);

2-尝试将本地发现的网站IP与“ignore-hosts”设置进行匹配;

是否可以?

谢谢!蒂亚戈

答案1

当您使用 HTTP 代理时这是不可能的,因为:

  • 您连接的服务器是代理的服务器,而不是最终目的地的服务器。
  • 您将请求的完整 URL(包括主机名)发送给代理。然后代理将代表您执行请求。

因此,它必须是执行 DNS 查找的代理。

无法在本地进行 DNS 查找,并仅将 IP 地址发送到代理服务器。首先,没有机制来指定代理应尝试特定主机的特定 IP 地址。您可以将 URL 从 更改为 ,http://example.com/mypagehttp://33.33.33.33/mypage这样代理服务器就不知道要请求哪个主机名,这是现代网络(HTTP/1.1 及更高版本)的一个重要部分,它依赖于请求中始终存在的 Host 标头,从而消除了所有主机名都从不同 IP 地址提供服务的限制。

最好的办法是将代理服务器配置为使用您选择的 DNS 解析器。只有当您使用您控制的本地代理服务器时才有可能。

注意:当您使用 SOCKS 代理或其他低级隧道方法时,您使用本地 DNS 服务器。但不要使用 HTTP 代理。

答案2

编辑:或者,您可以根据自己的标准使用 PAC 文件来控制是否使用代理。如果适用,则必须关闭 Autoproxyresultcache。

您可以安装 Technitium 并作为 DNS 服务器。 https://technitium.com/

答案3

你需要一个 redsocks 代理服务器(由于它使用 iptables,所以设置起来非常困难)+ 一些本地代理中介,例如

redsocks 的特点是 DNS 查询默认直接进行,不通过代理。运行:sudo -H -u proxyuser socks5-server。然后是浏览器或任何应用程序。socks5
-server 不是必需的,否则您必须以另一个用户(proxyuser)运行浏览器,并使用 xhost+ 选项运行它。

除了 redsocks + socks5-server,您还可以尝试使用 proxychains + 3proxy (socks) > browser。proxychains 是一个相当弱的代理程序,不支持所有应用程序(它不支持静态链接)。然后在浏览器中禁用 SOCKS DNS。我还没有测试过这种方法。

在 Windows 中,您可以使用 Proxifier。

相关内容