apt.conf „Acquire :: http: Proxy” proxyserver: port ”wydaje się nie być używany (Ubuntu 13.04 pod Virtual Box na Win7)

13

Dotyczy to instalacji systemu Ubuntu 13.04 Desktop na maszynie wirtualnej VirtualBox. Jestem w sieci firmowej z proxy HTTP w xyz251: 9090. Skonfigurowałem system gościa za pomocą skryptu autokonfiguracji, więc Firefox działa dobrze, ale nie mogę uzyskać połączenia „apt-get” lub „Centrum oprogramowania Ubuntu” z serwerem proxy.

Utworzyłem plik „/etc/apt/apt.conf”, teraz zawiera on jeden wiersz tekstu:

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

to jest plik proxy.pac, który określiłem w „Ustawieniach systemu / sieci / sieciowym proxy” i zastosowałem do całego systemu.

Gdy korzystam z Firefoksa, śledzenie pakietów pokazuje, że połączenie TCP odbywa się za pośrednictwem korporacyjnego serwera proxy na porcie 9090, kiedy uruchamiam „Centrum oprogramowania Ubuntu” i „apt-get”, śledzenie pakietów pokazuje pakiety TCP SYN z docelowym docelowym adresem IP adres i port 80. Oczywiście nie ma odpowiedzi na pakiety SYN, ponieważ zapora korporacyjna blokuje połączenia TCP na porcie 80 przed wejściem lub wyjściem.

Z „sudo apt-get” w oknie terminala zawsze widzę:

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)]

W końcu widzę:

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.

Nie jestem wcale pewien, co robię źle.

--- Aktualizacja ---- Próbowałem również:

Acquire::http:proxy "http://user:[email protected]:9090/"

„xyz” to oczywiście symbole zastępcze; Wątpię, żeby ochroniarze mojego pracodawcy uprzejmie spojrzeli na mnie, podając rzeczywiste liczby. Nie widzę żadnej różnicy w śledzeniu pakietów - „apt-get” nadal używa rzeczywistych adresów IP i portu 80. Zrobiłem celowy błąd w pliku apt.conf i „apt-get” zakończył się błędem, więc jestem pewien, że widzi tę linię konfiguracji serwera proxy, po prostu nie wydaje się to honorować.

Korzystam z połączenia sieciowego „NAT”, ponieważ jest to sprzeczne z polityką IT, aby mostkować między sieciami, a serwer DHCP podaje adresy tylko do znanych adresów MAC. Nie chcę, żeby zabezpieczenia IT uderzały w moją kostkę (znowu).

Daniel Glasser
źródło
Naucz się czegoś nowego każdego dnia. Wygląda na to, że plik „/etc/apt/apt.conf” zostanie zaktualizowany tylko wtedy, gdy użyjesz opcji ręcznej konfiguracji serwera proxy w „Ustawieniach systemu / sieci / proxy sieci”. Następnie wszedłem i skomentowałem wpisy, które zrobiłem ręcznie w tym pliku, i wyłączyłem IPv6. Wpisy utworzone przez GUI były prawie identyczne z tym, co zacząłem, ale „apt-get” teraz działa. Byłoby miło móc wyłączyć IPv6 za pomocą GUI, ale edycja „/etc/sysctl.conf” działa dobrze. Ogromne podziękowania dla @ terry-wang
Daniel Glasser
Czy możesz dodać to jako odpowiedź? Twój problem polegał na tym, że ipv6 nie był nieprawidłowo ustawiony proxy.
Braiam
Może :bardziej brakowało Ci dwukropka między httpa Proxy? http::Proxyzamiast tego http:Proxy.
Gonmator,

Odpowiedzi:

18

Z moich wcześniejszych doświadczeń wynika, że ​​ogólnie Ubuntu (GNOME) nie działa zbyt dobrze z PAC (Automatic Config). Pac (automatyczna konfiguracja proxy) jest w zasadzie logiką JavaScript do określenia najbliższego lub najodpowiedniejszego serwera proxy, zdecydowanie zalecamy bezpośrednie korzystanie z serwerów proxy (w twoim przypadku Network - Network Proxy).

Kilka rzeczy do sprawdzenia

Sprawdź swój /etc/apt/apt.conf

Network-Networkwork Proxy GUI zaktualizuje /etc/apt/apt.confi ustawi tam informacje o proxy.

Znajdź informacje o serwerze proxy od pac

Możesz znaleźć szczegóły, czytając proxy.pacplik mimo to.

/etc/apt/apt.confPowinien więc wyglądać jak poniżej (załóżmy, że serwer proxy to => proxy.company.com port 80), NIE używaj adresu URL pac.

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

UWAGA: Jeśli w plikach konfiguracyjnych apt nie podano proxy, apt-getnastąpi powrót do http_proxyzmiennej środowiskowej.

Na stronie podręcznika apt.conf odpowiedz na komentarz z @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.

Sprawdź zmienne środowiskowe proxy

Możesz sprawdzić ustawienia proxy, uruchamiając poniższe w terminalu

echo $http_proxy
echo $https_proxy
echo $ftp_proxy

Jeśli poprawnie ustawiłeś zmienne env, powinieneś mieć możliwość aktualizacji w CLI.

Preferuj IPv4

Zauważyłem, że apt-getpróbowałem połączyć się z serwerami aktualizacji przy użyciu adresu IPv6. Może to powodować problemy (czasem adresy IPV6 wygasają lub ulegają zmianie).

Możesz edytować /etc/gai.confi dodawać, precedence ::ffff:0:0/96 100aby preferować ipv4 zamiast ipv6.

Więcej szczegółów

Terry Wang
źródło
Dzięki za odpowiedzi. Wartość, którą wpisuję w „/etc/apt/apt.conf”, to rzeczywisty identyfikator URI i gniazdo pochodzące z pliku .pac, a nie identyfikator URI samego pliku .pac (to właśnie umieściłem w „ustawieniach systemu / sieci / proxy sieci ”.
Daniel Glasser,
Poszedłem do „Ustawienia systemu / Sieć / proxy sieci” i użyłem konfiguracji ręcznej; zaktualizowało to „/etc/apt/apt.conf”. Wyłączyłem również IPv4, edytując „/etc/sysctl.conf”. Wydaje się, że to załatwiło sprawę. Dzięki za pomoc.
Daniel Glasser,
Nieprawda, apt-get nigdy nie używa http_proxyani żadnych zmiennych środowiskowych.
Braiam
@Braiam zrób man apt.confi zobacz http::Proxy. Zaktualizowałem również odpowiedź. Od lat używam http_proxyrównież https_proxyzmiennych środowiskowych apt-get. Przed głosowaniem wykonaj kilka badań.
Terry Wang
Badaj też sam! Uruchom sudo apt-get -o Debug::Acquire::http=true updatei sprawdź sam, czy tylko ustawienie zmiennej środowiskowej używa proxy. A jeśli korzystasz z proxy przez rok, bądź na bieżąco .
Braiam
5

Myślę, że miałem ten bardzo problem, a odpowiedź jest prosta. Składnia jest krytyczna. Musi wyglądać tak:

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

(Istnieje dodatkowe „:” i zakończenie „;”)

kh
źródło
1

@Braiam

Myślę, że lepiej jest zacząć od osobnej odpowiedzi, aby wyjaśnić różne rzeczy.

Zrobiłem szybki test, używając Vagrant i Ubuntu 13.04 Raring VM86 x86_64 za firewallem.

wersja apt-get to 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

Aktualizacja: Działa tak samo w przypadku 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. - wyczyść pliki konfiguracyjne apt

Wyczyściłem ustawienia serwera proxy w /etc/apt/apt.conf. Zrobiłem również acki agskanowałem wszystkie pliki i podkatalogi, /etc/aptaby upewnić się, że w plikach konfiguracyjnych apt nie ma ustawionego serwera proxy.

Domyślnie {http_proxy,https_proxy,ftp_proxy}zmienne env nie są ustawione.

apt-get nie mógł połączyć się z serwerami aktualizacji.

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. - ustaw zmienne środowiskowe

Wystarczy ustawić zmienne proxy

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

apt-get jest teraz w stanie się połączyć!

Zobacz wyniki debugowania (jest to coś, czego nigdy nie próbowałem).

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. - rozbroić zmienne środowiskowe

unset env vars => unset {http_proxy,https_proxy,ftp_proxy}

Teraz apt-get nie mógł się połączyć.

Wniosek

Tak jak man apt.confpowiedziano, jeśli http :: Proxy NIE jest ustawione, http_proxyzostanie użyta zmienna środowiskowa.

BTW : Jestem także użytkownikiem Arch Linux. Pacman działa w podobny sposób, jeśli nie użyję wgetlub curlz proxy pacman.conf, użyje zmiennych środowiskowych {{http_proxy, https_proxy, ftp_proxy}.

Aktualizacja sudo NIE zachowuje zmiennych środowiskowych. Właśnie dlatego sudo apt-get updatezawodzi. Aby obejść ten problem (zachowaj zmienne środowiskowe proxy), użyj sudo -E apt-get update.

Terry Wang
źródło
Przy okazji, nie otrzymuję powiadomienia o pingach w odpowiedziach. Zobacz także mój komentarz, spróbuj sudozamiast tego zalogować się jako root i zobacz, dlaczego powiedziałem, że to nie działa.
Braiam
@Braiam Zrobiłem trochę więcej testów. sudoNIE zachowuje zmiennych środowiska, to jest problem! Ale możesz to obejść za pomocą sudo -E apt-get update && apt-get dist-upgrade;-)
Terry Wang
Powiedziałem to samo w innym komentarzu : S
Braiam
Podoba mi się, jak wyjaśniłeś odpowiedź. Rozwiązaniem mojego problemu była wskazówka „sudo -E”. Nie pamiętam, aby kiedykolwiek korzystałem z opcji -E w przeszłości.
DaShaun