Tôi đã thực hiện một số nghiên cứu về một loạt các giải pháp và một số nhà phát triển Ubuntu đã đưa ra một cấu hình proxy (dựa trên Squid) cho 10.04 trở đi. Nó được gọi là squid-deb-proxy
. Nó chỉ yêu cầu một máy để hoạt động như máy chủ. Các tổ chức lớn thường điều hành gương đầy đủ của riêng họ nhưng đối với hầu hết mọi người, việc phản chiếu theo yêu cầu là đủ.
Tại sao mực-deb-proxy?
- Không chỉnh sửa các tập tin ở phía khách hàng.
- Sử dụng zeroconf để khách hàng là "zero config"
- Sử dụng một giải pháp proxy vững chắc hiện có thay vì viết một công cụ mới.
- Dễ dàng thiết lập cho một quản trị viên Linux điển hình.
Cấu hình máy chủ
Trên máy bạn muốn hoạt động như một máy chủ cài đặt công cụ với:
sudo apt-get install squid-deb-proxy avahi-utils
Bây giờ bắt đầu các bit dịch vụ:
sudo start squid-deb-proxy
Và các bit avahi (Bạn không cần điều này nếu bạn ở trên 12.04+):
sudo start squid-deb-proxy-avahi
Điều này sẽ cài đặt máy chủ proxy (nghe theo cổng 8000 theo mặc định) và các công cụ avahi cần thiết cho máy chủ để quảng cáo trên mạng của bạn thông qua zeroconf.
Cấu hình máy khách
Trên mỗi máy tính mà bạn muốn sử dụng bộ đệm (máy khách và chính máy chủ để nó cũng có thể sử dụng bộ đệm), bạn cần cài đặt công cụ phía máy khách để tự động tìm máy chủ, hãy nhấp vào đây :
hoặc thông qua dòng lệnh:
sudo apt-get install squid-deb-proxy-client
Tùy chọn : Để đạt hiệu quả tối đa, bạn nên đặt một máy tự động tải xuống các bản cập nhật, để khi các máy khác của bạn cần, nó đã có trong bộ đệm. Bạn có thể thực hiện việc này bằng cách đi tới Hệ thống-> Quản trị-> Trình quản lý cập nhật, sau đó nhấp vào nút "Cài đặt ...", trong tab Cập nhật, đặt nó để tự động tải xuống tất cả các bản cập nhật.
Bộ nhớ đệm của bên thứ 3
Theo mặc định, bộ đệm được thiết lập để chỉ lưu trữ bộ nhớ cache chính thức của Ubuntu. Để thêm nhiều hơn, bạn cần thêm chúng vào danh sách các nguồn tại /etc/squid-deb-proxy/mirror-dstdomain.acl
. Đây là nơi bạn có thể thêm ppa.launchpad.net hoặc các dịch vụ khác mà bạn có thể sử dụng. Sau khi thực hiện các thay đổi cho tệp này, bạn phải chạy sudo restart squid-deb-proxy
để các thay đổi có hiệu lực.
Cấu hình thủ công
Nếu vì lý do nào đó bạn không muốn sử dụng zeroconf (vì lý do mạng hoặc bất cứ điều gì), bạn có thể tự đặt khách hàng sử dụng proxy bằng cách chỉnh sửa /etc/apt/apt.conf
và thêm đoạn thơ sau, (thay thế 0.0.0.0 bằng địa chỉ IP của máy chủ ):
Acquire {
Retries "0";
HTTP { Proxy "http://0.0.0.0:8000"; };
};
Bức tường lửa
Trong trường hợp bạn đang sử dụng tường lửa, avahi sử dụng 5353 qua địa chỉ 224.0.0.0/4 và yêu cầu một quy tắc giống như sau:
# 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
Tiếp theo, bạn cần mở cổng TCP 8000 để liên lạc thực tế thông qua proxy. Một cái gì đó ít nhiều như thế này:
-A INPUT -i eth2 -p tcp -m tcp --dport 8000 -d 192.168.0.1 -s 192.168.0.0/24 --syn -j ACCEPT
Những quy tắc này chỉ để giúp bạn. Họ có thể sẽ không khớp với thiết lập của bạn với một. (tức là giao diện sai, địa chỉ IP mạng riêng sai, v.v.)
Xác nhận nó hoạt động
Đầu tiên, theo dõi nhật ký trên máy chủ để bạn có thể xem nó: tail -F /var/log/squid-deb-proxy/access.log
và sau đó chạy bản cập nhật trên bất kỳ máy nào đã cài đặt máy khách; Nhật ký sẽ bắt đầu cuộn với các mục như thế này:
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
Điều đó có nghĩa là các máy khách nhìn thấy bộ đệm nhưng thiếu nó, điều này được mong đợi vì nó chưa được lưu vào bộ nhớ cache. Mỗi lần chạy tiếp theo sẽ hiển thị dưới dạng TCP_HIT. Bạn có thể tìm thấy các tập tin bộ nhớ cache mực /var/cache/squid-deb-proxy
.
Sử dụng nó
Từ đó trở đi, tất cả các máy trên mạng của bạn sẽ kiểm tra bộ đệm trước khi nhấn mạng bên ngoài để tìm nạp các gói. Nếu có sẵn các gói mới thì máy đầu tiên sẽ tải xuống từ mạng, sau đó các yêu cầu tiếp theo cho gói đó sẽ đến từ máy chủ cho khách hàng.
LÀM
Chúng tôi vẫn cần kích hoạt apt để chỉ sử dụng bộ đệm được quảng cáo trên mạng và theo mặc định, do đó bạn không cần phải cài đặt phần máy khách. Chúng tôi cũng cần sửa lỗi mà 403 của deb không có trong danh sách nhân bản.