Cisco ASA NAT ganda dengan terjemahan DNS

11

Saya mencoba menyiapkan NAT Otomatis ganda dengan terjemahan DNS pada Cisco ASA 9.0 (3), dan saya mengalami beberapa tantangan dengan porsi DNS. Saya mendapat NAT ganda yang berfungsi dengan benar, sehingga saya memiliki server dalam produksi dan di lab dengan alamat IP yang sama. Lihat b2masd1, nameif DI DALAM (produksi) dan masd1, nameif DMZ (lab).

Ketika Anda melakukan ping dari DMZ 10.195.18.182 ke 1.195.18.182, saya melihat terjemahan terjadi dengan benar di kedua arah ...

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

Ini yang saya lihat di 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$

Masalahnya adalah bahwa permintaan DNS dari DMZ ke INSIDE tidak diterjemahkan. Ketika saya meminta b2masd1 dari DMZ, saya mengharapkan nameserver pada INSIDE untuk merespons dengan 10.195.18.182, dan kemudian ASA harus menerjemahkannya ke 1.195.18.182. Namun, itu tidak terjadi; seperti yang Anda lihat, entri DNS tidak diterjemahkan.

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$

Adakah yang bisa menjelaskan apa yang harus saya lakukan untuk mendapatkan permintaan DNS yang diterjemahkan dengan benar? Saya perlu permintaan untuk b2masd1 di DMZ ke server nama pada antarmuka INSIDE untuk mengembalikan 1.195.18.182 (karena ASA menerjemahkan INSIDE A-Record 10.195.18.182 ke DMZ addr 1.195.18.182).

Saya telah menyiapkan ruang obrolan untuk membantu diagnosis


Lain-lain informasi debug

Ini adalah konfigurasi saya ...

!
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

Perlihatkan xlate, jika ini membantu ...

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#

Tampilkan kebijakan layanan periksa 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#

Menangkap yang menampilkan kueri dari b2masd1 ke server nama (10.195.18.201). Perhatikan permintaan DNS ganda yang dikirim pada antarmuka INSIDE, tetapi kami sepertinya tidak mendapatkannya di antarmuka 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
sumber

Jawaban:

8

Menjawab pertanyaan saya sendiri untuk membantu googler di masa depan. Saya menghabiskan sekitar 3 jam di telepon dengan TAC; akhirnya kami sampai ke akar penyebab masalah.

Solusinya adalah dengan menambahkan entri NAT khusus, yang cocok dengan alamat IP di DNS A-Record ketika tiba di antarmuka 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

Ketika saya meminta pointer ke dokumentasi yang menjelaskan mengapa terjemahan DNS bekerja dengan cara ini, pemimpin TAC mengatakan bahwa dia tidak tahu ada yang menggambarkan perilaku ini. Pimpinan TAC juga menyebutkan bahwa dengan lebih banyak kode, ASA akan tahu untuk secara otomatis menerjemahkan A-Record DNS tanpa secara eksplisit menambahkan object network DNS_NAT_masd1; Namun, bukan itu cara kerja dnskata kunci untuk ASA NAT saat ini. Untuk alasan yang masih belum sepenuhnya jelas, ASA memerlukan DNS A-Record IP untuk mencocokkan dengan <proxy_addr>pernyataan NAT, menggunakan sintaksis yang mirip dengan ini ...

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

Kesulitannya adalah bahwa konfigurasi ini persis mundur untuk apa yang perlu Anda lakukan jika Anda akan nat lalu lintas IP "pesawat data" reguler melalui firewall.

Ini adalah keseluruhan konfigurasi yang berfungsi ...

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
sumber
1

Mike! Terima kasih telah berbagi ini! Saya menggunakan solusi ini dengan NAT dua kali, dan berhasil juga!

Saya memiliki NAT dua kali (ASA OS v 9.5):

nat (luar, dalam) sumber dinamis APAPUN X tujuan GroupM GroupN

Jadi, saya memiliki sekelompok server "GroupN" di bagian dalam saya dan saya NAT mereka ke luar ke alamat IP "GroupM". Klien dari luar (apa saja) dapat mengakses server saya dan ketika klien eksternal melalui ASA sumber mereka diganti ke alamat IP X.

Di sini tidak mungkin menggunakan kata kunci dns. Tetapi dengan solusi Anda, saya telah membuat set NAT objek tambahan:

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

DAN saya punya DNS DNSing bekerja dengan benar.

BTW, Cisco dalam dokumentasinya mengatakan bahwa tugas ini tidak mungkin :) http://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/ 115753-dns-doctoring-asa-config.html

Salam, Sergey

sergey ivanov
sumber