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 명령 출력 메시지를 사용해 어떤 오류가 발생했는지 확인할 수 있습니다. 다음은 일반적인 오류 메시지입니다.

  • XXX 밀리초 연결 시간 초과
  • HTTP 오류 403 - 금지됨
  • 호스트 확인 불가: xxxxxxxxx.$awsregion.$awsdomain
  • HTTP 오류 407 - 프록시 인증 필요
  • 5000 밀리초 후 확인 시간 초과

해결 방법

XXX 밀리초 연결 시간 초과

  1. EC2 인스턴스에 연결된 보안 그룹이 아웃 바운드 HTTP나 HTTPS 트래픽을 허용하는지 확인합니다.

  2. EC2 인스턴스 서브넷에 연결된 네트워크 ACL이 NACL을 통한 아웃바운드 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
  1. 다음 옵션 중 하나를 사용해 EC2 인스턴스가 Amazon Linux 리포지토리에 액세스할 수 있는지 확인하세요.
proxy=http://proxy-server-IP-address:proxy_port
proxy_username="proxy-user-name"
proxy_password="proxy-password"

자세한 내용은 웹사이트 fedoraproject.org에서 프록시가 있는 프라이빗 서버 사용을 참고하세요.

  1. 위 옵션 중 하나를 사용해 인스턴스를 구성한 후, 다음 curl 명령을 실행해 인스턴스가 리포지토리에 액세스할 수 있는지 확인합니다. 다음 명령에서 us-east-1을 인스턴스의 AWS 리전으로 바꾸세요.

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

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

telnet과 같은 소프트웨어를 설치하려면 다음 명령을 실행합니다.

sudo yum install telnet

HTTP 오류 403 - 금지됨

  1. 인스턴스 VPC에 있는 Amazon S3 VPC 엔드포인트의 경우 다음 리소스에서 s3:GetObject API 호출을 허용하는지 관련 정책을 확인하세요. 다음 예에서 리전을 내 인스턴스의 AWS 리전으로 바꾸세요.

Amazon Linux 2023:

"arn:aws:s3:::al2023-repos-us-east-1-de612dc2/*"

Amazon Linux 1:

"arn:aws:s3:::packages.region.amazonaws.com/*"

"arn:aws:s3:::repo.region.amazonaws.com/*"

Amazon Linux 2:

"arn:aws:s3:::amazonlinux.region.amazonaws.com/*"

"arn:aws:s3:::amazonlinux-2-repos-region/*"

자세한 내용은 Amazon S3용 게이트웨이 엔드포인트를 참고하세요.

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

호스트 확인 불가: xxxxxxxxx.$awsregion.$awsdomain

  1. 다음 명령을 실행해 /etc/yum/vars 디렉터리가 사용자 지정 yum 변수를 정의하는지 확인합니다. 디렉터리에 awsdomainawsregion 변수가 포함되어야 합니다. 다음 명령 예시에서 us-east-1을 내 AWS 리전으로 바꾸세요.
$ cat /etc/yum/vars/awsregion
us-east-1

$ cat /etc/yum/vars/awsdomain
amazonaws.com
  1. 다음 명령을 실행해 내 인스턴스의 DNS 확인 상태를 확인합니다. 인스턴스가 Amazon Linux 리포지토리의 도메인 이름을 확인해야 합니다.
$ dig amazonlinux.us-east-1.amazonaws.com

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

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

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

HTTP 오류 407 - 프록시 인증 필요

yum이나 dnf에 프록시 서버에 필요한 적절한 인증 자격 증명이 없어서 프록시가 요청을 완료할 수 없는 경우에 HTTP 오류 407이 발생합니다. yum이나 dnf에서 프록시를 사용하도록 구성하려면 다음 매개 변수를 사용해 /etc/yum.conf 파일을 수정하세요.

Amazon Linux 1 및 Amazon Linux 2: /etc/yum.conf
Amazon Linux 2023: /etc/dnf/dnf.conf

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

5000 밀리초 후 확인 시간 초과

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

cat /etc/resolv.conf
nameserver YourDNSIP

yum 구성 파일에서 시간 초과 값을 수정해 제한 시간 5000밀리초를 수정할 수 있습니다. 자세한 내용은 웹사이트 linux.die.net에서 yum.conf를 참고하세요.

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

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

Amazon Linux 2023의 경우 /etc/yum.repos.d/amazonlinux.re에서 metadata_expire 값을 변경하여 시간 초과 시간을 수정하세요.

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

관련 콘텐츠