Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Come posso assegnare a un'istanza EC2 un server DNS statico che persiste al riavvio?
Desidero configurare un'istanza Amazon Elastic Compute Cloud (Amazon EC2) con un server DNS statico che persiste al riavvio.
Risoluzione
Per impostazione predefinita, le istanze EC2 associate ad Amazon Virtual Private Cloud (Amazon VPC) richiedono l' indirizzo di un server DNS all'avvio. Il Protocollo di configurazione per host dinamico (DHCP) invia la richiesta, quindi Amazon scrive la risposta DHCP con gli indirizzi dei server DNS nel file /etc/resolv.conf.
Quando riavvii l'istanza, perdi le modifiche apportate manualmente manuali al file resolv.conf che contiene gli indirizzi dei server DNS personalizzati. Per mantenere il server DNS statico al riavvio dell'istanza, aggiorna la configurazione in base alla distribuzione Linux.
Importante: prima di modificare l'istanza, utilizza un'Amazon Machine Image (AMI) per creare un backup. Oppure utilizza uno snapshot Amazon Elastic Block Store (Amazon EBS) per creare un backup. La modifica delle configurazioni di rete per un'istanza potrebbe renderla irraggiungibile.
AL2023
Amazon Linux 2023 (AL2023) utilizza systemd-resolved. Per ulteriori informazioni, consulta systemd-resolved sul sito web di Archlinux.
Configura il risolutore
Modifica il file /etc/systemd/resolved.conf e modifica le opzioni DNS e di dominio.
Esempio di configurazione:
# /etc/systemd/resolved.conf [Resolve] DNS=8.8.8.8 Domains=~.
Oppure crea un drop-in. Ad esempio, utilizza il file /etc/systemd/resolved.conf.d/dns\ _servers.conf.
Esempio di configurazione:
#/etc/systemd/resolved.conf.d/dns_servers.conf [Resolve] DNS=8.8.8.8 8.8.4.4 Domains=~.
Nota: imposta l'opzione Domains=~. opzione in modo che systemd-resolved non utilizzi i server DNS per-link impostati nella configurazione per-link. L'opzione Domains=~. non influisce sulle query di nomi di dominio che corrispondono ai domini di ricerca specifici indicati nelle configurazioni per-link. Quando i nomi di dominio si risolvono, utilizzano i rispettivi server DNS per-link.
Cambia la posizione verso cui punta /etc/resolv.conf
Per impostazione predefinita, /etc/resolv.conf punta verso il risolutore stub dell’host locale. Per modificare il risolutore, ricrea il file con i campi aggiornati o punta verso una posizione diversa dal risolutore stub dell'host locale. Ad esempio, puoi puntare verso il file /run/systemd/resolve/resolv.conf, che contiene un elenco semplificato dei server usati da systemd-resolved.
Esempio dello stato del file di configurazione quando utilizzi la cache DNS locale:
### Default Symbolic link status : point to stub-resolv.conf ### Flow: DNS query => Local Cache DNS 127.0.0.53 ( systemd-resolved ) => External DNS # ls -al /etc/resolv.conf lrwxrwxrwx 1 root root 39 Mar 5 02:28 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf # cat /etc/resolv.conf nameserver 127.0.0.53 options edns0 trust-ad search . ### 127.0.0.53 is used for systemd-resolved ( local cache dns ) # lsof -nP -p `pidof systemd-resolved` |grep TCP systemd-r 339 systemd-resolve 14u IPv4 2753 0t0 TCP 127.0.0.53:53 (LISTEN)
Esempio dello stato del file di configurazione quando non utilizzi la cache DNS locale:
### Changed Symbolic link status : point to /run/systemd/resolve/resolv.conf # cat /run/systemd/resolve/resolv.conf nameserver 1.1.1.1 nameserver 1.0.0.1 search . # ln -sf ../run/systemd/resolve/resolv.conf /etc/resolv.conf # ls -al /etc/resolv.conf lrwxrwxrwx 1 root root 34 Apr 1 16:05 /etc/resolv.conf -> ../run/systemd/resolve/resolv.conf
Per testare la configurazione, esegui questi comandi:
# resolvectl status
# resolvectl query amazonaws.com
Esempi di output:
# resolvectl status Global Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: uplink DNS Servers 8.8.8.8 8.8.4.4 DNS Domain ~. Link 2 (ens5) Current Scopes: DNS Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported DNS Servers: 10.2.0.2 DNS Domain: ap-northeast-2.compute.internal
# resolvectl query amazonaws.com amazonaws.com: 207.171.166.22 -- link: ens5 72.21.206.80 -- link: ens5 72.21.210.29 -- link: ens5 -- Information acquired via protocol DNS in 3.0ms. -- Data is authenticated: no; Data was acquired via local or encrypted transport: no -- Data from: cache
AL1 o AL2
Per configurare le istanze Amazon Linux 1 (AL1) o Amazon Linux 2 (AL2), aggiorna il file etc/dhcp/dhclient.conf o il file ifcfg-eth0.conf. Se configuri entrambi i file, i server DNS specificati nel file ifcfg-eth0.conf hanno la precedenza.
Prerequisiti: imposta il valore del parametro PEERDNS nel file ifcfg-eth0.conf su yes. Quando imposti il parametro PEERDNS su no, Amazon EC2 ignora i server DNS specificati nei file ifcfg-* o forniti da DHCP.
Aggiorna il file etc/dhcp/dhclient.conf file
Completa i seguenti passaggi:
- Apri il file /etc/dhcp/dhclient.conf esistente. Oppure creane uno nuovo.
Nota: è necessario disporre delle autorizzazioni dell'utente root per modificare il file. Utilizz sudo -i per diventare l'utente root o sudo per implementare tutti i comandi. - Per sovrascrivere i domain-name-servers, aggiungi il seguente comando supersede al file:
Nota: sostituisci 000.000.000.000 con l'indirizzo IP del server o dei server DNS che desideri siano utilizzati dall'istanza.supersede domain-name-servers 000.000.000.000, 000.000.000.000;
- Imposta il parametro PEERDNS su yes nel file di configurazioneper-interface, ad esempio /etc/sysconfig/network-scripts/ifcfg-*.
- Riavvia l'istanza EC2. Ora il file resolv.conf, aggiornatosi al riavvio dell'istanza, contiene solo i server DNS specificati nel file dhclient.
Aggiorna il file ifcfj-eth0
Completa i seguenti passaggi:
-
Per sovrascrivere i valori del server DNS nel file /etc/dhcp/dhclient.conf, specifica i server DNS personalizzati nei file di configurazione per interfaccia.
Il seguente esempio mostra il file /etc/sysconfig/network-scripts/ifcfg-eth0 di un'istanza Amazon Linux che include due server DNS personalizzati:DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes TYPE=Ethernet USERCTL=yes PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes RES_OPTIONS="timeout:2 attempts:5" DHCP_ARP_CHECK=no MTU="9001" DNS1=8.8.8.8 DNS2=8.8.4.4
-
Imposta il parametro PEERDNS su yes nel file di configurazioneper-interface, ad esempio /etc/sysconfig/network-scripts/ifcfg-*.
Nota: se l'istanza esegue Ubuntu 16.04 o Red Hat Enterprise Linux (RHEL) 7.5, puoi anche utilizzare i passaggi di risoluzione precedenti.
Ubuntu 18.04, 20.04 e 22.04
In Ubuntu 18.04, il pacchetto netplan.io gestisce la configurazione dell'interfaccia di rete e il servizio systemd-resolved utilizza un risolutore stub per gestire le query DNS. L'indirizzo IP del risolutore stub si trova nel file /etc/resolv.conf che è un symlink al file /run/systemd/resolve/stub-resolv.conf. Se il file /etc/resolv.conf ha le seguenti configurazioni, l'istruzione supersede in /etc/dhcp/dhclient.conf potrebbe non funzionare come previsto:
- Il file non è un symlink nell'istanza.
- Il file è un symlink che punta verso un file diverso, ad esempio /run/systemd/resolve/resolv.conf.
Completa i seguenti passaggi per sovrascrivere i valori del server DNS:
-
Crea un file denominato /etc/netplan/99-custom-dns.yaml con i seguenti dati:
### Create Customer DNS config # cat << 'EOF' | sudo tee /etc/netplan/99-custom-dns.yaml network: version: 2 ethernets: ens5: nameservers: addresses: [1.1.1.1, 1.0.0.1] dhcp4-overrides: use-dns: false use-domains: false EOF ### Required File Permission # chmod 600 /etc/netplan/99-custom-dns.yaml ### Checking Netplan Configuration status # netplan get network: version: 2 ethernets: ens5: match: macaddress: "0a:e5:a1:40:a2:f5" nameservers: addresses: - 1.1.1.1 - 1.0.0.1 dhcp4: true dhcp4-overrides: use-dns: false use-domains: false dhcp6: false set-name: "ens5"
Nota: sostituisci 1.1.1.1, 1.0.0.1 con l'indirizzo IP del tuo server DNS. Netplan archivia i file di configurazione nella directory /etc/netplan. L'esempio precedente utilizza l'interfaccia ens5. Assicurati che il nome dell'interfaccia corrisponda alla tua interfaccia. Per vedere il nome dell'interfaccia, esegui questo comando:
# ip a
Esempio di output:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000 link/ether 0a:e5:a1:40:a2:f5 brd ff:ff:ff:ff:ff:ff inet 172.31.35.233/20 metric 100 brd 172.31.47.255 scope global dynamic ens5 valid_lft 2828sec preferred_lft 2828sec inet6 fe80::8e5:a1ff:fe40:a2f5/64 scope link valid_lft forever preferred_lft forever
-
Per convertire il file YAML di Netplan in file di configurazione, esegui questo comando netplan:
# netplan generate # netplan try # netplan apply
Nota: potresti ricevere il messaggio "WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running". Puoi ignorarlo e procedere con il passaggio successivo. Se non desideri ricevere il messaggio WARNING , installa il pacchetto Open vSwitch con DPDK. L'indirizzo IP del risolutore stub ora è /etc/resolv.conf. Questo è un comportamento normale perché l'indirizzo IP del risolutore stub è locale nel sistema operativo. In background, il risolutore stub utilizza i server DNS specificati nel precedente file 99-custom-dns.yaml.
-
Per verificare che il sistema utilizzi correttamente gli indirizzi IP dei server DNS desiderati, esegui questo comando in base alla versione di Ubuntu:
Ubuntu 18.04:systemd-resolve --status
Ubuntu 20.04 and 22.04:
resolvectl status
RHEL 7.5
Per impostazione predefinita, il file resolv.conf per le distribuzioni RHEL è gestito dal servizio NetworkManager. Il servizio compila quindi il file con i server DNS forniti da DHCP. Per utilizzare server DNS personalizzati, blocca NetworkManager nel file resolv.conf in modo che il file resolv.conf ignori i server DNS forniti da DHCP.
Completa i passaggi per aggiornare il file etc/dhcp/dhclient.conf in AL1 o AL2. Crea il file /etc/NetworkManager/conf.d/90-dns-none.conf con il seguente contenuto:
[main]dns=none
Riavvia l'istanza e crea manualmente il file /etc/resolv.conf.
Informazioni correlate
Set di opzioni DHCP in Amazon VPC
network files (file di rete) sul sito web di Archlinux
resolved.conf(5) sul sito web di Archlinux
dhclient.conf(5) sul sito web di Archlinux
networkmanager.conf (5) sul sito Web Archlinux
Video correlati

