Amazon Linux 1, Amazon Linux 2, Amazon Linux 2023을 실행하는 EC2 인스턴스에서 yum을 사용할 때 오류가 발생하는 이유는 무엇입니까?

5분 분량
0

Amazon Linux 1, Amazon Linux 2, Amazon Linux 2023을 실행하는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 yum을 사용할 때 오류가 발생합니다.

간략한 설명

어떤 오류가 발생했는지 확인하려면 yum 명령의 출력 메시지를 확인합니다. 다음과 같은 일반적인 오류 메시지 중 하나가 표시될 수 있습니다.

  • "Connection timed out ABCD milliseconds"
  • "HTTP Error 403 - Forbidden"
  • "Could not resolve host: abcdexyz.$awsregion.$awsdomain"
  • "HTTP Error 407 - Proxy Authentication Required"
  • "Resolving timed out after 5000 milliseconds"

해결 방법

Connection timed out ABCD milliseconds

이 문제를 해결하려면 인스턴스에 연결된 보안 그룹이 아웃 바운드 HTTP나 HTTPS 트래픽을 허용하는지 확인합니다. 또한 인스턴스의 서브넷과 연결된 네트워크 액세스 제어 목록(네트워크 ACL)이 아웃바운드 HTTP 또는 HTTPS 트래픽을 허용하는지 확인합니다.

다음은 포트 80과 443에서 아웃바운드 트래픽을 허용하는 사용자 지정 네트워크 ACL의 예입니다.

Inbound rules
Rule#    Type                    Protocol    Port Range    Source        Allow/Deny
100      Custom TCP Rule         TCP (6)     1024-65535    0.0.0.0/0     ALLOW
101      Custom TCP Rule         TCP (6)     1024-65535    ::/0          ALLOW
*        ALL Traffic             ALL         ALL           ::/0          DENY
*        ALL Traffic             ALL         ALL           0.0.0.0/0     DENY
Outbound rules
Rule #    Type                   Protocol    Port Range    Source       Allow/Deny
100       HTTP (80)              TCP (6)     80            0.0.0.0/0    ALLOW
101       HTTPS (443)            TCP (6)     443           0.0.0.0/0    ALLOW
102       HTTP (80)              TCP (6)     80            ::/0         ALLOW
103       HTTPS (443)            TCP (6)     443           ::/0         ALLOW
*         ALL Traffic            ALL         ALL           ::/0         DENY
*         ALL Traffic            ALL         ALL           0.0.0.0/0    DENY

Amazon Linux 리포지토리에 액세스하려면 인스턴스에서 구성을 기반으로 다음 인터넷 액세스 설정 중 하나를 사용해야 합니다.

  • 퍼블릭 서브넷에 있는 인스턴스의 경우 인터넷 게이트웨이를 사용합니다.
  • 프라이빗 서브넷에 있는 인스턴스의 경우 NAT 게이트웨이 또는 NAT 인스턴스를 사용합니다.
  • 퍼블릭 또는 프라이빗 서브넷에 있는 인스턴스의 경우 Amazon Simple Storage Service(Amazon S3) 가상 프라이빗 클라우드(VPC) 엔드포인트를 사용합니다.
  • 프록시가 있는 프라이빗 서브넷의 인스턴스의 경우 구성 파일에 다음 파라미터를 추가하여 프록시를 사용하도록 yum을 구성합니다.
    proxy=http://proxy-server-IP-address:proxy_port
    proxy_username=proxy-user-name
    proxy_password=proxy-password
    참고: 프록시를 이미 구성하고 동일한 구성 파일을 사용하는 경우 프록시 암호는 파일에서 일반 텍스트로 표시됩니다. proxy-port를 프록시에서 사용하는 포트로, proxy-user-name을 프록시 사용자 이름으로, proxy-password를 프록시 암호로 바꾸십시오. 자세한 내용은 Fedora Project 웹사이트에서 프록시 서버에서 yum 사용을 참조하십시오. Amazon Linux 1 및 Amazon Linux 2의 경우 /etc/yum.conf 파일을 수정합니다. Amazon Linux 2023의 경우 /etc/dnf/dnf.conf 파일을 수정합니다.

인스턴스를 구성한 후 다음 curl 명령을 실행하여 인스턴스가 리포지토리에 액세스할 수 있는지 확인합니다.

Amazon Linux 2023:

curl -I al2023-repos-us-east-1-de612dc2.s3.dualstack.us-east-1.amazonaws.com

Amazon Linux 1:

curl -I repo.us-east-1.amazonaws.com

Amazon Linux 2:

curl -I amazonlinux.us-east-1.amazonaws.com

참고: 위의 명령에서 us-east-1을 인스턴스의 AWS 리전으로 바꾸십시오.

**curl ** 명령은 모든 Amazon Machine Image(AMI)에 사전 설치되어 있습니다. 하지만 자격 증명이 없으면 Amazon Linux 리포지토리에 액세스할 수 없고, curl 명령으로는 yum 리포지토리의 자격 증명을 가져올 수 없습니다. curl 명령을 실행할 때 따라서 다음 예시와 같은 액세스 거부 오류 메시지가 표시됩니다.

$ curl -I amazonlinux.us-east-1.amazonaws.com
HTTP/1.1 403 Forbidden
x-amz-bucket-region: us-east-1
x-amz-request-id: xxxxxxxx
x-amz-id-2: xxxxxxxxxxxxx=
Content-Type: application/xml
Date: Thu, 17 Nov 2022 16:59:59 GMT
Server: AmazonS3

curl 명령을 사용하여 시간 초과 문제가 아직도 발생하는지 테스트합니다. 오류 메시지 예시에서는 네트워크에 연결할 수 있고 시간 초과 문제가 더 이상 발생하지 않음을 보여줍니다.

HTTP Error 403 - Forbidden

VPC 엔드포인트 사용

Amazon S3 VPC 엔드포인트를 사용하는 경우 연결된 정책이 Linux 버전을 기반으로 s3:GetObject API 호출을 허용하는지 확인합니다.

Amazon Linux 2023: arn:aws:s3:::al2023-repos-region-de612dc2/*

Amazon Linux 1: arn:aws:s3:::packages.region.amazonaws.com/* and arn:aws:s3:::repo.region.amazonaws.com/*

Amazon Linux 2: arn:aws:s3:::amazonlinux.region.amazonaws.com/ and arn:aws:s3:::amazonlinux-2-repos-region/

참고: 위의 리소스에서 region을 인스턴스의 리전으로 바꾸십시오.

자세한 내용은 Amazon S3용 게이트웨이 엔드포인트를 참조하십시오.

프록시 사용

프록시를 사용하여 Amazon Linux 리포지토리에 액세스하는 경우, 프록시 구성의 허용 목록에 .amazonaws.com 하위 도메인이 있는지 확인하십시오.

지원되지 않는 리포지토리 사용

다음 오류가 표시될 수 있습니다. "Error: Failed to download metadata for repo 'amazonlinux': GPG verification is activated, but GPG signature is not available. This may be an error or the repository does not support GPG verification". 이는 /etc/yum.repos.d/ 디렉터리의 리포지토리 파일(예: repository.repo 파일) 또는 /etc/yum.conf에서 repo_gpgcheck를 활성화할 때 발생하는 것으로 알려진 문제입니다. Amazon Linux 2023 리포지토리에서는 메타데이터 서명이 활성화되어 있지 않습니다. 또한 지원되지 않는 리포지토리에 이 구성을 사용하는 경우 패키지 설치 또는 운영 체제(OS) 업데이트가 실패할 수 있습니다. 해결 방법은 리포지토리 repo 파일을 열고 리포지토리의 repo_gpgcheck 값을 0으로 설정하는 것입니다. 예를 들어 값을 repo_gpgcheck=0으로 설정합니다.

이 상황에 대한 자세한 내용은 GitHub 웹사이트에서 [Bug] - not able to install/upgrade packages after activating repo_gpgcheck를 참조하십시오.

Could not resolve host: abcdexyz.$awsregion.$awsdomain

/etc/yum/vars 디렉터리에는 awsdomainawsregion 변수가 있어야 합니다. 다음 명령을 실행하여 /etc/yum/vars 디렉터리가 사용자 지정 yum 변수를 정의하는지 확인합니다.

$ cat /etc/yum/vars/awsregion
us-east-1

$ cat /etc/yum/vars/awsdomain
amazonaws.com

참고: us-east-1을 인스턴스 리전으로 바꾸십시오.

인스턴스가 Amazon Linux 리포지토리의 도메인 이름을 확인해야 합니다. 인스턴스의 DNS 확인을 위해 다음 명령을 실행합니다.

$ dig amazonlinux.us-east-1.amazonaws.com

$ dig repo.us-east-1.amazonaws.com

$ dig al2023-repos-us-east-1-de612dc2

참고: us-east-1을 인스턴스 리전으로 바꾸십시오.

IPv4 주소169.254.169.253과 IPv6 주소 fd00:ec2::253에서 Amazon 제공 DNS 서버로 보내는 쿼리는 성공합니다. VPC IPv4 네트워크 범위의 기본으로 예약된 IP 주소 및 2를 더한 주소에서 Amazon 제공 DNS 서버로 보내는 쿼리도 성공합니다. IPv6 주소는 Nitro 기반 EC2 인스턴스에서만 액세스할 수 있습니다.

HTTP Error 407 - Proxy Authentication Required

yum이나 dnf에 프록시 서버에 필요한 적절한 인증 자격 증명이 없어서 프록시가 요청을 완료할 수 없는 경우 이 문제가 발생합니다. yum이나 dnf에서 프록시를 사용하도록 구성하려면 다음 파라미터로 구성 파일을 수정하십시오.

proxy=http://proxy-server-IP-address:proxy_port
proxy_username=proxy-user-name
proxy_password=proxy-password

참고: 프록시를 이미 구성하고 동일한 구성 파일을 사용하는 경우 프록시 암호는 파일에서 일반 텍스트로 표시됩니다. proxy-port를 프록시에서 사용하는 포트로, proxy-user-name을 프록시 사용자 이름으로, proxy-password를 프록시 암호로 바꾸십시오. Amazon Linux 1 및 Amazon Linux 2의 경우 /etc/yum.conf 파일을 수정합니다. Amazon Linux 2023의 경우 /etc/dnf/dnf.conf 파일을 수정합니다.

시간 초과 문제

다음 명령을 실행하여 /etc/resolv.conf 파일에서 DNS 서버 IP 주소가 올바른지 확인합니다.

cat /etc/resolv.conf
nameserver YourDNSIP

기본 시간 초과 기간인 5000ms를 수정하려면 yum 구성 파일에서 timeout 값을 수정하십시오. 자세한 내용은 die.net 웹사이트에서 yum.conf를 참조하십시오. Amazon Linux 2023의 경우 /etc/yum.repos.d/amazonlinux.repo에서 metadata_expire 값을 변경하여 시간 초과 기간을 수정합니다.

dig 명령을 사용하여 쿼리 시간을 확인하려면 다음 명령을 실행합니다.

$ dig repo.us-east-1.amazonaws.com | grep time

참고: us-east-1을 인스턴스 리전으로 바꾸십시오.

AWS 공식
AWS 공식업데이트됨 4달 전
댓글 없음