Cisco ASA doppio NAT con traduzione DNS


11

Sto provando a impostare la doppia NAT automatica con traduzione DNS su Cisco ASA 9.0 (3) e sto riscontrando alcune difficoltà con la parte DNS. Ho fatto funzionare correttamente il doppio NAT, in modo da avere un server in produzione e in laboratorio con lo stesso indirizzo IP. Vedi b2masd1, nameif INSIDE (produzione) e masd1, nameif DMZ (lab).

Quando esegui il ping da DMZ 10.195.18.182 a 1.195.18.182, vedo che le traduzioni stanno avvenendo correttamente in entrambe le direzioni ...

D:10.195.18.182      S:192.168.11.101       D:1.195.18.182   S:10.195.18.182
             <-----------                         <-----------
                                           1) echo-request to 1.195.18.182
                                           nat (INSIDE,DMZ) static 1.195.18.182 dns



  S:10.195.18.182    D:192.168.11.101       S:1.195.18.182   D:10.195.18.182
              ------------>                        ------------>
      2) echo-reply to 192.168.11.101
      nat (DMZ,INSIDE) static 192.168.11.101 dns


 b2masd1                   +-----------+              masd1
 10.195.18.182      INSIDE |           | DMZ          10.195.18.182
 Mfg Server   -------------| Cisco ASA |------------  Devel Server
                           |           |
                           +-----------+

 Manufacturing                                        Development
 Network                                              Network
 Security: 100                                        Security: 50

Questo è quello che vedo su masd1 ...

masd1$ /usr/sbin/ping 1.195.18.182
PING 1.195.18.182: 64 byte packets
64 bytes from 1.195.18.182: icmp_seq=0. time=0. ms
64 bytes from 1.195.18.182: icmp_seq=1. time=0. ms

----1.195.18.182 PING Statistics----
2 packets transmitted, 2 packets received, 0% packet loss
round-trip (ms)  min/avg/max = 0/0/0
masd1$

Il problema è che le query DNS dalla DMZ a INSIDE non vengono tradotte. Quando eseguo una query per b2masd1 dalla DMZ, mi aspetto che il nameserver su INSIDE risponda con 10.195.18.182, quindi l'ASA dovrebbe tradurlo in 1.195.18.182. Tuttavia, ciò non sta accadendo; come puoi vedere, la voce DNS non è tradotta.

masd1$ nslookup
Using /etc/hosts on:  masd1

> a2mosd1
Using /etc/hosts on:  masd1

looking up FILES
Trying DNS
Name:    b2masd1.domain.local
Address:  10.195.18.182

> exit
masd1$

Qualcuno può spiegare cosa devo fare per tradurre correttamente le query DNS? Ho bisogno di una query per b2masd1 nella DMZ a un nameserver sull'interfaccia INSIDE per restituire 1.195.18.182 (perché l'ASA traduce il record A INSIDE 10.195.18.182 in DMZ addr 1.195.18.182).

Ho creato una chat room per aiutare con la diagnosi


Varie informazioni di debug

Questa è la mia configurazione ...

!
interface GigabitEthernet0/0
 nameif INSIDE
 security-level 100
 ip address 10.195.2.197 255.255.255.248 standby 10.195.2.198
!
interface GigabitEthernet0/1
 nameif DMZ
 security-level 50
 ip address 10.195.2.201 255.255.255.248 standby 10.195.2.202
!
object network DMZ_NAT_masd1
 host 10.195.18.182
 description xlate masd1 NAT DMZ src 10.195.18.182 to INSIDE src 192.168.11.101
object network INSIDE_NAT_masd1
 host 10.195.18.182
 description xlate masd1 NAT INSIDE src 10.195.18.182 to DMZ src 1.195.18.182
!
object network DMZ_NAT_masd1
 nat (DMZ,INSIDE) static 192.168.11.101 dns
object network INSIDE_NAT_masd1
 nat (INSIDE,DMZ) static 1.195.18.182 dns
!
policy-map type inspect dns DNS_INSPECT_MAP
 parameters
  message-length maximum 512
!
policy-map global_policy
 class inspection_default
  inspect dns DNS_INSPECT_MAP
!
service-policy global_policy global

Mostra xlate, nel caso in cui ciò aiuti ...

B2-DEV-FW1/DEVELOPMENT# sh xlate local 10.195.18.182
121 in use, 126 most used
Flags: D - DNS, e - extended, I - identity, i - dynamic, r - portmap,
       s - static, T - twice, N - net-to-net
NAT from DMZ:10.195.18.182 to INSIDE:192.168.11.101
    flags sD idle 0:00:01 timeout 0:00:00
NAT from INSIDE:10.195.18.182 to DMZ:1.195.18.182
    flags sD idle 0:03:55 timeout 0:00:00
B2-DEV-FW1/DEVELOPMENT#

Mostra politica di servizio ispeziona dns ...

B2-DEV-FW1/DEVELOPMENT# sh service-policy inspect dns

Global policy:
  Service-policy: global_policy
    Class-map: inspection_default
      Inspect: dns DNS_INSPECT_MAP, packet 15302, drop 0, reset-drop 0, v6-fail-close 0
        message-length maximum 512, drop 0
        dns-guard, count 7649
        protocol-enforcement, drop 0
        nat-rewrite, count 139
B2-DEV-FW1/DEVELOPMENT#

Cattura mostrando le query da b2masd1 al server dei nomi (10.195.18.201). NOTA le doppie query DNS inviate sull'interfaccia INSIDE, ma non sembra che vengano visualizzate sull'interfaccia DMZ.

B2-DEV-FW1/DEVELOPMENT# capture FOO interface DMZ real-time match udp host 10.195.18.182 host 10.195.18.201

Warning: using this option with a slow console connection may
         result in an excessive amount of non-displayed packets
         due to performance limitations.

Use ctrl-c to terminate real-time capture


   1: 09:54:35.994730       10.195.18.182.52639 > 10.195.18.201.53:  udp 45
   2: 09:54:35.995218       10.195.18.201.53 > 10.195.18.182.52639:  udp 83
   3: 09:54:47.875076       10.195.18.182.52644 > 10.195.18.201.53:  udp 53
   4: 09:54:47.875549       10.195.18.201.53 > 10.195.18.182.52644:  udp 136
   5: 09:54:47.875854       10.195.18.182.52645 > 10.195.18.201.53:  udp 51
   6: 09:54:47.876297       10.195.18.201.53 > 10.195.18.182.52645:  udp 138
   7: 09:54:47.876648       10.195.18.182.52646 > 10.195.18.201.53:  udp 35
   8: 09:54:47.877075       10.195.18.201.53 > 10.195.18.182.52646:  udp 35

B2-DEV-FW1/DEVELOPMENT# capture FOO interface INSIDE real-time match udp host 192.168.11.101 host 10.195.18.201

Warning: using this option with a slow console connection may
         result in an excessive amount of non-displayed packets
         due to performance limitations.

Use ctrl-c to terminate real-time capture


   1: 09:56:27.282608       10.195.18.182.52742 > 10.195.18.201.53:  udp 43
   2: 09:56:27.282684       192.168.11.101.52742 > 10.195.18.201.53:  udp 43
   3: 09:56:27.283081       10.195.18.201.53 > 192.168.11.101.52742:  udp 59
   4: 09:56:27.283096       10.195.18.201.53 > 10.195.18.182.52742:  udp 59

Risposte:


8

Rispondere alla mia domanda per aiutare i futuri googler. Ho trascorso circa 3 ore al telefono con TAC; siamo finalmente arrivati ​​alla causa principale del problema.

La soluzione è aggiungere una voce NAT speciale, che corrisponda all'indirizzo IP nel record A DNS quando arriva sull'interfaccia INSIDE.

object network DNS_NAT_masd1
 description xlate A-Record DMZ src 1.195.18.182 to INSIDE src 10.195.18.182
 host 1.195.18.182
 nat (DMZ,INSIDE) static 10.195.18.182

Quando ho chiesto un puntatore alla documentazione che descriva il motivo per cui la traduzione DNS funziona in questo modo, il responsabile del TAC ha dichiarato di non conoscere nessuno che descrivesse questo comportamento. Il responsabile del TAC ha anche detto che con più codice, l'ASA avrebbe saputo tradurre automaticamente il record A DNS senza aggiungere esplicitamente object network DNS_NAT_masd1; tuttavia, non è così che dnsfunziona oggi la parola chiave per ASA NAT. Per motivi che non sono ancora del tutto chiari, l'ASA richiede che l'IP DNS A-Record corrisponda <proxy_addr>a nell'istruzione NAT, usando una sintassi simile a questa ...

object network obj-EXAMPLE
 description NAT object explicitly for translating DNS A-Records
 host <proxy_addr>
 nat (<REAL_INTF>,<PROXY_INTF>) static <real_addr> dns

La difficoltà è che questa configurazione è esattamente all'indietro per ciò che è necessario fare se si procede al normale traffico IP del "piano dati" attraverso il firewall.

Questa è l'intera configurazione che funziona ...

object network DMZ_NAT_masd1
 host 10.195.18.182
 description xlate masd1 NAT DMZ src 10.195.18.182 to INSIDE src 192.168.11.101
object network INSIDE_NAT_masd1
 host 10.195.18.182
 description xlate masd1 NAT INSIDE src 10.195.18.182 to DMZ src 1.195.18.182
!!! DNS_NAT_masd1 is new
object network DNS_NAT_masd1
 host 1.195.18.182
 description xlate A-Record DMZ src 1.195.18.182 to INSIDE src 10.195.18.182
!
object network DMZ_NAT_masd1
 nat (DMZ,INSIDE) static 192.168.11.101
object network INSIDE_NAT_masd1
 nat (INSIDE,DMZ) static 1.195.18.182
!!! DNS_NAT_masd1 is new
object network DNS_NAT_masd1
 nat (DMZ,INSIDE) static 10.195.18.182 dns

1

Mike! Grazie per aver condiviso questo! Ho usato questa soluzione alternativa con due volte NAT e funziona anche!

Ho due volte NAT (ASA OS v 9.5):

nat (esterno, interno) sorgente dinamica ANY X destinazione GroupM GroupN

Quindi, ho un gruppo di server "GroupN" al mio interno e li NAT all'esterno di indirizzi IP "GroupM". I clienti esterni (qualsiasi) possono accedere ai miei server e quando i client esterni passano attraverso ASA le loro fonti vengono sostituite all'indirizzo IP X.

Qui non è possibile utilizzare la parola chiave dns. Ma con la tua soluzione alternativa ho creato un set di NAT di oggetti ausiliari:

object network My_Server1_on_Inside
 host <NATed IP of Server1>
 nat (outside,inside) static <Real IP of server1> dns

E ho il dottore DNS che funziona correttamente.

A proposito, Cisco nella sua documentazione afferma che questa attività è impossibile :) http://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/ 115753-dns-doctoring-asa-config.html

I migliori saluti, Sergey

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.