Warum erhalte ich Fehler, wenn ich yum auf meiner EC2-Instanz mit Amazon Linux 1 oder Amazon Linux 2 verwende?

Lesedauer: 6 Minute
0

Warum erhalte ich Fehler, wenn ich yum auf meiner Amazon Elastic Compute Cloud (Amazon EC2) Instanz mit Amazon Linux 1 oder Amazon Linux 2 verwende?

Kurzbeschreibung

Verwenden Sie die Ausgabemeldungen des yum-Befehls, um festzustellen, welcher Fehler aufgetreten ist. Im Folgenden finden Sie häufig auftretende Fehlermeldungen:

  • **Die Verbindung hat ein Zeitlimit von XXX Millisekunden überschritten **
  • **HTTP-Fehler 403 — Verboten **
  • **Host: xxxxx konnte nicht aufgelöst werden. $ awsregion. $ aws-Domäne **
  • **HTTP-Fehler 407 — Proxyauthentifizierung erforderlich **
  • **Timeout bei der Auflösung nach 5000 Millisekunden **

Auflösung

Zeitüberschreitung der Verbindung XXXX Millisekunden

  1. Überprüfen Sie, ob die Sicherheitsgruppe, die Ihrer EC2-Instanz zugeordnet ist, ausgehenden http/https-Verkehr zulässt.

  2. Überprüfen Sie, ob die Netzwerk-ACLs, die mit dem Subnetz Ihrer EC2-Instanz verbunden sind, ausgehenden http/https-Verkehr über Ihre NACLs zulassen.

Das folgende Beispiel zeigt eine benutzerdefinierte Netzwerk-ACL, die ausgehenden Datenverkehr über Port 80 und 443 zulässt:

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. Stellen Sie sicher, dass Ihre EC2-Instanz Zugriff auf Amazon Linux-Repositories hat, indem Sie eine der folgenden Optionen verwenden
  • Ihre Instance befindet sich in einem öffentlichen Subnetz mit einem Internet-Gateway. Weitere Informationen finden Sie unter Internetzugriff aktivieren.
  • Ihre Instance befindet sich in einem privaten Subnetz mit einem NAT-Gateway. Weitere Informationen finden Sie unter NAT-Gateways.
  • Ihre Instance befindet sich in einem privaten Subnetz mit einer NAT-Instance. Weitere Informationen finden Sie unter NAT-Instances.
  • Ihre Instance befindet sich in einem öffentlichen oder privaten Subnetz mit einem Amazon Simple Storage Service (Amazon S3) VPC-Endpunkt. Weitere Informationen finden Sie unter Wie kann ich Yum aktualisieren oder Pakete ohne Internetzugang auf EC2-Instances installieren, auf denen Amazon Linux 1 oder Amazon Linux 2 ausgeführt wird?
  • Ihre Instance befindet sich in einem privaten Subnetz mit einem Proxy. Um yum für die Verwendung eines Proxys zu konfigurieren, modifizieren Sie die Datei ** ** /etc/yum.conf mit den folgenden Parametern. Ersetzen Sie im folgenden Beispiel den ** Proxy-Port**, den Proxy-Benutzernamen und das ** Proxy-Passwort durch die richtigen ** Werte für Ihren ** Proxy**.
proxy=http://proxy-server-IP-address:proxy_port
proxy_username="proxy-user-name"
proxy_password="proxy-password"

Weitere Informationen finden Sie unter Yum mit einem Proxyserver verwenden auf der Website fedoraproject.org.

  1. Nachdem Sie Ihre Instanz mit einer der oben genannten Optionen konfiguriert haben, führen Sie den folgenden curl-Befehl aus, um zu bestätigen, dass die Instanz auf das Repository zugreifen kann. Ersetzen Sie im folgenden Befehl ** us-east-1 ** durch die Region Ihrer Instance.

Amazon Linux 1

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

Amazon Linux 2

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

**Hinweis: ** curl ist auf allen AMIs vorinstalliert, aber auf die Amazon Linux-Repositorys kann ohne Anmeldeinformationen nicht zugegriffen werden. curl kann die Anmeldeinformationen eines Yum-Repositorys nicht annehmen. Sie erhalten eine Fehlermeldung, die der folgenden ähnelt: Zugriff verweigert. Der Befehl curl wird verwendet, um zu testen, ob das Timeout-Problem weiterhin auftritt. Die Fehlermeldung zeigt, dass das Netzwerk erreichbar ist und das Timeout-Problem nicht mehr auftritt:

$ 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

Führen Sie den folgenden Befehl aus, um Software wie Telnet zu installieren:

sudo yum install telnet

HTTP-Fehler 403 — Verboten

  1. Wenn Sie einen Amazon S3-VPC-Endpunkt in der VPC Ihrer Instance verwenden, stellen Sie sicher, dass die angehängte Richtlinie den ** ** s3:getObject-API-Aufruf für die folgenden Ressourcen zulässt:

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/\ *“ **

**Hinweis:**Ersetzen Sie die Region in den vorherigen Beispielen durch die Region Ihrer Instanz.

Weitere Informationen finden Sie unter Endpunktrichtlinien für Amazon S3.

  1. Wenn Sie einen Proxy für den Zugriff auf Amazon Linux-Repositorys verwenden, stellen Sie sicher, dass die Subdomains ** .amazonaws.com in Ihrer Proxykonfiguration auf der Zulassungsliste ** stehen.

Host: xxxxxxxx konnte nicht aufgelöst werden. $ awsregion. $ aws-Domäne

  1. Führen Sie die folgenden Befehle aus, um zu überprüfen, ob das Verzeichnis ** /etc/yum/vars die benutzerdefinierten Yum-Variablen definiert**. Das Verzeichnis muss die Variablen ** awsdomain ** und ** awsregion enthalten. **. Ersetzen Sie im folgenden Beispielbefehl ** us-east-1 ** durch die Region Ihrer Instance.
$ cat /etc/yum/vars/awsregion
us-east-1

$ cat /etc/yum/vars/awsdomain
amazonaws.com
  1. Überprüfen Sie die DNS-Auflösung Ihrer Instance. Die Instance muss den Domainnamen der Amazon Linux-Repositorys ermitteln:
$ dig amazonlinux.us-east-1.amazonaws.com

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

Abfragen an den von Amazon bereitgestellten DNS-Server an der 169.254.169.253 IPv4-Adresse und der fd00:ec2: :253 IPv6-Adresse werden erfolgreich sein. Abfragen an den von Amazon bereitgestellten DNS-Server an der reservierten IP-Adresse an der Basis des VPC-IPv4-Netzwerkbereichs plus zwei werden ebenfalls erfolgreich sein. Auf die IPv6-Adresse kann nur auf EC2-Instances zugegriffen werden, die auf dem Nitro-System basieren.

HTTP-Fehler 407 — Proxyauthentifizierung erforderlich

Dies passiert, wenn Ihr Proxy die Anfrage nicht abschließen kann, weil yum nicht über die richtigen Authentifizierungsdaten für Ihren Proxyserver verfügt. Um yum für die Verwendung eines Proxys zu konfigurieren, modifizieren Sie die Datei ** ** /etc/yum.conf mit den folgenden Parametern:

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

Timeout bei der Auflösung nach 5000 Millisekunden

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die ** Datei ** /etc/resolv.conf die richtige IP für Ihren DNS-Server hat:

cat /etc/resolv.conf
nameserver YourDNSIP

Sie können den Timeout-Zeitraum von 5000 Millisekunden ändern, indem Sie den ** ** Timeout-Wert in der Yum-Konfigurationsdatei ändern. .

Führen Sie den folgenden Befehl aus, um die Abfragezeit mit dig zu überprüfen:

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

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren