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 밀리초 연결 시간 초과
-
EC2 인스턴스에 연결된 보안 그룹이 아웃 바운드 HTTP나 HTTPS 트래픽을 허용하는지 확인합니다.
-
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
- 다음 옵션 중 하나를 사용해 EC2 인스턴스가 Amazon Linux 리포지토리에 액세스할 수 있는지 확인하세요.
proxy=http://proxy-server-IP-address:proxy_port
proxy_username="proxy-user-name"
proxy_password="proxy-password"
자세한 내용은 웹사이트 fedoraproject.org에서 프록시가 있는 프라이빗 서버 사용을 참고하세요.
- 위 옵션 중 하나를 사용해 인스턴스를 구성한 후, 다음 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 - 금지됨
- 인스턴스 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용 게이트웨이 엔드포인트를 참고하세요.
- 프록시를 사용해 Amazon Linux 리포지토리에 액세스하는 경우, 프록시 구성의 허용 목록에 .amazonaws.com 하위 도메인이 있는지 확인하세요.
호스트 확인 불가: xxxxxxxxx.$awsregion.$awsdomain
- 다음 명령을 실행해 /etc/yum/vars 디렉터리가 사용자 지정 yum 변수를 정의하는지 확인합니다. 디렉터리에 awsdomain과 awsregion 변수가 포함되어야 합니다. 다음 명령 예시에서 us-east-1을 내 AWS 리전으로 바꾸세요.
$ cat /etc/yum/vars/awsregion
us-east-1
$ cat /etc/yum/vars/awsdomain
amazonaws.com
- 다음 명령을 실행해 내 인스턴스의 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 값을 변경하여 시간 초과 시간을 수정하세요.