Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Como atribuo um servidor DNS estático a uma instância do EC2 que persiste quando eu reinicializo?
Quero configurar uma instância do Amazon Elastic Compute Cloud (Amazon EC2) que tenha um servidor DNS estático que persiste durante a reinicialização.
Resolução
Por padrão, as instâncias do EC2 associadas a uma Amazon Virtual Private Cloud (Amazon VPC) solicitam um endereço de servidor DNS na inicialização. O Protocolo de Configuração Dinâmica de Host (DHCP) envia a solicitação e, em seguida, a Amazon grava a resposta DHCP com os endereços do servidor DNS no arquivo /etc/resolv.conf.
Ao reiniciar a instância, você perde as modificações manuais no arquivo resolv.conf que contém endereços de servidor DNS personalizados. Para manter seu servidor DNS estático ao reinicializar sua instância, atualize sua configuração com base na sua distribuição Linux.
Importante: antes de alterar sua instância, use uma imagem de máquina da Amazon (AMI) para criar um backup. Ou use um snapshot do Amazon Elastic Block Store (Amazon EBS) para criar um backup. Quando você altera as configurações de rede de uma instância, ela pode ficar inacessível.
AL2023
O Amazon Linux 2023 (AL2023) usa systemd-resolved. Para obter mais informações, consulte systemd-resolved no site do Archlinux.
Configurar o resolvedor
Edite o arquivo /etc/systemd/resolved.conf e altere o DNS e as opções de domínio.
Exemplo de arquivo de configuração:
# /etc/systemd/resolved.conf [Resolve] DNS=8.8.8.8 Domains=~.
Ou crie um drop-in. Por exemplo, use o arquivo /etc/systemd/resolved.conf.d/dns\ _servers.conf.
Exemplo de arquivo de configuração:
#/etc/systemd/resolved.conf.d/dns_servers.conf [Resolve] DNS=8.8.8.8 8.8.4.4 Domains=~.
Observação: defina a opção Domains=~., para que systemd-resolved não use os servidores DNS por link na configuração por link. A opção Domains=~. não afeta as consultas dos nomes de domínio que correspondem aos domínios de pesquisa mais especificados nas configurações por link. Quando nomes de domínio são resolvidos, eles usam seus respectivos servidores DNS por link.
Alterar a localização de pontos /etc/resolv.conf
Por padrão, /etc/resolv.conf aponta para o resolvedor de stub do host local. Para alterar o resolvedor, recrie o arquivo com campos atualizados ou apontando para algum lugar diferente do resolvedor de stub do host local. Por exemplo, é possível apontar para /run/systemd/resolve/resolv.conf, que contém uma lista simplificada de servidores usados pelo systemd-resolved.
Exemplo de status do arquivo de configuração quando você usa o cache DNS local:
### 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)
Exemplo de status do arquivo de configuração quando você não usa o cache DNS local:
### 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
Para testar sua configuração, execute os seguintes comandos:
# resolvectl status
# resolvectl query amazonaws.com
Exemplos de saídas:
# 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 ou AL2
Para configurar suas instâncias do Amazon Linux 1 (AL1) ou do Amazon Linux 2 (AL2), atualize o arquivo etc/dhcp/dhclient.conf ou o arquivo ifcfg-eth0.conf. Se você configurar os dois arquivos, os servidores DNS que você especificar no arquivo ifcfg-eth0.conf terão precedência.
Pré-requisitos: defina o valor do parâmetro PEERDNS no arquivo ifcfg-eth0.conf como sim. Quando você define o parâmetro PEERDNS para não, o Amazon EC2 ignora os servidores DNS especificados nos arquivos ifcfg-* ou fornecidos pelo DHCP.
Atualizar o arquivo etc/dhcp/dhclient.conf
Conclua as etapas a seguir:
- Abra o arquivo /etc/dhcp/dhclient.conf. Ou crie um novo.
Observação: você deve ter permissões de usuário-raiz para editar esse arquivo. Use sudo -i para se tornar o usuário-raiz ou use sudo para implementar todos os comandos. - Para substituir os servidores de nome do domínio, adicione o comando supersede ao arquivo:
Observação: substitua 000.000.000.000 pelo endereço IP do servidor ou servidores DNS que você deseja que a instância use.supersede domain-name-servers 000.000.000.000, 000.000.000.000; - Defina o parâmetro PEERDNS para sim no seu arquivo de configuração por interface /etc/sysconfig/network-scripts/ifcfg-*.
- Reinicialize a instância do EC2. Após essa modificação, o arquivo resolv.conf atualiza na reinicialização da instância para conter apenas os servidores DNS que você especificou no arquivo dhclient.
Atualize o arquivo ifcfj-eth0
Conclua as etapas a seguir:
-
Para substituir os valores do servidor DNS no arquivo /etc/dhcp/dhclient.conf, especifique os servidores DNS nos arquivos de configuração por interface.
O arquivo de exemplo a seguir mostra o arquivo /etc/sysconfig/network-scripts/ifcfg-eth0 de uma instância Amazon Linux que é modificada para incluir dois servidores DNS personalizados: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 -
Defina o parâmetro PEERDNS para sim no seu arquivo de configuração por interface /etc/sysconfig/network-scripts/ifcfg-*.
Observação: se sua instância executa o Ubuntu 16.04 ou o Red Hat Enterprise Linux (RHEL) 7.5, você também pode usar as etapas de resolução anteriores.
Ubuntu 18.04, 20.04 e 22.04
No Ubuntu 18.04 o pacote netplan.io manipula a configuração da interface de rede e o serviço systemd-resolved usa um resolvedor stub para gerenciar consultas de DNS. O endereço IP do resolvedor de stub está localizado no arquivo /etc/resolv.conf, que é um link simbólico para o arquivo /run/systemd/resolve/stub-resolv.conf. Se o arquivo /etc/resolv.conf tiver as seguintes configurações, a declaração substituição em /etc/dhcp/dhclient.conf pode não funcionar conforme o esperado:
- O arquivo não é um link simbólico em sua instância.
- O arquivo é um link simbólico apontando para um arquivo diferente, como /run/systemd/resolve/resolv.conf.
Para substituir os valores do servidor DNS, execute as seguintes etapas:
-
Crie um arquivo chamado /etc/netplan/99-custom-dns.yaml com os seguintes dados:
### 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"Observação: substitua 1.1.1.1, 1.0.0.1 pelo endereço IP do seu servidor DNS. O Netplan armazena os arquivos de configuração no diretório /etc/netplan. O exemplo anterior usa a interface ens5. Certifique-se de que o nome da interface corresponda à sua interface. Para ver o nome da sua interface, execute o seguinte comando:
# ip aExemplo de saída:
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 -
Para converter o arquivo YAML do Netplan em arquivos de configuração, execute o seguinte comando netplan:
# netplan generate # netplan try # netplan applyObservação: você pode receber a mensagem “WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running”. Ignore a mensagem e prossiga para a próxima etapa. Se você não quiser ver a mensagem de AVISO, instale o pacote Open vSwitch with DPDK. O endereço IP do resolvedor stub está localizado em /etc/resolv.conf. Esse é um comportamento esperado porque o endereço IP do resolvedor de stub é local em seu sistema operacional (SO). Em segundo plano, o resolvedor stub usa os servidores DNS que você especificou no arquivo 99-custom-dns.yaml.
-
Para confirmar se o sistema usa corretamente os endereços IP do servidor DNS pretendidos, execute o seguinte comando com base na sua versão do Ubuntu:
Ubuntu 18.04:systemd-resolve --statusUbuntu 20.04 e 22.04:
resolvectl status
RHEL 7.5
Por padrão, o serviço NetworkManager gerencia o arquivo resolv.conf para distribuições RHEL. Em seguida, o serviço preenche o arquivo com servidores DNS fornecidos pelo DHCP. Para usar servidores DNS personalizados, bloqueie o NetworkManager no arquivo resolv.conf para que o arquivo resolv.conf ignore os servidores DNS fornecidos pelo DHCP.
Conclua as etapas para Atualizar o arquivo etc/dhcp/dhclient.conf em AL1 ou AL2. Ou crie o arquivo /etc/NetworkManager/conf.d/90-dns-none.conf com o conteúdo a seguir:
[main] dns=none
Reinicialize a instância, e em seguida crie manualmente o arquivo /etc/resolv.conf.
Informações relacionadas
Conjuntos de opções DHCP no Amazon VPC
arquivos de rede no site Archlinux
resolved.conf (5) no site Archlinux
dhclient.conf (5) no site Archlinux
networkmanager.conf (5) no site Archlinux
- Tópicos
- Compute
- Tags
- LinuxAmazon EC2
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
- feita há um ano
- feita há um ano
- feita há um ano
AWS OFICIALAtualizada há 9 meses
AWS OFICIALAtualizada há 9 meses