Cisco ASA двойной NAT с переводом DNS

11

Я пытаюсь настроить двойной автоматический NAT с преобразованием DNS на Cisco ASA 9.0 (3), и у меня есть несколько проблем с частью DNS. Я получил двойной NAT, работающий правильно, такой, что у меня есть сервер в производстве и в лаборатории с тем же IP-адресом. См. B2masd1, имя INSIDE (производство) и masd1, имя 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.201). Обратите внимание, что двойные 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, когда он поступает на интерфейс 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 будет знать, что автоматически переводит A-запись DNS без явного добавления object network DNS_NAT_masd1; однако, это не то, как dnsключевое слово для ASA NAT работает сегодня. По причинам, которые все еще не совсем ясны, ASA требует, чтобы IP A-записи DNS соответствовал в <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», и я подключаю их к внешним 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-врач работает правильно.

Кстати, Cisco в своей документации говорит, что эта задача невозможна :) http://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/ 115753-ДНС для врачевания-ас-config.html

С наилучшими пожеланиями, Сергей

сергей иванов
источник