ฉันได้ทำการวิจัยเกี่ยวกับโซลูชันจำนวนมากและนักพัฒนา Ubuntu บางคนได้กำหนดค่าพร็อกซี (ตาม Squid) สำหรับ 10.04 และใหม่กว่า squid-deb-proxy
มันเรียกว่า มันต้องการเพียงเครื่องที่จะทำหน้าที่เป็นเซิร์ฟเวอร์ องค์กรขนาดใหญ่มักใช้กระจกเต็มของตัวเอง แต่สำหรับคนส่วนใหญ่การทำมิเรอร์แบบออนดีมานด์ก็เพียงพอแล้ว
ทำไมต้อง squid-deb-proxy?
- ไม่มีการแก้ไขไฟล์ในฝั่งไคลเอ็นต์
- ใช้ zeroconf เพื่อให้ลูกค้าเป็น "zero config"
- ใช้พร็อกซีโซลูชันโซลิดสเตตที่มีอยู่แทนที่จะเขียนเครื่องมือใหม่
- ติดตั้งง่ายสำหรับผู้ดูแลระบบ Linux ทั่วไป
กำหนดค่าเซิร์ฟเวอร์
บนเครื่องคุณต้องการทำหน้าที่เป็นเซิร์ฟเวอร์ติดตั้งเครื่องมือด้วย:
sudo apt-get install squid-deb-proxy avahi-utils
ตอนนี้เริ่มบิตบริการ:
sudo start squid-deb-proxy
และบิต avahi (คุณไม่ต้องการสิ่งนี้ถ้าคุณใช้เวลา 12.04+):
sudo start squid-deb-proxy-avahi
นี้จะติดตั้งพร็อกซีเซิร์ฟเวอร์ (ซึ่งฟังพอร์ต 8000 โดยค่าเริ่มต้น) และเครื่องมือ avahi ที่จำเป็นสำหรับเซิร์ฟเวอร์ในการโฆษณาตัวเองบนเครือข่ายของคุณผ่านทาง zeroconf
การกำหนดค่าไคลเอนต์
ในคอมพิวเตอร์แต่ละเครื่องที่คุณต้องการใช้แคช (ไคลเอนต์และเซิร์ฟเวอร์เองเพื่อให้สามารถใช้แคชได้) คุณต้องติดตั้งเครื่องมือฝั่งไคลเอ็นต์ที่ให้มองหาเซิร์ฟเวอร์โดยอัตโนมัติคลิกที่นี่ :
หรือผ่านทางบรรทัดคำสั่ง:
sudo apt-get install squid-deb-proxy-client
ทางเลือก : เพื่อประสิทธิภาพสูงสุดคุณควรตั้งให้เครื่องหนึ่งเครื่องดาวน์โหลดการอัพเดทโดยอัตโนมัติดังนั้นเมื่อเครื่องอื่นของคุณต้องการมันก็จะอยู่ในแคชแล้ว คุณสามารถทำได้โดยไปที่ System-> Administration-> Update Manager จากนั้นคลิกที่ปุ่ม "การตั้งค่า ... " ในแท็บอัปเดตตั้งให้ดาวน์โหลดการอัปเดตทั้งหมดโดยอัตโนมัติ
การแคชแหล่งข้อมูลของบุคคลที่สาม
ตามค่าเริ่มต้นแคชจะถูกตั้งค่าเป็นที่เก็บแคชอย่างเป็นทางการของ Ubuntu เท่านั้น /etc/squid-deb-proxy/mirror-dstdomain.acl
จะเพิ่มมากขึ้นคุณจะต้องเพิ่มลงในรายการของแหล่งที่มาที่ นี่คือที่ที่คุณสามารถเพิ่ม ppa.launchpad.net หรือบริการอื่น ๆ ที่คุณอาจใช้ หลังจากทำการเปลี่ยนแปลงไฟล์นี้คุณจะต้องเรียกใช้sudo restart squid-deb-proxy
เพื่อให้การเปลี่ยนแปลงมีผล
กำหนดค่าด้วยตนเอง
หากด้วยเหตุผลบางอย่างที่คุณไม่ต้องการใช้ zeroconf (สำหรับเหตุผลเครือข่ายหรืออะไรก็ตาม) คุณสามารถตั้งค่าไคลเอนต์ให้ใช้พรอกซีด้วยตนเองโดยแก้ไข/etc/apt/apt.conf
และเพิ่ม stanza ต่อไปนี้ (แทนที่ 0.0.0.0 ด้วยที่อยู่ IP ของเซิร์ฟเวอร์ ):
Acquire {
Retries "0";
HTTP { Proxy "http://0.0.0.0:8000"; };
};
ไฟร์วอลล์
ในกรณีที่คุณใช้ไฟร์วอลล์ avahi ใช้ 5353 ที่อยู่ 224.0.0.0/4 และต้องการกฎที่มีลักษณะดังนี้:
# Specifically port 5353 which avahi uses
-A INPUT -i eth2 -d 224.0.0.0/4 --dport 5353 -j ACCEPT
# OR
# Wide open so all local broadcasting works
-A INPUT -i eth2 -d 224.0.0.0/4 -j ACCEPT
ถัดไปคุณต้องเปิดพอร์ต TCP 8000 สำหรับการสื่อสารจริงผ่านพร็อกซี บางอย่างมากขึ้นหรือน้อยลงเช่นนี้:
-A INPUT -i eth2 -p tcp -m tcp --dport 8000 -d 192.168.0.1 -s 192.168.0.0/24 --syn -j ACCEPT
กฎเหล่านี้มีไว้เพื่อช่วยคุณ พวกเขาอาจจะไม่ตรงกับการตั้งค่าของคุณแบบหนึ่งต่อหนึ่ง (เช่นอินเทอร์เฟซผิด, ที่อยู่ IP ของเครือข่ายส่วนตัวผิด ฯลฯ )
ยืนยันการทำงาน
ก่อนอื่นให้บันทึกบนเซิร์ฟเวอร์เพื่อให้คุณสามารถดูได้: tail -F /var/log/squid-deb-proxy/access.log
จากนั้นเรียกใช้การอัปเดตบนเครื่องที่ติดตั้งไคลเอนต์ บันทึกควรเริ่มเลื่อนด้วยรายการดังนี้:
1307310795.647 32 192.168.1.106 TCP_MISS/302 768 GET http://us.archive.ubuntu.com/ubuntu/dists/natty-proposed/universe/i18n/Translation-en.xz - DIRECT/141.210.26.10 text/html
1307310795.683 34 192.168.1.106 TCP_MISS/302 752 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/main/i18n/Translation-en_US.lzma - DIRECT/141.210.26.10 text/html
1307310795.716 32 192.168.1.106 TCP_MISS/302 746 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/main/i18n/Translation-en.lzma - DIRECT/141.210.26.10 text/html
1307310795.750 32 192.168.1.106 TCP_MISS/302 764 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/multiverse/i18n/Translation-en_US.lzma - DIRECT/141.210.26.10 text/html
1307310795.784 32 192.168.1.106 TCP_MISS/302 758 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/multiverse/i18n/Translation-en.lzma - DIRECT/141.210.26.10 text/html
1307310795.817 32 192.168.1.106 TCP_MISS/404 657 GET http://us.archive.ubuntu.com/dists/natty-proposed/multiverse/i18n/Translation-en_US.xz - DIRECT/141.210.26.10 text/html
ซึ่งหมายความว่าลูกค้ามองเห็นแคช แต่หายไปซึ่งคาดว่าจะไม่ได้แคชเลย แต่ละการเรียกใช้ที่ตามมาควรแสดงเป็น TCP_HIT คุณสามารถค้นหาไฟล์ squid cache เอง/var/cache/squid-deb-proxy
ได้
ใช้มัน
จากนั้นในเครื่องทั้งหมดในเครือข่ายของคุณจะตรวจสอบแคชก่อนที่จะกดเครือข่ายภายนอกเพื่อดึงแพคเกจ หากมีแพ็กเกจใหม่พร้อมใช้งานเครื่องแรกจะดาวน์โหลดจากเน็ตหลังจากการร้องขอที่ตามมาสำหรับแพ็คเกจนั้นจะมาจากเซิร์ฟเวอร์ไปยังไคลเอนต์
ทำ
เรายังต้องเปิดใช้งาน apt เพียงแค่ใช้แคชที่โฆษณาบนเครือข่ายนอกกรอบและตามค่าเริ่มต้นดังนั้นคุณไม่จำเป็นต้องติดตั้งชิ้นส่วนไคลเอนต์ เราต้องแก้ไขข้อผิดพลาดที่ deb ของ 403 ไม่อยู่ในรายการมิเรอร์