apt.conf“ ได้รับ :: http: พรอกซี” proxyserver: พอร์ต "ดูเหมือนว่าไม่ควรใช้ (Ubuntu 13.04 ภายใต้ Virtual Box บน Win7)


13

สำหรับการติดตั้ง Ubuntu 13.04 Desktop ใน VirtualBox VM ฉันอยู่ในเครือข่าย corprate ที่มีพร็อกซี 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.

ฉันไม่แน่ใจว่าสิ่งที่ฉันทำผิด

--- Update ---- ฉันได้ลอง:

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

"xyz" เป็นของหลักสูตรผู้ถือ; ฉันสงสัยว่าคนที่รักษาความปลอดภัยของนายจ้างของฉันจะดูดีเมื่อฉันโพสต์หมายเลขจริง ฉันไม่เห็นความแตกต่างในการติดตามแพ็คเก็ต - "apt-get" ยังคงใช้ที่อยู่ IP จริงและพอร์ต 80 ฉันทำผิดโดยเจตนาในไฟล์ apt.conf และ "apt-get" ออกจากข้อผิดพลาดดังนั้นฉันจึง แน่ใจว่าเห็นบรรทัดการกำหนดค่านี้สำหรับพร็อกซี แต่ดูเหมือนจะไม่ให้เกียรติ

ฉันใช้การเชื่อมต่อเครือข่าย "NAT" เนื่องจากขัดต่อนโยบาย IT ที่นี่เพื่อเชื่อมระหว่างเครือข่ายและเซิร์ฟเวอร์ DHCP ให้ที่อยู่กับที่อยู่ MAC ที่รู้จักเท่านั้น ฉันไม่ต้องการให้การรักษาความปลอดภัยด้านไอทีโจมตีบนคิวบ์ของฉัน (อีกครั้ง)


เรียนรู้สิ่งใหม่ทุกวัน ดูเหมือนว่า "/etc/apt/apt.conf" จะได้รับการอัปเดตเฉพาะเมื่อคุณใช้ตัวเลือกการกำหนดค่าพร็อกซีด้วยตนเองใน "การตั้งค่าระบบ / เครือข่าย / เครือข่ายพร็อกซี่" จากนั้นฉันก็เข้าไปข้างในและแสดงความคิดเห็นรายการที่ฉันทำในไฟล์นั้นด้วยตนเองและปิดการใช้งาน IPv6 รายการที่สร้างโดย GUI นั้นค่อนข้างเหมือนกับสิ่งที่ฉันเริ่มต้นด้วย แต่ตอนนี้ "apt-get" ใช้งานได้แล้ว คงจะดีหากปิดการใช้งาน IPv6 ผ่าน GUI แต่การแก้ไข "/etc/sysctl.conf" ทำได้ดี ขอขอบคุณ @ terry-wang
Daniel Glasser

คุณสามารถเพิ่มคำตอบนั้นเป็นคำตอบได้ไหม? ปัญหาของคุณคือ ipv6 ไม่ได้ตั้งค่าพรอกซีอย่างไม่ถูกต้อง
Braiam

คุณอาจคิดถึงเครื่องหมายโคลอน:ระหว่างhttpและProxy? แทนhttp::Proxy http:Proxy
Gonmator

คำตอบ:


18

จากประสบการณ์ที่ผ่านมา Ubuntu โดยรวม (GNOME) ใช้งานได้ไม่ดีกับ PAC (การกำหนดค่าอัตโนมัติ) Pac (การกำหนดค่าพร็อกซีอัตโนมัติ) โดยพื้นฐานแล้วเป็นตรรกะจาวาสคริปต์เพื่อกำหนดพร็อกซีที่ใกล้เคียงที่สุดหรือเหมาะสมที่สุดสำหรับคุณฉันขอแนะนำให้ใช้พร็อกซีเซิร์ฟเวอร์โดยตรง (ในกรณีของคุณเครือข่าย - เครือข่ายพร็อกซี่)

ตรวจสอบบางสิ่ง

ตรวจสอบ /etc/apt/apt.conf ของคุณ

เครือข่าย -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ตัวแปรสภาพแวดล้อม

จาก man page ของ 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 เอง (นั่นคือสิ่งที่ฉันใส่ใน "การตั้งค่าระบบ / ระบบเครือข่าย / พร็อกซีเครือข่าย ".
Daniel Glasser

ฉันเข้าสู่ "การตั้งค่าระบบ / เครือข่าย / เครือข่ายพรอกซี" และใช้การกำหนดค่าด้วยตนเอง สิ่งนี้ได้อัปเดต "/etc/apt/apt.conf" ฉันยังปิดการใช้งาน IPv4 ด้วยการแก้ไข "/etc/sysctl.conf" ดูเหมือนว่าจะได้ทำเคล็ดลับ ขอบคุณสำหรับความช่วยเหลือของคุณ.
Daniel Glasser

ไม่เป็นความจริง, apt-get ไม่เคยใช้http_proxyหรือตัวแปรสภาพแวดล้อมใด ๆ
Braiam

@Braiam ทำและดูman apt.conf http::Proxyฉันได้อัปเดตคำตอบแล้ว นอกจากนี้ฉันได้ใช้http_proxyและhttps_proxyตัวแปรสภาพแวดล้อมเพื่อใช้กับapt-getปี ทำวิจัยก่อนลงคะแนน
เทอร์รี่วัง

นอกจากนี้ทำการค้นคว้าด้วยตัวเอง! เรียกใช้sudo apt-get -o Debug::Acquire::http=true updateและตรวจสอบตัวเองถ้าเพียง แต่การตั้งค่าตัวแปรสภาพแวดล้อมใช้พร็อกซี่ และถ้าคุณกำลังใช้พร็อกซี่สำหรับปีรับตัวเองมีการปรับปรุง
Braiam

5

ฉันเชื่อว่าฉันมีปัญหามากและคำตอบนั้นง่าย ไวยากรณ์มีความสำคัญ จะต้องมีลักษณะเช่นนี้:

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

(มีพิเศษ ":" และการยกเลิก ";")


1

@Braiam

ฉันคิดว่าเป็นการดีกว่าที่จะเริ่มคำตอบแยกต่างหากเพื่อชี้แจงสิ่งต่าง ๆ

ฉันทำการทดสอบอย่างรวดเร็วโดยใช้ Vagrant และ Ubuntu 13.04 Raring x86_64 VM หลังไฟร์วอลล์

apt-get version คือ 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)]

2nd - ตั้งค่าตัวแปรสภาพแวดล้อม

เพียงตั้งค่าตัวแปรพร็อกซี

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จะใช้ตัวแปรสภาพแวดล้อม

BTW : ฉันยังเป็นผู้ใช้ Arch Linux Pacman ทำงานในลักษณะที่คล้ายกันหากฉันไม่ได้ใช้wgetหรือcurlมีพร็อกซีpacman.confมันจะใช้ตัวแปรสภาพแวดล้อม `{http_proxy, https_proxy, ftp_proxy}}

การอัพเดต sudoไม่เก็บรักษาตัวแปรสภาพแวดล้อม นั่นเป็นเหตุผลที่sudo apt-get updateล้มเหลว เมื่อต้องการแก้ปัญหา (รักษาตัวแปรสภาพแวดล้อมพร็อกซี่), sudo -E apt-get updateการใช้งาน


Btw ฉันไม่ได้รับการแจ้งเตือนคำตอบ ping นอกจากนี้ให้ดูความคิดเห็นของฉันลองใช้sudoแทนการเข้าสู่ระบบเป็น root และดูว่าทำไมฉันถึงบอกว่ามันไม่ทำงาน
Braiam

@Braiam ฉันทำการทดสอบเพิ่มเติม sudoไม่รักษาตัวแปรสภาพแวดล้อมนั่นคือปัญหา! แต่คุณสามารถแก้ไขได้โดยใช้sudo -E apt-get update && apt-get dist-upgrade;-)
Terry Wang

ฉันพูดแบบเดียวกันในความคิดเห็นอื่นของฉัน : S
Braiam

ฉันชอบวิธีที่คุณชี้แจงคำตอบ ทางออกสำหรับปัญหาของฉันคือปลาย "sudo -E" ฉันจำไม่ได้ว่าเคยต้องการใช้ตัวเลือก -E ในอดีต
DaShaun

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.