為什麼我在執行 Amazon Linux 1 或 Amazon Linux 2 的 EC2 執行個體上使用 yum 會收到錯誤訊息?
為什麼我在執行 Amazon Linux 1 或 Amazon Linux 2 的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上使用 yum 會收到錯誤訊息?
簡短說明
使用 yum 命令的輸出訊息來確定發生了什麼錯誤。以下是常見的錯誤訊息:
- 連線逾時 XXX 毫秒
- HTTP 錯誤 403 - 禁止
- 無法解析主機:xxxxxxxxx.$awsregion.$awsdomain
- HTTP 錯誤 407 - 需要 Proxy 驗證
- **5000 毫秒後解析逾時 **
解決方法
連線逾時 XXXX 毫秒
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 儲存庫
- 您的執行個體位於具有網際網路閘道的公有子網路中。如需詳細資訊,請參閱開啟網際網路存取。
- 您的執行個體位於具有 NAT 閘道的私有子網路中。如需詳細資訊,請參閱 NAT 閘道。
- 您的執行個體位於具有 NAT 執行個體的私有子網路中。如需詳細資訊,請參閱 NAT 執行個體。
- 您的執行個體位於具有 Amazon Simple Storage Service (Amazon S3) VPC 端點的公有或私有子網路中。如需詳細資訊,請參閱如何在執行 Amazon Linux 1 或 Amazon Linux 2 的 EC2 執行個體上不存取網際網路而更新 yum 或安裝套件?
- 您的執行個體位於具有 Proxy 的私有子網路中。若要設定 yum 使用 Proxy 伺服器,請使用下列參數修改 /etc/yum.conf 檔案。在下列範例中,請以 Proxy 的正確值取代 proxy-port、proxy-user-name 與 proxy-password。
proxy=http://proxy-server-IP-address:proxy_port proxy_username="proxy-user-name" proxy_password="proxy-password"
如需詳細資訊,請參閱 fedoraproject.org 網站上的搭配 Proxy 伺服器使用 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 錯誤 403 - 禁止
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/*"
**注意:**以您的執行個體的區域取代上述範例中的 Region。
如需詳細資訊,請參閱 Amazon S3 的端點政策。
2. 如果您使用 Proxy 存取 Amazon Linux 儲存庫,請確認子網域 .amazonaws.com 位於 Proxy 組態的允許清單中。
無法解析主機:xxxxxxxx.$awsregion.$awsdomain
1. 執行下列指令以驗證 **/etc/yum/vars ** 目錄是否定義自訂 yum 變數。該目錄必須包括變數 awsdomain 和 awsregion。在下列範例指令中,以您的執行個體的區域取代 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
針對 Amazon 提供的 DNS 伺服器 (169.254.169.253 IPv4 位址和 fd00:ec2::253 IPv6 位址) 的查詢將會成功。針對 Amazon 提供的 DNS 伺服器 (以 VPC IPv4 網路範圍加 2 為基礎之預留 IP 位址) 的查詢也會成功。IPv6 位址只能在 Nitro System 上建置的 EC2 執行個體上存取。
HTTP 錯誤 407 - 需要 Proxy 驗證
如果您的 Proxy 伺服器無法完成要求,就會發生此錯誤,因為 yum 沒有適合 Proxy 伺服器的正確驗證憑證。若要設定 yum 使用 Proxy,請使用下列參數修改 /etc/yum.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 毫秒的逾時期。
若要使用 dig 檢查查詢時間,請執行下列命令:
$ dig repo.us-east-1.amazonaws.com | grep time
相關內容
- 已提問 10 個月前lg...
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- 已提問 1 年前lg...