似乎没有使用apt.conf“ Acquire :: http:Proxy” proxyserver:port”(Win7上Virtual Box下的Ubuntu 13.04)


13

这用于在VirtualBox VM中安装Ubuntu 13.04 Desktop。我在xyz251:9090上具有HTTP代理的公司网络上。我已经使用自动配置脚本配置了来宾操作系统,因此Firefox可以正常工作,但是无法使用代理连接获得“ apt-get”或“ Ubuntu软件中心”。

我创建了文件“ /etc/apt/apt.conf”,它现在包含一行文本:

Acquire::http:Proxy "http://x.y.z.251:9090"

这是我在“系统设置/网络/网络代理”中指定并应用于整个系统的proxy.pac文件。

当我使用Firefox时,数据包跟踪显示TCP连接是通过公司代理在端口9090进行的,当我运行“ Ubuntu软件中心”和“ apt-get”时,数据包跟踪显示带有最终目标IP的TCP SYN数据包地址和端口80。当然,对SYN数据包没有任何响应,因为公司防火墙阻止了端口80上的TCP连接进出。

在终端窗口中使用“ sudo apt-get”,我总是看到:

Ign cdrom://Ubuntu 13.04 _Raring Ringtail_ - Release amd64 (20130424) raring/main Translation-en_US
Ign cdrom://Ubuntu 13.04 _Raring Ringtail_ - Release amd64 (20130424) raring/main Translation-en
Ign cdrom://Ubuntu 13.04 _Raring Ringtail_ - Release amd64 (20130424) raring/restricted Translation-en_US
Ign cdrom://Ubuntu 13.04 _Raring Ringtail_ - Release amd64 (20130424) raring/restricted Translation-en
Err http://extras.ubuntu.com raring Release.gpg 
  Could not connect to extras.ubuntu.com:80 (91.189.92.152), connection timed out
Err http://archive.canonical.com raring Release.gpg 
  Cannot initiate the connection to archive.canonical.com:80 (2001:67c:1360:8c01::1b). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::1b 80]
Err http://us.archive.ubuntu.com raring Release.gpg 
  Cannot initiate the connection to us.archive.ubuntu.com:80 (2001:67c:1562::14). - connect (101: Network is unreachable) [IP: 2001:67c:1562::14 80]
Err http://us.archive.ubuntu.com raring-updates Release.gpg
  Cannot initiate the connection to us.archive.ubuntu.com:80 (2001:67c:1562::14). - connect (101: Network is unreachable) [IP: 2001:67c:1562::14 80]
Err http://us.archive.ubuntu.com raring-backports Release.gpg
  Cannot initiate the connection to us.archive.ubuntu.com:80 (2001:67c:1562::14). - connect (101: Network is unreachable) [IP: 2001:67c:1562::14 80]
59% [Connecting to security.ubuntu.com (91.189.91.14)]

最终,我看到了:

Err http://security.ubuntu.com raring-security Release.gpg
  Cannot initiate the connection to security.ubuntu.com:80 (2001:67c:1360:8c01::18). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::18 80]
Reading package lists... Done                          
W: Failed to fetch http://us.archive.ubuntu.com/ubuntu/dists/raring/Release.gpg  Cannot initiate the connection to us.archive.ubuntu.com:80 (2001:67c:1562::14). - connect (101: Network is unreachable) [IP: 2001:67c:1562::14 80]

W: Failed to fetch http://us.archive.ubuntu.com/ubuntu/dists/raring-updates/Release.gpg  Cannot initiate the connection to us.archive.ubuntu.com:80 (2001:67c:1562::14). - connect (101: Network is unreachable) [IP: 2001:67c:1562::14 80]

W: Failed to fetch http://us.archive.ubuntu.com/ubuntu/dists/raring-backports/Release.gpg  Cannot initiate the connection to us.archive.ubuntu.com:80 (2001:67c:1562::14). - connect (101: Network is unreachable) [IP: 2001:67c:1562::14 80]

W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/raring-security/Release.gpg  Cannot initiate the connection to security.ubuntu.com:80 (2001:67c:1360:8c01::18). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::18 80]

W: Failed to fetch http://archive.canonical.com/ubuntu/dists/raring/Release.gpg  Cannot initiate the connection to archive.canonical.com:80 (2001:67c:1360:8c01::1b). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::1b 80]

W: Failed to fetch http://extras.ubuntu.com/ubuntu/dists/raring/Release.gpg  Could not connect to extras.ubuntu.com:80 (91.189.92.152), connection timed out

W: Some index files failed to download. They have been ignored, or old ones used instead.

我完全不确定自己在做什么错。

---更新----我也尝试过:

Acquire::http:proxy "http://user:pass@x.y.z.251:9090/"

“ xyz”当然是占位符;我怀疑老板的保安人员会不会友好地请我发布实际数字。我发现数据包跟踪没有区别-“ apt-get”仍在使用真实IP地址和端口80。我在apt.conf文件中故意犯了一个错误,“ apt-get”退出并出现了错误,所以我可以肯定的是,它看到了该代理的配置行,但似乎并没有兑现它。

我使用的是“ NAT”网络连接,因为这违反了IT策略在网络之间架桥,而DHCP服务器仅将地址提供给已知的MAC地址。我不希望IT安全问题再次发生。


每天学些新东西。似乎只有在“系统设置/网络/网络代理”中使用手动代理配置选项时,“ / etc / apt / apt.conf”才会更新。然后,我进入并注释掉了我在该文件中手动输入的条目,并禁用了IPv6。GUI创建的条目与我刚开始的条目几乎相同,但是“ apt-get”现在可以使用了。能够通过GUI禁用IPv6是很不错的,但是编辑“ /etc/sysctl.conf”可以正常工作。非常感谢@ terry-wang
Daniel Glasser 2013年

您能补充一下答案吗?您的问题是ipv6,而不是代理设置不正确。
Braiam

也许您还错过了和:之间的冒号?相反。httpProxyhttp::Proxyhttp:Proxy
Gonmator

Answers:


18

根据我过去的经验,总体而言,Ubuntu(GNOME)与PAC(Automatic Config)配合不佳。Pac(代理自动配置)基本上是JavaScript逻辑,可以为您确定最接近或最合适的代理,我强烈建议直接使用代理服务器(在您的情况下为Network-Network Proxy)。

需要检查的几件事

检查您的/etc/apt/apt.conf

网络-网络代理GUI将在此更新/etc/apt/apt.conf并设置代理信息。

从pac中查找代理服务器信息

proxy.pac仍然可以通过阅读文件找到详细信息。

因此,其/etc/apt/apt.conf外观应如下所示(假设代理服务器为=> proxy.company.com端口80),请勿使用pac URL。

Acquire::http::proxy "http://proxy.company.com:80/";
Acquire::https::proxy "https://proxy.company.com:80/";
Acquire::ftp::proxy "ftp://proxy.company.com:80/";

注意:如果在apt配置文件中未指定代理,apt-get则将回退到http_proxy环境变量。

在apt.conf手册页中,回复@Braiam的评论

   http
       HTTP URIs; http::Proxy is the default http proxy to use. It is in
       the standard form of http://[[user][:pass]@]host[:port]/. Per host
       proxies can also be specified by using the form http::Proxy::<host>
       with the special keyword DIRECT meaning to use no proxies. If no
       one of the above settings is specified, http_proxy environment
       variable will be used.

检查代理环境变量

您可以通过在终端中运行以下命令来检查代理设置

echo $http_proxy
echo $https_proxy
echo $ftp_proxy

如果正确设置了环境变量,则应该能够在CLI中进行更新。

首选IPv4

我注意到apt-get正在尝试使用其ipv6地址连接到更新服务器。这可能会导致问题(有时IPV6地址过期或更改)。

您可以进行编辑/etc/gai.conf和添加,precedence ::ffff:0:0/96 100以使ipv4优于ipv6。

更多细节


感谢您的回复。我在“ /etc/apt/apt.conf”中输入的值是来自.pac文件的实际URI和套接字,而不是.pac文件本身的URI(这就是我在“系统设置/网络/网络代理”。
丹尼尔·格拉瑟

我进入“系统设置/网络/网络代理”并使用了手动配置;这确实更新了“ /etc/apt/apt.conf”。我还通过编辑“ /etc/sysctl.conf”禁用了IPv4。这似乎已经解决了问题。谢谢你的帮助。
Daniel Glasser 2013年

不是真的,apt-get永远不会使用,http_proxy也不会使用任何环境变量。
Braiam 2013年

@Braiam做一个man apt.conf,看看http::Proxy。我也更新了答案。此外,我已经使用了http_proxyhttps_proxy环境变量与使用apt-get多年。在投票否决之前做一些研究。
Terry Wang

另外,请自己研究!运行sudo apt-get -o Debug::Acquire::http=true update并检查您自己,如果设置环境变量使用代理。如果您使用代理一年,请随时进行更新
Braiam

5

我相信我遇到了这个问题,答案很简单。语法很关键。它必须看起来像这样:

Acquire::http::Proxy "http://x.y.z.251:9090";

(有一个额外的“:”和一个终止符“;”)


1

@布莱恩

我认为最好单独回答以澄清问题。

我使用了Vagrant和防火墙后面的Ubuntu 13.04 Raring x86_64 VM进行了快速测试。

apt-get版本是 0.9.7.7ubuntu4

root@raring:~# apt-get --version 
apt 0.9.7.7ubuntu4 for amd64 compiled on Apr 12 2013 23:49:05
Supported modules:
*Ver: Standard .deb
*Pkg:  Debian dpkg interface (Priority 30)
 Pkg:  Debian APT solver interface (Priority -1000)
 S.L: 'deb' Standard Debian binary tree
 S.L: 'deb-src' Standard Debian source tree
 Idx: Debian Source Index
 Idx: Debian Package Index
 Idx: Debian Translation Index
 Idx: Debian dpkg status file
 Idx: EDSP scenario file

更新:在Precise 12.04.3中的工作方式相同

root@support:/etc/apt# uname -a
Linux support 3.8.0-30-generic #44~precise1-Ubuntu SMP Fri Aug 23 17:33:45 UTC 2013 i686 i686 i386 GNU/Linux
root@support:/etc/apt# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.3 LTS
Release:        12.04
Codename:       precise
root@support:/etc/apt# apt-get --version
apt 0.8.16~exp12ubuntu10.14 for i386 compiled on Sep  8 2013 03:26:42

1-清除apt配置文件

我清除了中的代理设置/etc/apt/apt.conf。我也没有ackag扫描所有文件和子目录/etc/apt,以确保没有在恰当的配置文件没有代理设置。

默认情况下{http_proxy,https_proxy,ftp_proxy},未设置env变量。

apt-get无法连接到更新服务器。

root@raring:~# apt-get -o Debug::Acquire::http=true update
0% [Connecting to au.archive.ubuntu.com (202.158.214.106)] [Connecting to security.ubuntu.com (91.189.91.13)] [Connecting to ppa.launchpad.net (91.189.95.83)]

2-设置环境变量

只需设置代理变量

export {http_proxy,https_proxy,ftp_proxy}="http://10.xxx.xxx.231:80"

apt-get现在可以连接!

查看调试输出(这是我从未尝试过的东西)。

root@raring:~# apt-get -o Debug::Acquire::http=true update
0% [Working]GET http://security.ubuntu.com/ubuntu/dists/raring-security/Release.gpg HTTP/1.1
Host: security.ubuntu.com
Cache-Control: max-age=0
User-Agent: Debian APT-HTTP/1.3 (0.9.7.7ubuntu4)


GET http://au.archive.ubuntu.com/ubuntu/dists/raring/Release.gpg HTTP/1.1
Host: au.archive.ubuntu.com
Cache-Control: max-age=0
User-Agent: Debian APT-HTTP/1.3 (0.9.7.7ubuntu4)


GET http://ppa.launchpad.net/git-core/ppa/ubuntu/dists/raring/Release.gpg HTTP/1.1
Host: ppa.launchpad.net
Cache-Control: max-age=0
User-Agent: Debian APT-HTTP/1.3 (0.9.7.7ubuntu4)


HTTP/1.1 200 OK
Date: Fri, 27 Sep 2013 12:12:20 GMT
ETag: "16e20bb4-3a5-4db2e154a1dc0"
Server: Apache/2.2.3 (Red Hat)
Content-Type: text/plain; charset=UTF-8
Accept-Ranges: bytes
Last-Modified: Thu, 25 Apr 2013 11:54:39 GMT
Content-Length: 933
Proxy-Connection: Keep-Alive

Get:1 http://au.archive.ubuntu.com raring Release.gpg [933 B]
0% [1 Release.gpg 0 B/933 B 0%] [Waiting for headers] [Waiting for headers]GET http://au.archive.ubuntu.com/ubuntu/dists/raring-updates/Release.gpg HTTP/1.1
Host: au.archive.ubuntu.com
Cache-Control: max-age=0
User-Agent: Debian APT-HTTP/1.3 (0.9.7.7ubuntu4)


99% [Waiting for headers] [Waiting for headers]HTTP/1.1 200 OK             
Date: Fri, 27 Sep 2013 12:12:20 GMT
ETag: "16e20ee7-3a5-4e7594ace9200"
Server: Apache/2.2.3 (Red Hat)
Content-Type: text/plain; charset=UTF-8
Accept-Ranges: bytes
Last-Modified: Fri, 27 Sep 2013 08:30:00 GMT
Content-Length: 933
Proxy-Connection: Keep-Alive

Get:2 http://au.archive.ubuntu.com raring-updates Release.gpg [933 B]
50% [2 Release.gpg 0 B/933 B 0%] [Waiting for headers] [Waiting for headers]GET http://au.archive.ubuntu.com/ubuntu/dists/raring-backports/Release.gpg HTTP/1.1
Host: au.archive.ubuntu.com
Cache-Control: max-age=0
User-Agent: Debian APT-HTTP/1.3 (0.9.7.7ubuntu4)


100% [Waiting for headers] [Waiting for headers]HTTP/1.1 200 OK             
Date: Fri, 27 Sep 2013 12:12:21 GMT
ETag: "16e0083d-3a5-4e6844f477fc0"
Server: Apache/2.2.3 (Red Hat)
Content-Type: text/plain; charset=UTF-8
Accept-Ranges: bytes
Last-Modified: Mon, 16 Sep 2013 18:24:07 GMT
Content-Length: 933
Proxy-Connection: Keep-Alive

Get:3 http://au.archive.ubuntu.com raring-backports Release.gpg [933 B]
67% [3 Release.gpg 0 B/933 B 0%] [Waiting for headers] [Waiting for headers]HTTP/1.1 200 OK
Date: Fri, 27 Sep 2013 12:12:20 GMT
ETag: "3a5-4e75c5d969600"
Server: Apache/2.2.22 (Ubuntu)
Expires: Fri, 27 Sep 2013 13:05:00 GMT
Accept-Ranges: bytes
Cache-Control: max-age=3159, s-maxage=3300, proxy-revalidate
Last-Modified: Fri, 27 Sep 2013 12:10:00 GMT
Content-Length: 933
Proxy-Connection: Keep-Alive

......

3-设置环境变量

取消环境变量=> unset {http_proxy,https_proxy,ftp_proxy}

现在apt-get无法连接。

结论

就像man apt.conf说的一样,如果未设置http :: Proxy,http_proxy则将使用环境变量。

顺便说一句:我也是Arch Linux用户。Pacman以类似的方式工作,如果我不使用wget或在中curl使用proxy pacman.conf,它将使用`{http_proxy,https_proxy,ftp_proxy}'环境变量。

更新 sudo不保留环境变量。这就是为什么sudo apt-get update失败。要变通解决此问题(保留代理环境变量),请使用sudo -E apt-get update


顺便说一句,我没有收到有关ping的通知。另外,请参阅我的评论,尝试使用sudoroot用户身份登录,并查看为什么我说它不起作用。
Braiam 2013年

@Braiam我做了更多测试。sudo不保留环境变量,这就是问题所在!但是您可以使用sudo -E apt-get update && apt-get dist-upgrade;-) 来解决它-Terry
Wang

我在其他评论中也说了同样的话:S
Braiam

我喜欢您如何澄清答案。解决我的问题的方法是“ sudo -E”提示。我不记得过去曾经需要使用-E选项。
达肖恩

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.