Подвійний NAT Cisco ASA з перекладом DNS


11

Я намагаюся налаштувати подвійний автоматичний NAT з перекладом DNS на Cisco ASA 9.0 (3), і у мене є кілька проблем з частиною DNS. У мене подвійний NAT працює правильно, таким чином, що у мене є сервер у виробництві та в лабораторії з однаковою IP-адресою. Дивіться b2masd1, nameif INSIDE (виробництво) та masd1, nameif DMZ (лабораторія).

Коли ви переходите з DMZ 10.195.18.182 до 1.195.18.182, я бачу, що переклади відбуваються правильно в обох напрямках ...

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

Це те, що я бачу на 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$

Проблема полягає в тому, що запити DNS від DMZ до INSIDE не перекладаються. Коли я запитую b2masd1 від DMZ, я очікую, що сервер імен на INSIDE відповість з 10.195.18.182, і тоді ASA повинен перевести це на 1.195.18.182. Однак цього не відбувається; як ви бачите, запис DNS не перекладається.

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$

Хтось може пояснити, що мені потрібно зробити, щоб коректно перевести запити DNS? Мені потрібен запит на b2masd1 в DMZ до сервера імен на інтерфейсі INSIDE, щоб повернути 1.195.18.182 (оскільки ASA переводить INSIDE A-Record 10.195.18.182 в DMZ addr 1.195.18.182).

Я створив кімнату чату, щоб допомогти поставити діагноз


Інформація про налагодження різне

Це моя конфігурація ...

!
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

Покажіть xlate, якщо це допоможе ...

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#

Показати перевірку політики щодо служб

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#

Захоплення, що показує запити від b2masd1 до сервера імен (10.195.18.2018). Зверніть увагу на подвійні запити DNS, що надсилаються на INSIDE-інтерфейс, але ми, схоже, не отримуємо їх на інтерфейсі 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

Відповіді:


8

Відповідаючи на власне запитання, щоб допомогти майбутнім гуглерам. Я провів близько 3 годин по телефону з TAC; нарешті ми дійшли до першопричини проблеми.

Рішення полягає в тому, щоб додати спеціальний запис NAT, який відповідає IP-адресі в записі DNS A-Record, коли він надходить на 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

Коли я попросив вказівник на документацію, яка описує, чому DNS-трансляція працює таким чином, керівник TAC сказав, що не знає жодного, що описує цю поведінку. Провідник TAC також зазначив, що при більшій кількості коду ASA буде знати автоматичну трансляцію запису DNS без явного додавання object network DNS_NAT_masd1; однак, сьогодні це не dnsключове слово для ASA NAT. З причин, які ще не є повністю зрозумілими, ASA вимагає, щоб IP-запис DNS A-Record відповідав <proxy_addr>рішенню NAT, використовуючи синтаксис, подібний до цього ...

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

Складність полягає в тому, що ця конфігурація відповідає точно тому, що вам потрібно зробити, якщо ви збираєтеся здійснювати регулярний IP-трафік "площини даних" через брандмауер.

Це вся конфігурація, яка працює ...

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

Майк! Дякуємо, що поділилися цим! Я використав це вирішення разом з NAT двічі, і він також працює!

У мене двічі NAT (ASA OS v 9.5):

Nat (зовні, всередині) джерело динамічний БУДЬ-ЯКОГО X призначення GroupM GroupN

Отже, у мене є група серверів "GroupN" на моїй внутрішній стороні, і я NAT їх зовні на IP-адреси "GroupM". Клієнти ззовні (будь-які) можуть отримати доступ до моїх серверів, і коли зовнішні клієнти проходять через ASA, їх джерела замінюються на IP-адресу X.

Тут неможливо використовувати ключове слово dns. Але за допомогою вашого вирішення я створив набір допоміжних об'єктів NAT:

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

І у мене DNS-лікар працює правильно.

BTW, Cisco в своїй документації говорить, що це завдання неможливо :) http://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/ 115753-dns-doctoring-asa-config.html

З найкращими побажаннями, Сергій

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.