DNS変換を使用したCisco ASAダブルNAT


11

Cisco ASA 9.0(3)でDNS変換付きの二重自動NATをセットアップしようとしていますが、DNSの部分でいくつかの課題があります。二重NATが正しく機能しているため、同じIPアドレスを持つサーバーが本番環境とラボにあります。b2masd1、nameif INSIDE(製品)およびmasd1、nameif DMZ(ラボ)を参照してください。

DMZ 10.195.18.182から1.195.18.182にpingすると、両方向で正しく変換が行われているのがわかります...

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内のINSIDEインターフェイス上のネームサーバーへのb2masd1のクエリが必要です(ASAがINSIDE Aレコード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#

サービスポリシー検査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。ただし、これはdnsASA NAT のキーワードが今日機能する方法ではありません。まだ完全に明確ではない理由により、ASAは<proxy_addr>これに類似した構文を使用して、NATステートメントのと一致するようにDNS AレコードIPを要求します...

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トラフィックをNATする場合に必要なことに対して、この構成はまったく逆であることです。

これは動作する全体の構成です...

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

マイク!これを共有してくれてありがとう!2度のNATでこの回避策を使用しましたが、これも機能します!

NATが2回あります(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 Doctoringを正しく動作させています。

ところで、シスコのドキュメントでは、このタスクは不可能であるとしています:) http://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/ 115753-dns-doctoring-asa-config.html

よろしく、セルゲイ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.