Doctoring ou hairpinning do DNS da Cisco?

8

Tenho a seguinte configuração: CISCO 881, IOS 15.2 (4) M6. Na interface WAN está configurada a sub-rede 86.34.156.48/29 do nosso ISP. Atrás do roteador está ficando 2 webserver. NAT: 86.34.156.51 < > 10.10.10.100 (IP privado, servidor1). Se eu configurar os registros do servidor DNS BIND A com o IP externo do servidor (86.34.156.51), o mundo externo nunca obterá a resposta do meu servidor DNS (não sei o que acontece lá, talvez o roteador faça o diagnóstico de DNS ou algo semelhante (é uma pergunta)), e é certo que o servidor DNS está configurado e funciona corretamente (eu capturei os pacotes IP com o TCPdump). Mas, se eu configurar os registros do servidor DNS A com o IP privado do servidor (10.10.10.100), os pacotes estarão sempre chegando ao destino correto (com o IP externo do servidor, talvez o DNS também esteja afetando). O único problema com isso é o desaparecimento do valor TTL do pacote DNS, como você pode ver na saída abaixo.

O que eu posso fazer?

        +-----+
        |     |  an other host somewhere on internet(C)
        |     |
        +-----+
            |
            |
            :
            :  internet
            :

            |  

        +-----+
        |     |      ISP's router
        |     |       black box, without acces
        +-----+

            |
            | 86.34.456.48/29
        +-----+
        |     |      CISCO 881,
        |     |       IOS 15.2(4)M6
        +-----+
            |
            |
------------------------------------------------------------  local private network 10.10.10.0/24
    |                                           |
    | (86.34.156.51)                            | (Nat rule not yet attached)
    | 10.10.10.100                              | 10.10.10.101
    |                                           |
+-----+                                       +-----+
|     |                                       |     |
|     |                                       |     |
+-----+                                       +-----+
linux server (A)                                linux server (B)
BIND DNS server
 style2take.ro

Aqui está alguma escavação (ferramenta de diagnóstico do DNS no linux):

Do host B: $ dig style2take.ro

;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42222
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;style2take.ro.                 IN      A

;; ANSWER SECTION:
style2take.ro.          0       IN      A       10.10.10.100                                                <-- here you can see the TTL is 0

;; Query time: 52 msec
;; SERVER: 193.231.100.130#53(193.231.100.130)
;; WHEN: Fri Feb 20 10:27:25 EET 2015
;; MSG SIZE  rcvd: 58

Do host B: $ dig @ 10.10.10.100 style2take.ro

;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65374
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;style2take.ro.                 IN      A

;; ANSWER SECTION:
style2take.ro.          3600    IN      A       10.10.10.100                                                <-- here you can see the TTL is 3600

;; AUTHORITY SECTION:
style2take.ro.          3600    IN      NS      ns1.style2take.ro.
style2take.ro.          3600    IN      NS      ns2.style2take.ro.

;; ADDITIONAL SECTION:
ns1.style2take.ro.      3600    IN      A       10.10.10.100
ns2.style2take.ro.      3600    IN      A       10.10.10.100

;; Query time: 0 msec
;; SERVER: 10.10.10.100#53(10.10.10.100)
;; WHEN: Fri Feb 20 10:28:58 EET 2015
;; MSG SIZE  rcvd: 126

Do host C: $ dig style2take.ro

;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32364
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 0

;; QUESTION SECTION:
;style2take.ro.                 IN      A

;; ANSWER SECTION:
style2take.ro.          0       IN      A       86.34.156.51                                                <-- here you can see the TTL is 0

;; AUTHORITY SECTION:
ro.                     106161  IN      NS      sns-pb.isc.org.
ro.                     106161  IN      NS      primary.rotld.ro.
ro.                     106161  IN      NS      sec-dns-a.rotld.ro.
ro.                     106161  IN      NS      sec-dns-b.rotld.ro.
ro.                     106161  IN      NS      dns-at.rotld.ro.
ro.                     106161  IN      NS      dns-ro.denic.de.

;; Query time: 149 msec
;; SERVER: 82.79.24.74#53(82.79.24.74)
;; WHEN: Fri Feb 20 10:29:52 2015
;; MSG SIZE  rcvd: 201

Do host C: $ dig @ 86.34.156.51 style2take.ro

; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48385
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;style2take.ro.                 IN      A

;; ANSWER SECTION:
style2take.ro.          0       IN      A       86.34.156.51                                                <-- here you can see the TTL is 0

;; AUTHORITY SECTION:
style2take.ro.          0       IN      NS      ns2.style2take.ro.
style2take.ro.          0       IN      NS      ns1.style2take.ro.

;; ADDITIONAL SECTION:
ns1.style2take.ro.      0       IN      A       86.34.156.51
ns2.style2take.ro.      0       IN      A       86.34.156.51

;; Query time: 29 msec
;; SERVER: 86.34.156.51#53(86.34.156.51)
;; WHEN: Fri Feb 20 10:35:05 2015
;; MSG SIZE  rcvd: 115
    
por Zsigmond Szilveszter 20.02.2015 / 10:03

2 respostas

0

Bem, se você não resolver DNS, o problema pode ser duplo:

  1. Configuração incorreta do DNS - o sistema DNS global é capaz de dizer qual é o NS do seu domínio? Isso é algo que você precisa definir em seu provedor de nome. O que é dig style2take.ro NS output?

  2. Seu roteador não permite solicitações de DNS. Entre em um servidor externo e tente fazer telnet para a porta 53 do seu DNS telnet 86.34.156.51 - o DNS deve funcionar tanto no UDP quanto no TCP, isso testa pelo menos a parte TCP.

por 12.06.2015 / 08:31
0

Você não precisa ter o IP externo em nenhuma das suas configurações de DNS (nomeadas). Você pode usar o interno (10.10.10.100) em qualquer lugar e NAT do roteador para 86.34.156.51 ( ip nat inside source static 10.10.10.100 86.34.156.51 ). Se você quiser configurar um DNS secundário, o mesmo se aplica a ele: use 10.10.10.101 (como NS2) NAT para algo mais (como 86.34.156.51). Além disso, certifique-se de que as portas DNS sejam realmente encaminhadas no roteador e não bloqueadas pelo firewall no servidor linux. Use um verificador de porta baseado na web para garantir que o UDP 53 esteja aberto.

    
por 04.01.2018 / 08:55