Podwójny NAT Cisco ASA z tłumaczeniem DNS

11

Próbuję skonfigurować podwójną automatyczną translację NAT z tłumaczeniem DNS w Cisco ASA 9.0 (3) i mam kilka problemów z częścią DNS. Mam podwójną translację NAT działającą poprawnie, dzięki czemu mam serwer w produkcji i w laboratorium z tym samym adresem IP. Patrz b2masd1, nameif INSIDE (produkcja) i masd1, nameif DMZ (lab).

Podczas pingowania z DMZ 10.195.18.182 do 1.195.18.182 widzę, że tłumaczenia przebiegają poprawnie w obu kierunkach ...

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

Oto co widzę na 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$

Problem polega na tym, że zapytania DNS z DMZ do INSIDE nie są tłumaczone. Kiedy pytam o b2masd1 z DMZ, oczekuję, że serwer nazw na WEWNĄTRZ odpowie na 10.195.18.182, a następnie ASA powinien przetłumaczyć to na 1.195.18.182. Tak się jednak nie dzieje; jak widać, wpis DNS nie jest tłumaczony.

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$

Czy ktoś może wyjaśnić, co muszę zrobić, aby poprawnie przetłumaczyć zapytania DNS? Potrzebuję zapytania dla b2masd1 w DMZ do serwera nazw w interfejsie INSIDE, aby zwrócić 1.195.18.182 (ponieważ ASA tłumaczy INSIDE A-Record 10.195.18.182 na adres DMZ 1.195.18.182).

Mam założyć chat room , aby pomóc w diagnozie


Różne informacje debugowania

To jest moja konfiguracja ...

!
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

Pokaż Xlate, na wypadek, gdyby to pomogło ...

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#

Pokaż zasady usługi inspekcji 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#

Przechwytuje pokazywanie zapytań od b2masd1 do serwera nazw (10.195.18.201). UWAGA podwójne zapytania DNS wysyłane przez interfejs INSIDE, ale wydaje się, że nie otrzymujemy ich w interfejsie 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
Mike Pennington
źródło

Odpowiedzi:

8

Odpowiadając na moje pytanie, aby pomóc przyszłym pracownikom Google. Spędziłem około 3 godzin na telefonie z TAC; w końcu dotarliśmy do głównej przyczyny problemu.

Rozwiązaniem jest dodanie specjalnego wpisu NAT, który odpowiada adresowi IP w DNS A-Record, kiedy pojawia się w interfejsie WEWNĄTRZ.

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

Kiedy poprosiłem o wskaźnik do dokumentacji, który opisuje, dlaczego tłumaczenie DNS działa w ten sposób, kierownik TAC powiedział, że nie wiedział o żadnym opisującym to zachowanie. Kierownik TAC wspomniał również, że przy większej liczbie kodów ASA wiedziałby, że automatycznie tłumaczy rekord A DNS bez wyraźnego dodawania object network DNS_NAT_masd1; jednak nie tak dnsdziś działa słowo kluczowe ASA NAT. Z powodów, które wciąż nie są jeszcze całkowicie jasne, ASA wymaga, aby adres IP DNS A-Record był zgodny z <proxy_addr>instrukcją NAT, używając składni podobnej do tej ...

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

Trudność polega na tym, że ta konfiguracja jest dokładnie odwrotna do tego, co musisz zrobić, jeśli zamierzasz natknąć się na regularny ruch IP „płaszczyzny danych” przez zaporę.

To jest cała konfiguracja, która działa ...

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
Mike Pennington
źródło
1

Mikrofon! Dziękujemy za udostępnienie tego! Użyłem tego obejścia z podwójną translacją NAT i działa również!

Mam dwa razy NAT (ASA OS v 9.5):

nat (na zewnątrz, wewnątrz) źródło dynamiczne DOWOLNE X miejsce docelowe GroupM GrupaN

Mam więc grupę serwerów „GroupN” w swoim wnętrzu i przekierowuję je na zewnątrz na adresy IP „GroupM”. Klienci z zewnątrz (dowolni) mogą uzyskać dostęp do moich serwerów, a gdy klienci zewnętrzni przechodzą przez ASA, ich źródła są zastępowane adresem IP X.

Nie można użyć słowa kluczowego dns. Ale dzięki temu obejściu stworzyłem zestaw NAT obiektów pomocniczych:

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

I mam doktora DNS działającego poprawnie.

BTW, Cisco w swojej dokumentacji mówi, że to zadanie jest niemożliwe :) http://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/ 115753-dns-doctoring-asa-config.html

Z pozdrowieniami, Siergiej

Siergiej Iwanow
źródło