apt.conf «Acquire :: http: Proxy» proxyserver: port », по-видимому, не используется (Ubuntu 13.04 в Virtual Box на Win7)

13

Это для установки Ubuntu 13.04 Desktop на виртуальную машину VirtualBox. Я нахожусь в корпоративной сети с HTTP-прокси на xyz251: 9090. Я настроил гостевую ОС с помощью скрипта автоконфигурации, поэтому Firefox работает нормально, но я не могу подключить «apt-get» или «Ubuntu Software Center» через прокси.

Я создал файл "/etc/apt/apt.conf", теперь он содержит одну строку текста:

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

это файл proxy.pac, который я указал в «Системных настройках / Сеть / Сетевой прокси» и применил ко всей системе.

Когда я использую Firefox, трассировка пакетов показывает, что соединение TCP выполняется через корпоративный прокси-сервер на порту 9090, когда я запускаю «Ubuntu Software Center» и «apt-get», трассировка пакетов показывает пакеты TCP SYN с возможным IP-адресом назначения. адрес и порт 80. Конечно, нет ответа на пакеты SYN, так как корпоративный брандмауэр блокирует TCP-соединения на порту 80 от входа или выхода.

С «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», так как это противоречит ИТ-политике для мостов между сетями, а DHCP-сервер предоставляет адреса только для известных MAC-адресов. Я не хочу, чтобы ИТ-безопасность била по моему кубу (опять же).

Даниэль Глассер
источник
Узнавайте что-то новое каждый день. Похоже, что /etc/apt/apt.conf обновляется только в том случае, если вы используете опцию ручной настройки прокси в «Системные настройки / Сеть / Сетевой прокси». Затем я вошел и прокомментировал записи, которые я сделал в этом файле вручную, и отключил IPv6. Записи, созданные в GUI, были в значительной степени идентичны тем, с которых я начинал, но теперь работает «apt-get». Было бы неплохо иметь возможность отключить IPv6 через графический интерфейс, но редактирование "/etc/sysctl.conf" работает нормально. Большое спасибо @ terry-wang
Даниэль Глассер,
Не могли бы вы добавить это в качестве ответа? Ваша проблема была ipv6, а не прокси неправильно установлен.
Брайам
Может быть, вы пропустили двоеточие :между httpи Proxy? http::Proxyвместо http:Proxy.
Gonmator

Ответы:

18

Исходя из моего прошлого опыта, в целом Ubuntu (GNOME) не очень хорошо работает с PAC (Automatic Config). Pac (Proxy Auto-config) - это, в основном, логика JavaScript для определения ближайшего или наиболее подходящего для вас прокси, я настоятельно рекомендую использовать прокси-серверы напрямую (в вашем случае Network - Network Proxy).

Несколько вещей, чтобы проверить

Проверьте ваш /etc/apt/apt.conf

Network - Network Proxy 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

Если вы правильно установите переменные env, вы должны иметь возможность обновляться в CLI.

Предпочитаю IPv4

Я заметил, что apt-getпытался подключиться к серверам обновлений, используя их IPv6-адрес. Это может вызвать проблемы (иногда срок действия адресов IPV6 истекает или изменяется).

Вы можете редактировать /etc/gai.confи добавлять, precedence ::ffff:0:0/96 100чтобы предпочесть ipv4 над ipv6.

Подробнее

Терри Ван
источник
Спасибо за ответ. Значение, которое я помещаю в «/etc/apt/apt.conf», представляет собой фактический URI и сокет, полученный из файла .pac, а не URI самого файла .pac (это то, что я указал в «системных настройках / сети / Сетевой прокси ".
Даниэль Глассер
Я зашел в «Системные настройки / Сеть / Сетевой прокси» и использовал ручную настройку; это обновило "/etc/apt/apt.conf". Я также отключил IPv4, отредактировав "/etc/sysctl.conf". Это, кажется, добилось цели. Спасибо за вашу помощь.
Даниэль Глассер
Не правда, apt-get никогда не использует http_proxyни переменные окружения.
Брайам
@Braiam сделать man apt.confи посмотреть http::Proxy. Я также обновил ответ. Также я использую http_proxyи https_proxyпеременные среды для использования в apt-getтечение многих лет. Сделайте некоторые исследования, прежде чем голосовать вниз.
Терри Ван
Кроме того, исследуйте себя! Запустите sudo apt-get -o Debug::Acquire::http=true updateи проверьте сами, если только установка переменной окружения использует прокси. И если вы использовали прокси в течение года, обновляйтесь .
Брайам
5

Я считаю, что у меня была эта проблема, и ответ прост. Синтаксис имеет решающее значение. Это должно выглядеть так:

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

(Есть дополнительные ":" и завершающий ";")

кк
источник
1

@Braiam

Я думаю, что лучше начать отдельный ответ, чтобы уточнить вещи.

Я провел быстрый тест с использованием Vagrant и виртуальной машины Ubuntu 13.04 Raring x86_64 за брандмауэром.

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. Я также сделал ackи agпросмотр всех файлов и подкаталогов, /etc/aptчтобы убедиться, что в файлах конфигурации 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-й - сбросить переменные окружения

сбросить env vars => unset {http_proxy,https_proxy,ftp_proxy}

Теперь apt-get не смог подключиться.

Вывод

Точно так же, как man apt.confи в случае, если http :: Proxy НЕ установлен, http_proxyбудет использоваться переменная окружения.

Кстати, я также пользователь Arch Linux. Pacman работает аналогичным образом, если я не использую wgetили использую curlпрокси-сервер pacman.conf, он будет использовать переменные окружения `{http_proxy, https_proxy, ftp_proxy} '.

Обновление sudo НЕ сохраняет переменные среды. Вот почему sudo apt-get updateне удается. Чтобы обойти проблему (сохранить переменные окружения прокси), используйте sudo -E apt-get update.

Терри Ван
источник
Кстати, я не получаю уведомления о пинге в ответах. Кроме того, посмотрите мой комментарий, попробуйте sudoвместо этого войти в систему как root и понять, почему я сказал, что это не работает.
Брайам
@Braiam Я сделал еще один тест. sudoНЕ сохраняет переменные окружения, вот в чем проблема! Но вы можете обойти это, используя sudo -E apt-get update && apt-get dist-upgrade;-)
Терри Ван
Я тоже сказал то же самое в своем другом комментарии : S
Braiam
Мне нравится, как вы разъяснили ответ. Решением моей проблемы был совет "sudo -E". Я не помню, чтобы мне когда-либо приходилось использовать опцию -E.
DaShaun