如何让 Ubuntu 尊重 IPv6 的“忽略主机”代理设置?

如何让 Ubuntu 尊重 IPv6 的“忽略主机”代理设置?

我刚刚在 下输入了"dconf-editor", System → Proxy → ignore-hosts以下内容:

['localhost', '127.0.0.0/8', '::1', '192.168.0.1', '2000::/3', 'fc00::/8']

但是,Google Chrome(和apt-get update / upgrade)只是忽略了这些设置。

编辑:此外,Firefox 不遵守ingore-hosts设置,甚至将其配置为“使用系统代理设置”。

例如,我的代理服务器(带有 Squid3 的 Ubuntu)处于双栈模式,但是,我不想通过代理访问 IPv6 网站,这就是为什么我尝试使用该条目忽略整个 IPv6 互联网2000::/3,但是,它不能按预期工作。

编辑:此外,我不需要代理来访问Hyperboria位于下面的网站,fc00::/8但它也不起作用......

我为什么要这么做?

因为我的环境已经是 IPv6-Only 网络,并且要访问旧的互联网基础设施(IPv4-Only),我需要通过双栈代理。但我只在网站没有 IPv6 时才需要代理...

我怎么知道它不起作用?!

很简单,只需访问一个显示 IPv6 地址的网站,例如,http://www.sixxs.net或者http://ipv6.whatismyv6.com,然后,我仍然看到代理服务器的 IPv6 地址,所以,"ignore-hosts entry '2000::/3'"似乎不起作用。

编辑:另外,当我尝试访问Hyperboria网站时,Squid 返回无法访问的错误fc00::/8 network

(Squid 错误:(101)网络无法访问)

(当然不能,cjdns路由器就在我的 Ubuntu 桌面上运行,所以浏览时无需通过代理Hyperboria fc00::/8,但 Ubuntu 不遵守ignore-hosts代理设置。

答案1

看起来这不适用于 Gnome 代理设置。该ignore-hosts设置适用于主机名、地址和地址范围,但显然在检查地址之前不会解析主机名。

文档ignore-hosts(我强调):

另请注意,主机名排除仅适用于与按名称标识的主机建立的连接,并且IP 地址排除仅适用于与地址标识的主机建立的连接也就是说,如果 example.com 的地址为 192.168.1.1,且 :ignore-hosts 列表仅包含“192.168.1.1”,则与“example.com”的连接(例如,通过 GNetworkAddress)将使用代理,而与“192.168.1.1”的连接(例如,通过 GInetSocketAddress)则不会使用代理。

答案2

对于 Google Chrome 和 Chromium,您可以创建机器范围的策略文件。

Linux Chrome 管理员快速入门指南

以下是来自的各种代理设置和说明策略模板

// Proxy bypass rules
  //-------------------------------------------------------------------------
  // Google Chrome will bypass any proxy for the list of hosts given here.  This
  // policy only takes effect if you have selected manual proxy settings at
  // 'Choose how to specify proxy server settings'.  You should leave this
  // policy not set if you have selected any other mode for setting proxy
  // policies.  For more detailed examples, visit:
  // http://www.chromium.org/developers/design-documents/network-settings#TOC-
  // Command-line-options-for-proxy-sett

  //"ProxyBypassList": "http://www.example1.com,http://www.example2.com,http://internalsite/",

  // Choose how to specify proxy server settings
  //-------------------------------------------------------------------------
  // Allows you to specify the proxy server used by Google Chrome and prevents
  // users from changing proxy settings.  If you choose to never use a proxy
  // server and always connect directly, all other options are ignored.  If you
  // choose to use system proxy settings or auto detect the proxy server, all
  // other options are ignored.  If you choose fixed server proxy mode, you can
  // specify further options in 'Address or URL of proxy server' and 'Comma-
  // separated list of proxy bypass rules'.  If you choose to use a .pac proxy
  // script, you must specify the URL to the script in 'URL to a proxy .pac
  // file'.  For detailed examples, visit: http://www.chromium.org/developers
  // /design-documents/network-settings#TOC-Command-line-options-for-proxy-sett
  // If you enable this setting, Google Chrome ignores all proxy-related options
  // specified from the command line.  Leaving this policy not set will allow
  // the users to choose the proxy settings on their own.

  //"ProxyMode": "direct",

  // URL to a proxy .pac file
  //-------------------------------------------------------------------------
  // You can specify a URL to a proxy .pac file here.  This policy only takes
  // effect if you have selected manual proxy settings at 'Choose how to specify
  // proxy server settings'.  You should leave this policy not set if you have
  // selected any other mode for setting proxy policies.  For detailed examples,
  // visit: http://www.chromium.org/developers/design-documents/network-settings
  // #TOC-Command-line-options-for-proxy-sett

  //"ProxyPacUrl": "http://internal.site/example.pac",

  // Address or URL of proxy server
  //-------------------------------------------------------------------------
  // You can specify the URL of the proxy server here.  This policy only takes
  // effect if you have selected manual proxy settings at 'Choose how to specify
  // proxy server settings'.  You should leave this policy not set if you have
  // selected any other mode for setting proxy policies.  For more options and
  // detailed examples, visit: http://www.chromium.org/developers/design-
  // documents/network-settings#TOC-Command-line-options-for-proxy-sett

  //"ProxyServer": "123.123.123.123:8080",

  // Enable or disable PIN-less authentication
  //-------------------------------------------------------------------------
  // If this setting is enabled or not configured, then users can opt to pair
  // clients and hosts at connection time, eliminating the need to enter a PIN
  // every time.  If this setting is disabled, then this feature will not be
  // available.

答案3

我不知道该怎么做制作Ubuntu 遵循该设置,但可能有解决方法:

  • APT 遵循/etc/apt/apt.conf或环境变量中的设置(例如http_proxy)。的手册页apt.conf没有提到 dconf 设置,所以我认为 apt 不会检查它们。要指定 apt 应忽略代理的站点,请添加到/etc/apt/apt.conf

    Acquire::http::Proxy::<hostname/ip> DEFAULT;
    

    我认为这无法对于范围或子网来完成,并且您需要为每个要排除的主机提供一个条目。

  • Chrome 尊重 no_proxy 环境变量,因此可以尝试使用它:

    no_proxy=localhost,127.0.0.0/8,::1,192.168.0.1,2000::/3,fc00::/8 google-chrome
    

    定义no_proxyin/etc/environment以确保其在任何地方都可用。其他程序也遵守此变量。

  • 最后,你可以考虑运行squid 服务器。新的服务器将使用您当前的服务器作为父服务器,但仅限于某些主机,使用allow_direct/never_direct设置。然后将新的服务器设置为所有位置的代理服务器(/etc/apt/apt.conf/etc/environmentdconf条目)。我对双栈网络了解不多,所以我不知道这是否会起作用,但值得一提。

我不使用双栈网络,但由于我使用校园代理,因此我必须调整代理设置,我发现最后一个选项是最好的。让 squid 来做这个调整。

答案4

在 GNOME Shell 42.3.1 上,对于 IPv4 和 IPv6,我注意到 Firefox v107 忽略了忽略的主机gsettings get org.gnome.system.proxy ignore-hosts;也许由于这个错误)。我必须在 Firefox 上再次添加没有代理

截屏

相关内容