Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Come posso evitare errori di risoluzione DNS nella mia istanza Amazon EC2 Linux?
Desidero evitare errori di risoluzione DNS nelle mie istanze Amazon Elastic Compute Cloud (Amazon EC2) Linux.
Breve descrizione
Per evitare errori di risoluzione DNS, applica una cache DNS.
Quando utilizzi una cache DNS per eseguire query su risorse DNS esterne, la cache risponde localmente alla maggior parte delle query DNS ricorrenti. In questo scenario, la cache non interagisce con il risolutore DNS sulla rete. Puoi eseguire query su risorse DNS esterne come nei seguenti esempi:
- Amazon Relational Database Service (Amazon RDS)
- Amazon ElastiCache
- Amazon Simple Storage Service (Amazon S3)
Puoi utilizzare i seguenti passaggi di risoluzione per tutte le versioni di Amazon Linux. Se usi un'altra distribuzione, consulta la relativa documentazione:
- Per Debian, consulta Local caching (Caching locale) sul sito web Debian.
- Per Ubuntu, consulta Dnsmasq sul sito web Ubuntu.
- Per Red Hat Enterprise Linux (RHEL), consulta How to configure DNS caching server with dnsmasq in RHEL (Come configurare il server di caching DNS con dnsmasq in RHEL) sul sito web Red Hat.
Risoluzione
Nota: i seguenti passaggi di risoluzione utilizzano 169.254.169.253 come indirizzo IP del risolutore DNS. Se utilizzi un risolutore DNS diverso, sostituisci 169.254.169.253 con l'indirizzo IP del tuo risolutore DNS.
Configura una cache DNS locale con dnsmasq
Per configurare una cache DNS locale, utilizza dnsmasq. Per ulteriori informazioni, consulta dnsmasq sul sito Web thekelleys.org.uk.
Completa i seguenti passaggi:
-
Esegui questo comando per installare il server dnsmasq:
sudo yum install -y dnsmasq -
Se l'istanza viene eseguita su Amazon Linux 2023 (AL2023), procedi al passaggio 3. Per creare un utente di sistema dedicato all'esecuzione di dnsmasq, utilizza questo comando:
sudo groupadd -r dnsmasq sudo useradd -r -g dnsmasq dnsmasqNota: in genere dnsmasq viene eseguito come utente root. Tuttavia, l'utente cambia dopo l'avvio ed elimina i permessi dell'utente root. Per impostazione predefinita, l'utente è nobody (nessuno).
-
Per creare una copia del file dnsmasq.conf, esegui questo comando:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.ori -
Per creare e aprire il file di configurazione /etc/dnsmasq.conf con l'editor di testo vim, esegui questo comando:
sudo vim /etc/dnsmasq.confNota: puoi utilizzare qualsiasi editor di testo, come vi o nano, per modificare il file /etc/dnsmasq.conf.
-
Nel file /etc/dnsmasq.conf, inserisci il seguente contenuto:
# Server Configuration listen-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-privNota: l'opzione bogus-priv in dnsmasq fa sì che una ricerca DNS inversa dia esito negativo per intervalli di indirizzi IP privati che non si trovano in /etc/hosts. Questa opzione può anche causare l'esito negativo di una ricerca DNS inversa per il file di leasing del Protocollo di configurazione per host dinamico (DHCP). Per eseguire correttamente una ricerca inversa, commenta o rimuovi bogus-priv.
-
Crea il file /etc/resolv.dnsmasq e imposta il server DNS Amazon o i server dei nomi di dominio personalizzati specificati nei set di opzioni DHCP. Esegui questo comando:
sudo bash -c "echo 'nameserver 169.254.169.253' > /etc/resolv.dnsmasq"Nota: per ulteriori informazioni sulle posizioni dei server DNS, consulta Che cos'è il DHCP? Puoi anche modificare la posizione del server 169.254.169.253 quando crei un'Amazon Machine Image (AMI) da un'istanza con la cache di dnsmasq per avviarla in un altro cloud privato virtuale (VPC) con un CIDR diverso.
-
Per riavviare il server dnsmasq e impostare l'avvio del servizio all'avvio del server, esegui uno di questi comandi in base alla distribuzione.
Amazon Linux 1 (AL1):sudo service dnsmasq restart sudo chkconfig dnsmasq onAmazon Linux 2 (AL2) e AL2023:
sudo systemctl restart dnsmasq.service sudo systemctl enable dnsmasq.service -
Per verificare che dnsmasq funzioni correttamente, esegui questo comando:
dig aws.amazon.com @127.0.0.1Se la risposta è simile all'esempio seguente, la cache di dnsmasq funziona come previsto:
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.13.11 <<>> aws.amazon.com @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33958 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;aws.amazon.com. IN A ;; ANSWER SECTION: aws.amazon.com. 300 IN CNAME tp.8e49140c2-frontier.amazon.com. tp.8e49140c2-frontier.amazon.com. 9 IN CNAME dr49lng3n1n2s.cloudfront.net. dr49lng3n1n2s.cloudfront.net. 59 IN A 108.158.61.67 dr49lng3n1n2s.cloudfront.net. 59 IN A 108.158.61.79 dr49lng3n1n2s.cloudfront.net. 59 IN A 108.158.61.96 dr49lng3n1n2s.cloudfront.net. 59 IN A 108.158.61.102 ;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ... -
Imposta la cache DNS di dnsmasq come risolutore DNS predefinito.
Nota: è necessario eliminare il risolutore DNS predefinito fornito da DHCP. A tal fine, modifica o crea il file /etc/dhcp/dhclient.conf.
Per AL2, esegui questo comando:sudo bash -c "echo 'supersede domain-name-servers 127.0.0.1, 169.254.169.253;' >> /etc/dhcp/dhclient.conf"Per AL2023, esegui questo comando:
sudo bash -c 'echo "DNS=127.0.0.1" >> /etc/systemd/resolved.conf' sudo bash -c 'echo "DNS=169.254.169.253" >> /etc/systemd/resolved.conf'Nota: AL2023 utilizza systemd-networkd come risolutore DNS predefinito.
-
Per applicare la modifica, esegui questo comando in base alla distribuzione Linux:
AL2:
sudo dhclient
AL2023:
sudo systemctl restart systemd-resolved.service
-oppure-
Per riavviare il servizio di rete, esegui il comando seguente:
sudo systemctl restart network
-oppure-
Per riavviare l'istanza, esegui questo comando:
sudo reboot
- Esegui questo comando per verificare che l'istanza utilizzi la cache DNS:
dig aws.amazon.com
Se l'output mostra che il server di risposta è 127.0.0.1, la cache DNS funziona come previsto.
Esempio di output:
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.13.11 <<>> aws.amazon.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29129 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;aws.amazon.com. IN A ;; ANSWER SECTION: aws.amazon.com. 297 IN CNAME tp.8e49140c2-frontier.amazon.com. tp.8e49140c2-frontier.amazon.com. 25 IN CNAME dr49lng3n1n2s.cloudfront.net. dr49lng3n1n2s.cloudfront.net. 41 IN A 108.158.61.102 dr49lng3n1n2s.cloudfront.net. 41 IN A 108.158.61.96 dr49lng3n1n2s.cloudfront.net. 41 IN A 108.158.61.79 dr49lng3n1n2s.cloudfront.net. 41 IN A 108.158.61.67 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) <------------- ...
Automatizza dnsmasq per nuove istanze
Puoi utilizzare uno dei seguenti strumenti per automatizzare l'installazione e la configurazione di dnsmasq come risolutore DNS su Amazon Linux:
- Utilizza lo script bash AutomateDnsmasq.sh. Per scaricare il file, consulta AutomateDnsmasq.sh sul sito web GitHub.
- Utilizza le direttive AutomateDnsmasq.cloudinit. Per scaricare il file, consulta AutomateDnsmasq.cloudinit sul sito web GitHub.
Per automatizzare l'installazione di dnsmasq su altre distribuzioni Linux, utilizza uno dei file precedenti per effettuare la personalizzazione necessaria. Per entrambi i file, se utilizzi l'indirizzo alternativo del server Amazon DNS 169.254.169.253, i file possono essere eseguiti su istanze VPC.
Per eseguire entrambi i file all'avvio, inserisci il contenuto del file in User data. Puoi utilizzare Esegui comando di AWS Systems Manager per eseguire lo script bash. È consigliabile utilizzare le direttive solo per l'inizializzazione al primo avvio.
Per eseguire lo script bash come script autonomo, completa i seguenti passaggi:
-
Per scaricare lo script nell'istanza e renderlo eseguibile, esegui questo comando:
wget https://raw.githubusercontent.com/awslabs/aws-support-tools/master/EC2/AutomateDnsmasq/AutomateDnsmasq.sh chmod +x AutomateDnsmasq.sh -
Per eseguire lo script, esegui questo comando come utente root:
sudo ./AutomateDnsmasq.sh
Informazioni correlate
- Argomenti
- Compute
- Lingua
- Italiano
Video correlati

