Introduction
Este documento descreve as etapas usadas para configurar servidores DNS em Bash para permitir a resolução de nomes de host DNS para endereços IP.
Os dispositivos Cisco Nexus 3000 e 9000 Series permitem acesso ao sistema Linux subjacente do NX-OS através de Bash (Bourne-Again SHell). Bash permite o gerenciamento e o monitoramento do sistema por meio de um ambiente Linux. Para obter mais informações sobre Bash no NX-OS, consulte o capítulo Bash do Guia de Programabilidade do NX-OS do Cisco Nexus 9000 Series.
Pode ser necessário traduzir nomes de domínio amigáveis para humanos em endereços IP numéricos enquanto executa tarefas normais no shell Bash. Tais tarefas incluem o uso dos utilitários curl
ou wget
para acessar recursos de um servidor Web ou para fazer download de imagens Docker usando o comando docker pull
.
Prerequisites
Requirements
Este documento não se restringe a versões de software e hardware específicas.
Note: O shell Bash deve ser ativado em seu dispositivo Cisco Nexus. Consulte a seção "Access Bash" do capítulo Bash no Cisco Nexus 9000 Series NX-OS Programmability Guide para obter instruções sobre como habilitar o shell Bash.
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- Plataforma do Nexus 9000 a partir do NX-OS versão 6.1(2)I2(1)
- Plataforma do Nexus 3000 a partir do NX-OS versão 6.0(2)U4(1)
As informações apresentadas neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Configuração de DNS Bash Shell
O ambiente Linux acessado através do shell Bash utiliza o arquivo /etc/resolv.conf para armazenar a configuração DNS, da mesma forma que a maioria dos outros sistemas operacionais Unix.
1. Faça login no shell Bash como o usuário raiz através do comando run bash sudo su -
.
Nexus# run bash sudo su -
root@Nexus#whoami
root
2. Exibir o conteúdo atual do arquivo /etc/resolv.conf. Neste exemplo, o arquivo está vazio.
root@Nexus#cat /etc/resolv.conf
root@Nexus#
3. Abra o arquivo /etc/resolv.conf para edição usando o editor de texto vi
.
root@Nexus#vi /etc/resolv.conf
4. Pressione a tecla i
para entrar no modo INSERT e, em seguida, digite a configuração desejada. Consulte a seção /etc/resolv.conf File Format deste documento para obter mais informações sobre como o formato da configuração no arquivo /etc/resolv.conf.
5. Depois que o arquivo for modificado, pressione a tecla ESC
para sair do modo INSERT e, em seguida, digite :x
para salvar todas as alterações no arquivo e fechá-lo.
Verificação de DNS Bash Shell
Quando as alterações forem feitas na configuração DNS do shell Bash, verifique se as alterações resultam em uma resolução de nome de domínio bem-sucedida. O método mais simples de testar a resolução do nome de domínio é usar o utilitário ping
usando um nome de host de domínio como destino. Este documento demonstra como verificar a configuração DNS válida usando um host de teste de servidores test.cisco.com e DNS de 192.168.2.1 e 192.168.2.2.
Etapa 1. Verifique o uso de um namespace de rede válido para teste.
Por padrão, o shell Bash usa o namespace de rede padrão, a menos que haja outra instrução. Os namespaces de rede são logicamente equivalentes aos VRFs do NX-OS, e o ip netns
o comando exibe uma lista de namespaces disponíveis para o shell Bash, como demonstrado abaixo:
root@Nexus#ip netns
EXAMPLE-VRF (id: 2)
management (id: 1)
default (id: 0)
Um namespace de rede válido para testar é um que tem conectividade IP com os servidores de nomes DNS configurados no arquivo /etc/resolv.conf, bem como conectividade IP com o endereço IP que o host de teste resolve.
É possível utilizar o comando ip netns exec {namespace} {desejado-comando}
para executar um comando {desejado-comando}
no namespace {namespace}
. Como alternativa, é possível executar o shell Bash no contexto de um namespace específico com o comando ip netns exec {namespace} bash
. A antiga metodologia é usada no exemplo aqui, verifica-se que o namespace de gerenciamento tem conectividade IP com o endereço IP de propriedade do host test.cisco.com (que é 192.168.2.100) e ambos os servidores DNS (192.168.2.1 e 192.168.2 2).
root@Nexus#ip netns exec management ping 192.168.2.100 -c 5
PING 192.168.2.100 (192.168.2.100) 56(84) bytes of data.
64 bytes from 192.168.2.100: icmp_seq=1 ttl=59 time=0.277 ms
64 bytes from 192.168.2.100: icmp_seq=2 ttl=59 time=0.284 ms
64 bytes from 192.168.2.100: icmp_seq=3 ttl=59 time=0.280 ms
64 bytes from 192.168.2.100: icmp_seq=4 ttl=59 time=0.274 ms
64 bytes from 192.168.2.100: icmp_seq=5 ttl=59 time=0.297 ms
--- 192.168.2.100 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4001ms
rtt min/avg/max/mdev = 0.274/0.282/0.297/0.017 ms
root@Nexus#ip netns exec management ping 192.168.2.1 -c 5
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=59 time=0.277 ms
64 bytes from 192.168.2.1: icmp_seq=2 ttl=59 time=0.284 ms
64 bytes from 192.168.2.1: icmp_seq=3 ttl=59 time=0.280 ms
64 bytes from 192.168.2.1: icmp_seq=4 ttl=59 time=0.274 ms
64 bytes from 192.168.2.1: icmp_seq=5 ttl=59 time=0.297 ms
--- 192.168.2.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4001ms
rtt min/avg/max/mdev = 0.274/0.282/0.297/0.017 ms
root@Nexus#ip netns exec management ping 192.168.2.2 -c 5
PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.
64 bytes from 192.168.2.2: icmp_seq=1 ttl=59 time=0.277 ms
64 bytes from 192.168.2.2: icmp_seq=2 ttl=59 time=0.284 ms
64 bytes from 192.168.2.2: icmp_seq=3 ttl=59 time=0.280 ms
64 bytes from 192.168.2.2: icmp_seq=4 ttl=59 time=0.274 ms
64 bytes from 192.168.2.2: icmp_seq=5 ttl=59 time=0.297 ms
--- 192.168.2.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4001ms
rtt min/avg/max/mdev = 0.274/0.282/0.297/0.017 ms
Etapa 2. Verifique o funcionamento da resolução DNS usando o nome de host do host de teste.
Use o utilitário ping
com um destino do nome de host do host de teste. Se as Respostas ICMP forem recebidas do host de teste e o endereço IP contido nas Respostas ICMP for o endereço IP que esperamos que o nome do host resolva, a resolução DNS estará funcionando no shell Bash.
Este exemplo aqui demonstra como o utilitário ping
é usado no namespace de gerenciamento para verificar a resolução de DNS correta. Observe como o nome de host do domínio test.cisco.com resolve para 192.168.2.100, que é o endereço IP que esperamos que esse nome de host resolva.
root@Nexus#ip netns exec management ping test.cisco.com -c 5
PING test.cisco.com (192.168.2.100) 56(84) bytes of data.
64 bytes from test.cisco.com (192.168.2.100): icmp_seq=1 ttl=59 time=0.617 ms
64 bytes from test.cisco.com (192.168.2.100): icmp_seq=2 ttl=59 time=0.341 ms
64 bytes from test.cisco.com (192.168.2.100): icmp_seq=3 ttl=59 time=0.310 ms
64 bytes from test.cisco.com (192.168.2.100): icmp_seq=4 ttl=59 time=0.379 ms
64 bytes from test.cisco.com (192.168.2.100): icmp_seq=5 ttl=59 time=0.296 ms
--- test.cisco.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 0.296/0.388/0.617/0.119 ms
Se o namespace usado para testar a resolução de DNS tiver conectividade IP com a Internet, é possível fazer ping no cisco.com para verificar se os nomes de domínio externo podem ser resolvidos além dos nomes de domínio internos. Isso é particularmente importante se for necessário usar utilitários como curl
e wget
contra servidores web públicos. O exemplo aqui demonstra como o utilitário ping
pode ser usado no namespace de gerenciamento (que tem conectividade IP com a Internet) para verificar a resolução de DNS externo correta.
root@Nexus#ip netns exec management ping cisco.com -c 5
PING cisco.com (72.163.4.161) 56(84) bytes of data.
64 bytes from www1.cisco.com (72.163.4.161): icmp_seq=1 ttl=239 time=29.2 ms
64 bytes from www1.cisco.com (72.163.4.161): icmp_seq=2 ttl=239 time=29.2 ms
64 bytes from www1.cisco.com (72.163.4.161): icmp_seq=3 ttl=239 time=29.3 ms
64 bytes from www1.cisco.com (72.163.4.161): icmp_seq=4 ttl=239 time=29.2 ms
64 bytes from www1.cisco.com (72.163.4.161): icmp_seq=5 ttl=239 time=29.2 ms
--- cisco.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 29.261/29.283/29.335/0.111 ms
Formato de arquivo /etc/resolv.conf
Alguns parâmetros de configuração comuns são explicados aqui. Certifique-se de modificar todos os parâmetros de configuração para corresponder ao seu ambiente.
- domain {domain-name.tld} - Define um nome de domínio padrão
{domain-name.tld}
para acrescentar nomes de host que não terminam com um período. Só pode haver uma entrada de domínio
no arquivo /etc/resolv.conf.
- pesquisar {domain-name-1.tld} [domain-name-2.tld...] - Define uma lista de nomes de domínio delimitados por espaço (
{domain-name-1.tld}
e, opcionalmente, [domain-name-2.tld]
) para anexar aos nomes de host.
Note: As entradas de domínio
e pesquisa
são mutuamente exclusivas - apenas uma pode ser usada de cada vez. Se ambas as entradas estiverem incluídas no arquivo /etc/resolv.conf, a entrada que aparece por último no arquivo será usada.
- nameserver {address-1} - Define um endereço IP
{address-1}
para um servidor DNS para o qual as solicitações de resolução DNS são encaminhadas. Várias entradas de servidor de nomes
são permitidas em um único arquivo, até um máximo de três.
Examples
Este exemplo mostra o conteúdo do arquivo /etc/resolv.conf onde o domínio padrão do ambiente é cisco.com e os servidores DNS no ambiente têm endereços IP de 192.168.2.1 e 192.168.2.2. Neste cenário, se o shell Bash precisar resolver o endereço IP de um dispositivo com um nome de host foo, ele acrescenta cisco.com ao final do nome do host de modo que o FDQN (Fully Qualified Domain Name, nome de domínio totalmente qualificado) do host seja foo.cisco.com.
domain cisco.com
nameserver 192.168.2.1
nameserver 192.168.2.2
O exemplo a seguir mostra o conteúdo do arquivo /etc/resolv.conf onde os nomes de domínio cisco.com ou bar.com podem ser usados para resolver nomes de host DNS. Os servidores DNS no ambiente têm endereços IP de 192.168.2.1 e 192.168.2.2. Neste cenário, se o shell Bash precisar resolver o endereço IP de um dispositivo com um nome de host foo, ele tentará resolver foo.cisco.com primeiro e, em seguida, tentará resolver foo.bar.com em seguida se a resolução para foo.cisco.com falhar.
search cisco.com bar.com
nameserver 192.168.2.1
nameserver 192.168.2.2
Informações Relacionadas
- Guia de programabilidade do Cisco Nexus 9000 Series NX-OS, versão 9.x
- Guia de programabilidade do Cisco Nexus 9000 Series NX-OS, versão 7.x
- Guia de programabilidade do Cisco Nexus 9000 Series NX-OS, versão 6.x
- Guia de programabilidade do Cisco Nexus 3000 Series NX-OS, versão 9.x
- Guia de programabilidade do Cisco Nexus 3000 Series NX-OS, versão 7.x
- Guia de programabilidade do Cisco Nexus 3000 Series NX-OS, versão 6.x
- Guia de programabilidade do Cisco Nexus 3500 Series NX-OS, versão 9.x
- Guia de programabilidade do Cisco Nexus 3500 Series NX-OS, versão 7.x
- Guia de programabilidade do Cisco Nexus 3500 Series NX-OS, versão 6.x
- Guia de programabilidade do Cisco Nexus 3600 Series NX-OS, versão 9.x
- Guia de programabilidade do Cisco Nexus 3600 Series NX-OS, versão 7.x
- Programabilidade e automação com o Cisco Open NX-OS