Amazon Linux 1 또는 Amazon Linux 2를 실행하는 EC2 인스턴스에서 yum을 사용할 때 오류가 발생하는 이유는 무엇인가요?

4분 분량
0

Amazon Linux 1 또는 Amazon Linux 2를 실행하는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 yum을 사용할 때 오류가 발생하는 이유는 무엇인가요?

간략한 설명

yum 명령의 출력 메시지를 사용하여 발생한 오류를 확인합니다. 다음은 일반적인 오류 메시지입니다.

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

해결 방법

Connection timed out XXXX milliseconds

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

3.    다음 옵션 중 하나를 사용하여 EC2 인스턴스가 Amazon Linux 리포지토리에 액세스할 수 있는지 확인합니다.

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

자세한 내용은 fedoraproject.org 웹 사이트의 프록시 서버와 함께 yum 사용을 참조하세요.

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

Amazon Linux 1

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

Amazon Linux 2

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

참고: curl은 모든 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 Error 403 - Forbidden

1.    인스턴스의 VPC에서 Amazon S3 VPC 엔드포인트를 사용하는 경우 연결된 정책이 다음 리소스에서 s3:GetObject API 호출을 허용하는지 확인합니다.

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에 대한 엔드포인트 정책을 참조하세요.

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

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

1.    다음 명령을 실행하여 /etc/yum/vars디렉토리가 사용자 정의 yum 변수를 정의하는지 확인합니다. 디렉토리에는 awsdomainawsregion변수가 포함되어야 합니다. 다음 예시 명령에서 us-east-1을 사용자 인스턴스의 리전으로 바꿉니다.

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

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

2.    인스턴스의 DNS 확인을 확인합니다. 인스턴스는 Amazon Linux 리포지토리의 도메인 이름을 확인해야 합니다.

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

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

169.254.169.253 IPv4 주소와 fd00:ec2::253 IPv6 주소에서 Amazon이 제공한 DNS 서버에 대한 쿼리는 성공합니다. VPC IPv4 네트워크 범위에 2를 더한 기본 예약 IP 주소에서 Amazon이 제공한 DNS 서버에 대한 쿼리도 성공합니다. IPv6 주소는 Nitro 시스템에 구축된 EC2 인스턴스에서만 액세스할 수 있습니다.

HTTP Error 407 - Proxy Authentication Required

이 문제는 yum에 프록시 서버에 대한 적절한 인증 자격 증명이 없기 때문에 프록시가 요청을 완료할 수 없는 경우에 발생합니다. 프록시를 사용하도록 yum을 구성하려면 다음 파라미터를 사용하여 /etc/yum.conf 파일을 수정합니다.

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

Resolving timed out after 5000 milliseconds

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

cat /etc/resolv.conf
nameserver YourDNSIP

yum 구성 파일제한 시간 값을 수정하여 5,000밀리초의 제한 시간 기간을 수정할 수 있습니다.

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

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

AWS 공식
AWS 공식업데이트됨 4달 전