New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Come posso evitare errori di risoluzione DNS con un'istanza Amazon EC2 Linux?
Desidero evitare errori di risoluzione DNS con le istanze Linux di Amazon Elastic Compute Cloud (Amazon EC2).
Breve descrizione
Per ridurre l'utilizzo della CPU e della rete ed evitare errori di risoluzione DNS, applica una cache DNS.
Se utilizzi una cache DNS per interrogare risorse DNS esterne, la cache risponde alla maggior parte delle query DNS ricorrenti a livello locale. Quando la cache esegue questa operazione, non interagisce con il resolver DNS sulla rete. È possibile interrogare risorse DNS esterne come nei seguenti esempi:
- Amazon Relational Database Service (Amazon RDS)
- Amazon ElastiCache
- Amazon Simple Storage Service (Amazon S3)
La procedura seguente si applica a tutte le versioni di Amazon Linux. Se utilizzi un'altra distribuzione, seleziona la documentazione per la tua distribuzione dal seguente elenco:
- Per informazioni su Debian, consulta Local caching sul sito Web debian.org.
- Per informazioni su Ubuntu, consulta cache DNS Locale sul sito Web di Ubuntu.
- Per informazioni su Red Hat Enterprise Linux (RHEL), consulta Come configurare il server di caching DNS con dnsmasq in RHEL sul portale clienti Red Hat.
Risoluzione
Configurare una cache DNS locale con dnsmasq
Per configurare una cache DNS locale utilizzando dnsmasq. Per ulteriori informazioni, consulta dnsmasq sul sito Web thekelleys.org.uk.
Completa i seguenti passaggi:
-
Per installare il server dnsmasq, esegui il comando seguente:
sudo yum install -y dnsmasq
-
Per creare un utente di sistema dedicato per eseguire dnsmasq, esegui il seguente comando:
sudo groupadd -r dnsmasqsudo useradd -r -g dnsmasq dnsmasq
Nota: dnsmasq in genere viene eseguito come utente root, ma passa a un altro utente dopo l'avvio. Per impostazione predefinita, l'utente è nessuno. Quando dnsmasq passa a un altro utente, i privilegi del root vengono eliminati.
-
Per creare una copia del file dnsmasq.conf esegui il seguente comando:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.ori
Per aprire il file di configurazione con un editor di testo, esegui il comando seguente:
sudo vim /etc/dnsmasq.conf
-
Per modificare il file /etc/dnsmasq.conf, esegui il seguente comando di esempio:
# Server Configurationlisten-address=127.0.0.1 port=53 bind-interfaces user=dnsmasq group=dnsmasq pid-file=/var/run/dnsmasq.pid # Name resolution options resolv-file=/etc/resolv.dnsmasq cache-size=500 neg-ttl=60 domain-needed bogus-priv
**Nota:**l'opzione bogus-priv in dnsmasq fa sì che una ricerca DNS inversa fallisca per intervalli IP privati che non si trovano in **/etc/hosts.**Questa opzione può anche causare il fallimento di una ricerca DNS inversa per il file dei lease DHCP (Dynamic Host Configuration Protocol). Se desideri eseguire correttamente una ricerca inversa, commenta o rimuovi bogus-priv.
-
Crea il file /etc/resolv.dnsmasq. Quindi, per impostare il server Amazon DNS o i server di nomi di dominio personalizzati che hai specificato nei set di opzioni DHCP, esegui il seguente comando:
sudo bash -c "echo 'nameserver 169.254.169.253' > /etc/resolv.dnsmasq"
Nota: per ulteriori informazioni sulle posizioni dei server DNS, consulta Cos'è DHCP?In alcuni casi, è necessario modificare il file /etc/resolv.dnsmasq per utilizzare il nome del server per quella rete. Modifica il file quando crei un'AMI da un'istanza con la cache dnsmasq per avviarla in un altro VPC con un CIDR diverso. In alternativa, modifica il file quando specifichi un server DNS personalizzato nelle opzioni DHCP.
-
Per riavviare il server dnsmasq e impostare l'avvio del servizio all'avvio, esegui una delle seguenti azioni.
Per avviare Amazon Linux 1 all'avvio, esegui il seguente comando:sudo service dnsmasq restart sudo chkconfig dnsmasq on
Per avviare Amazon Linux 2 e Amazon Linux 2023 al riavvio, esegui il seguente comando:
sudo systemctl restart dnsmasq.service sudo systemctl enable dnsmasq.service
-
Per verificare che dnsmasq funzioni correttamente, usa il comando dig:
dig aws.amazon.com @127.0.0.1
Se la risposta è simile all'esempio seguente, la cache dnsmasq funziona correttamente:
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.56.amzn1 <<>> aws.amazon.com @127.0.0.1;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25122 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;aws.amazon.com. IN A ;; ANSWER SECTION: aws.amazon.com. 41 IN A 54.239.31.69 ;; Query time: 1 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ...
-
Imposta la cache DNS dnsmasq come resolver DNS predefinito.
Nota: è necessario sopprimere il resolver DNS predefinito fornito da DHCP. Per fare ciò, modifica o crea il file /etc/dhcp/dhclient.conf. Per ulteriori informazioni, consulta Come faccio ad assegnare un server DNS statico all'istanza Amazon EC2 che persiste durante il riavvio?Quindi, per configurare il resolver DNS predefinito come opzione di riserva esegui i seguenti comandi:
sudo bash -c "echo 'supersede domain-name-servers 127.0.0.1, 169.254.169.253;' >> /etc/dhcp/dhclient.conf"
-
Per applicare la modifica, esegui una delle seguenti azioni. Esegui il seguente comando dhclient:
sudo dhclient
-oppure-
Per riavviare il servizio di rete, esegui il comando seguente:sudo systemctl restart network
-oppure-
Per riavviare l'istanza, esegui il comando seguente:sudo reboot
Nota: per Amazon Linux 2023, esegui
sudo systemctl restart systemd-networkd.service
al posto di dhclient.
Per verificare se la tua istanza utilizza la cache DNS, esegui il comando dig:dig aws.amazon.com
Se il riscontro indica che il server di risposta è 127.0.0.1, la cache DNS funziona correttamente.
Esempio di risposta:; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.56.amzn1 <<>> aws.amazon.com;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1028 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;aws.amazon.com. IN A ;; ANSWER SECTION: aws.amazon.com. 55 IN A 54.239.31.69 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) <<<------- ...
Automatizza dnsmasq
Puoi utilizzare uno dei seguenti strumenti per automatizzare l'installazione e la configurazione di dnsmasq come resolver DNS su Amazon Linux:
- AutomateDnsmasq.sh bash script
- Direttive AutomateDnsmasq.cloudinit
Per ulteriori informazioni su AutomateDnsmasq.sh bash script, consulta #!/bin/bash sul sito Web di GitHHub.
Per ulteriori informazioni sulle direttive AutomatedNSMasq.cloudInit, consulta #cloud -config sul sito Web di GitHHub.
Se si desidera automatizzare l'installazione di dnsmasq su altre distribuzioni Linux, utilizza entrambi i file per effettuare la personalizzazione necessaria.
Quando entrambi i file utilizzano l'indirizzo alternativo del server Amazon DNS 169.254.169.253, i file possono essere eseguiti su istanze VPC.
Per eseguire uno dei due file al momento dell'avvio, passa il contenuto del file nel campo dati utente. Per eseguire le azioni su un’istanza, puoi eseguire lo script Bash come script autonomo o utilizzare un comando di esecuzione di AWS Systems Manager.
Per eseguire lo script Bash come script autonomo, completa i seguenti passaggi:
-
Per scaricare lo script sulla tua istanza e renderlo eseguibile, esegui il comando seguente:
wget https://raw.githubusercontent.com/awslabs/aws-support-tools/master/EC2/AutomateDnsmasq/AutomateDnsmasq.shchmod +x AutomateDnsmasq.sh
-
Esegui il seguente comando come utente root o utilizza sudo:
sudo ./AutomateDnsmasq.sh
Informazioni correlate
Video correlati


Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa