LAN에서 적절한 다운로드를 캐시하는 가장 좋은 방법은? 개의 Ubuntu 컴퓨터가

집에 여러 개의 Ubuntu 컴퓨터가 있고 인터넷 연결이 매우 느리고 때로는 여러 대의 컴퓨터를 한 번에 업데이트해야합니다 (특히 새로운 Ubuntu 릴리스 중에).

내 컴퓨터 중 하나만 패키지를 다운로드해야하고 다른 컴퓨터가 첫 번째 컴퓨터를 사용하여 뎁을 가져올 수있는 방법이 있습니까? 내 로컬 미러 설정과 관련이 있습니까? 아니면 프록시 서버? 아니면 더 간단하게 만들 수 있습니까?



답변

나는 많은 솔루션에 대한 연구를했고 일부 우분투 개발자는 10.04 이상에 대한 프록시 구성 (오징어 기반)을 제안했습니다. 이라고 squid-deb-proxy합니다. 시스템은 서버로 작동하기 만하면됩니다. 대기업은 일반적으로 자체 미러를 실행하지만 대부분의 사람들에게는 온 디맨드 미러링으로 충분합니다.

왜 오징어-deb-proxy?

  • 클라이언트 측에서 파일을 편집하지 않습니다.
  • 클라이언트가 “제로 구성”이되도록 zeroconf를 사용하십시오.
  • 새 도구를 작성하는 대신 기존의 견고한 프록시 솔루션을 사용하십시오.
  • 일반적인 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을 수신)와 서버가 zeroconf를 통해 네트워크에 광고하는 데 필요한 avahi 도구가 설치됩니다.

클라이언트 구성

각 컴퓨터에 당신이 (너무 캐시를 사용할 수 있도록 클라이언트 및 서버 자체) 캐시를 사용하려면, 당신은 그들을 여기를 클릭, 자동으로 서버의 적절한 살펴 보자 클라이언트 측 도구를 설치해야 할 필요가 :

소프트웨어 센터를 통해 설치

또는 명령 줄을 통해 :

sudo apt-get install squid-deb-proxy-client

선택 사항 : 효율성을 극대화하려면 한 컴퓨터에서 업데이트를 자동으로 다운로드하도록 설정해야합니다. 따라서 다른 컴퓨터에서는 필요할 때 이미 캐시에 있습니다. 시스템-> 관리-> 업데이트 관리자로 이동 한 다음 업데이트 탭에서 “설정 …”버튼을 클릭하여 모든 업데이트를 자동으로 다운로드하도록 설정하십시오.

대체 텍스트

타사 소스 캐싱

기본적으로 캐시는 공식 우분투 리포지토리 만 캐시하도록 설정되어 있습니다. 더 추가하려면의 소스 목록에 추가해야합니다 /etc/squid-deb-proxy/mirror-dstdomain.acl. 여기서 ppa.launchpad.net 또는 사용 가능한 다른 서비스를 추가 할 수 있습니다. 이 파일을 변경 한 후 변경 사항을 적용하려면 실행해야합니다 sudo restart squid-deb-proxy.

수동 구성

어떤 이유로 든 zeroconf를 사용하지 않으려는 경우 (네트워크 등의 이유로) /etc/apt/apt.conf다음 스탠자 를 편집 하고 추가하여 프록시를 사용하도록 클라이언트를 수동으로 설정할 수 있습니다 (0.0.0.0을 서버의 IP 주소로 대체하십시오) ) :

 Acquire {
   Retries "0";
   HTTP { Proxy "http://0.0.0.0:8000"; };
 };

방화벽

방화벽을 사용하는 경우 avahi는 224.0.0.0/4 주소에서 5353을 사용하며 다음과 같은 규칙이 필요합니다.

# 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로 표시되어야합니다. 오징어 캐시 파일 자체는에서 찾을 수 있습니다 /var/cache/squid-deb-proxy.

그것을 사용하여

그때부터 네트워크의 모든 컴퓨터는 외부 네트워크에 도달하기 전에 캐시를 확인하여 패키지를 가져옵니다. 사용 가능한 새 패키지가있는 경우 첫 번째 시스템은 네트워크에서 해당 패키지를 다운로드 한 후 해당 패키지에 대한 후속 요청이 서버에서 클라이언트로 전달됩니다.

할 것

우리는 여전히 네트워크에서 광고 캐시를 즉시 사용하기 위해 apt를 활성화해야하며 기본적으로 클라이언트 조각을 설치할 필요가 없습니다. 또한 403의 deb가 미러 목록에없는 버그 를 수정해야 합니다.


답변

apt-cacher-ng작은 환경 (약 20 명의 클라이언트)에서 아무런 문제가 발생하지 않았으므로 @MagicFab 언급 문제가 현재 버전 (Ubuntu 10.04 및 10.10에 설치됨)에서 해결 되었다고 가정합니다 . 서버에는 구성이 필요하지 않으며 클라이언트에게 서버를 패키지 관리자 프록시로 사용하도록 지시하면됩니다.

패키지 를 설치하면 서버가 완전히 설치 되고 구성됩니다 apt-cacher-ng.

클라이언트는 APT 프록시를 설정하여 다음을 /etc/apt/apt.conf.d/01proxy포함 하는 파일을 추가하여 구성해야합니다 (여기서 “your-apt-server”는 서버 이름 또는 IP 주소 임).

Acquire::http { Proxy "http://your-apt-server:3142"; };

완료 -이제는 어떤 소스를 사용하거나 어떤 시스템 버전을 사용하든 상관없이 서버에서 패키지를 캐시합니다 (예 : 10.04 서버는 9.10,10.04 및 11.04 클라이언트가 아무런 문제 나 충돌없이 사용할 수 있음).


네트워크간에 로밍하는 클라이언트 랩톱이 있으면 조금 더 복잡해집니다. 네트워크 주소에 따라 올바른 프록시를 설정하는 스크립트를 만들었습니다. 스크립트는 실행 가능하며에 /etc/network/if-up.d/apt-proxy있습니다. DHCP 서버에서 IPv4 주소를 수신하면 스크립트는 각 네트워크에 적합한 apt-cacher 서버를 설정합니다.

#!/bin/sh

set -e
# Don't bother when lo is configured.
if [ "$IFACE" = lo ]; then
    exit 0
fi
# Only run from ifup.
if [ "$MODE" != start ]; then
    exit 0
fi
# currently only cares about IPv4
if [ "$ADDRFAM" != inet ] && [ "$ADDRFAM" != NetworkManager ]; then
    exit 0
fi
# only run for DHCP-assigned addresses
if [ "$DHCP4_IP_ADDRESS" = "" ]; then
    exit 0
fi

# we're matching on network *broadcast* address,
#  not the specific IP address we were assigned
case "$DHCP4_BROADCAST_ADDRESS" in
    10.3.141.255)
        PROXY='Acquire::http::Proxy "http://my-home-server:3142";';
        ;;
    192.168.154.255)
        PROXY='Acquire::http::Proxy "http://work-server.foo.bar.example.com:3142";';
        ;;
    # add as needed
    *)
        # unknown, no proxying
        PROXY=""
        ;;
esac

# set the proxy
FNAME="/etc/apt/apt.conf.d/01proxy"
echo -n "$PROXY">$FNAME

exit 0


답변

가장 쉬운 해결책 중 하나는 apt-proxy를 설정하는 것입니다.

https://help.ubuntu.com/community/AptProxy 에서 우분투 문서를 읽으십시오.


답변

debmirror유틸리티를 사용하여 로컬 미러를 설정하는 것이 좋습니다.

다음은 예시입니다.

debmirror --progress --verbose --nosource --method=ftp --passive \
 --host=ftp.osuosl.org --root=pub/ubuntu \
 --dist=lucid,lucid-updates,lucid-security,lucid-backports \
 --section=main,restricted,universe,multiverse --arch=amd64 \
 /d2/ftp/mirror/ubuntu-lucid

나는 이것을 일주일에 한 번 정도 실행하고 하나 이상의 “패치 레벨”을 설정하기위한 기초로 사용합니다. 예를 들어 …

 cd /d2/ftp/mirror/
 cp -al ubuntu-lucid ubuntu-lucid-20100908

그러면 트리의 연결된 사본이 생성되며 (디스크 공간이 거의 사용되지 않음) 각 로컬 서버를 적절한 소스로 지정할 수 있습니다.


답변

소규모 네트워크 (예 : 가정 / 소규모 사무실)에서 apt-cacher-ng를 사용하여 좋은 결과를 얻었습니다. 최신 버전을 확인하지는 않았지만 서버와 클라이언트를 모두 신중하게 설정해야하며 로컬 네트워크에서만 업데이트를 얻는 클라이언트에 가장 적합하다는 것을 알고 있습니다.

나는 위의-오징어 기반 솔루션을 시도했지만 내가, 그것을 생각하지 않습니다 너무 좋아하는 것보다 여러 가지 문제를 해결하고 더 클라이언트 구성을 적용해야 하지만 이 작은 설정에있는 apt-cacher-NG를 대체 할 수있다.


답변

apt-cacher 설정하기가 가장 쉽지 않았으며 dist-upgrade에서도 살아남지 못합니다.

squid-deb-proxy서버, squid-deb-proxy-client클라이언트에 설치 하십시오 . zeroconf Avahi를 사용하므로 구성이 필요하지 않습니다.

단순한 뎁 이상을 캐시하려는 경우 오징어를 귀찮게하지 않을 것입니다. 다음은 Apache Traffic Server입니다.
http://trafficserver.readthedocs.org


답변