DNS 변환 기능이있는 Cisco ASA 이중 NAT


11

Cisco ASA 9.0 (3)에서 DNS 변환으로 이중 자동 NAT를 설정하려고하는데 DNS 부분에 몇 가지 문제가 있습니다. 이중 NAT가 올바르게 작동하여 프로덕션 및 실험실에 동일한 IP 주소를 가진 서버가 있습니다. b2masd1, nameif INSIDE (생산) 및 masd1, nameif DMZ (lab)를 참조하십시오.

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$

문제는 DMZ에서 INSIDE 로의 DNS 쿼리 가 변환 되지 않는다는 것 입니다. DMZ에서 b2masd1을 쿼리 할 때 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 쿼리를 올바르게 번역하기 위해 어떻게해야하는지 설명 할 수 있습니까? 1.195.18.182를 반환하려면 DMZ의 b2masd1에 대한 쿼리가 INSIDE 인터페이스의 네임 서버에 대한 쿼리가 필요합니다.

진단을 돕기 위해 대화방 을 설정했습니다


기타 디버깅 정보

이것은 내 구성입니다 ...

!
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#

서비스 정책 검사 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#

b2masd1에서 네임 서버 (10.195.18.201) 로의 쿼리를 보여줍니다. INSIDE 인터페이스에서 전송 된 이중 DNS 쿼리를 참고하십시오. 그러나 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

미래의 Google 직원을 돕기 위해 내 자신의 질문에 대답합니다. TAC와의 통화에서 약 3 시간을 보냈습니다. 우리는 마침내 문제의 근본 원인에 도달했습니다.

해결책은 특수 NAT 항목을 추가하는 것인데, 이는 INSIDE 인터페이스에 도착했을 때 DNS A 레코드의 IP 주소와 일치합니다.

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 A- 레코드를 자동으로 변환하는 것을 알고있을 것이라고 언급했습니다 object network DNS_NAT_masd1. 그러나 dns이것이 오늘날 ASA NAT 키워드가 작동 하는 방식이 아닙니다 . 아직 완전히 명확하지 않은 이유로 ASA는 DNS A- 레코드 IP가 <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 (외부, 내부) 소스 동적 ANY X 대상 GroupM GroupN

따라서 내부에 "GroupN"서버 그룹이 있고 IP 주소 "GroupM"에 외부로 NAT합니다. 외부 (모든)의 클라이언트는 내 서버에 액세스 할 수 있으며 외부 클라이언트가 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의 문서에서 BTW는이 작업이 불가능하다고 말합니다 :) http://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/ 115753-dns-doctoring-asa-config.html

감사합니다, Sergey

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.