Linux 上特定地址的代理连接

Linux 上特定地址的代理连接

我需要找到一种方法来通过代理服务器代理到 example.com 的所有连接,它需要在命令行上工作,以及在 Python 中自动工作(就像导出 http_proxy 一样),但我希望所有其他流量都像平常一样通过网络。

答案1

使用 proxy.pac 应该可以解决问题。

export http_proxy=http://local.example.org/proxy.pac

使用类似指令

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "example\.com")) { return "PROXY a.b.c.d:8080"; }

  return "DIRECT";
}

答案2

私有网络将为您执行此任务。

您可以像平常一样启用 HTTP_PROXY ENV

导出 http_proxy='http://本地主机:8118

Privoxy 将处理 ACL 和重定向。查看转发配置部分。

答案3

要使它适用于所有程序,您需要使用透明代理,并设置防火墙规则或 DNS 配置以将您的流量发送到代理。我设置了一个透明 Squid 代理使用 Shorewall 建立防火墙规则。它还在标准端口上运行更可靠的标准代理。

要使用 DNS,您需要限制对上游服务器的访问。这将需要防火墙规则。但是,可以使用文件中的条目为单个系统完成此操作hosts

您的代理需要配置为根据需要转发流量。对于您而言,它应该代理example.com到指定地址,并正常传递其余流量。

除非您确定 IP 地址是example.com固定且稳定的,否则您应该代理所有流量。大型网站通常使用特殊的 DNS 处理来为特定用户提供最快的可用服务器的 IP 地址。这些 IP 地址往往会随着时间的推移而变化,有时变化相当频繁。

相关内容