Cisco ASA สองเท่า NAT พร้อมการแปล DNS


11

ฉันกำลังพยายามตั้งค่า NAT อัตโนมัติสองเท่าด้วยการแปล DNS บน Cisco ASA 9.0 (3) และฉันมีความท้าทายเล็กน้อยกับส่วน DNS ฉันได้ NAT สองครั้งทำงานอย่างถูกต้องเช่นฉันมีเซิร์ฟเวอร์ในการผลิตและในห้องปฏิบัติการที่มีที่อยู่ IP เดียวกัน ดู b2masd1, nameif INSIDE (การผลิต) และ masd1, nameif DMZ (แล็บ)

เมื่อคุณ ping จาก 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 ไปยังภายในไม่ได้รับการแปล เมื่อฉันสอบถาม b2masd1 จาก DMZ ฉันคาดว่า Nameserver ใน 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 ไปยัง nameserver ในอินเทอร์เฟซ INSIDE เพื่อส่งกลับ 1.195.18.182 (เนื่องจาก ASA แปล INSIDE A-Record 10.195.18.182 เป็นอินไซด์เพื่อเพิ่ม DMZ 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) หมายเหตุการสืบค้น 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

ตอบคำถามของฉันเองเพื่อช่วยชาว Google ในอนาคต ฉันใช้เวลาประมาณ 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 กล่าวว่าเขาไม่ทราบว่ามีการอธิบายพฤติกรรมนี้อย่างไร นำแทคยังกล่าวว่ามีรหัสมากขึ้น ASA จะได้รู้ว่าการแปล DNS A-บันทึกโดยไม่ต้องชัดเจนเพิ่มโดยอัตโนมัติobject network DNS_NAT_masd1; อย่างไรก็ตามนั่นไม่ใช่วิธีการทำงานของdnsคำหลักสำหรับ ASA NAT ในปัจจุบัน สำหรับเหตุผลที่ยังไม่ชัดเจนอย่างสมบูรณ์ ASA ต้องการ DNS A-Record 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 "data plane" ปกติผ่านไฟร์วอลล์

นี่คือการกำหนดค่าทั้งหมดที่ใช้งานได้ ...

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 (นอก, ภายใน) แหล่งไดนามิกไดนามิกใด ๆ ที่ปลายทาง GroupM GroupN

ดังนั้นฉันมีกลุ่มเซิร์ฟเวอร์ "GroupN" ที่อยู่ภายในของฉันและฉัน NAT พวกเขาไปยังที่อยู่ IP ภายนอก "GroupM" ลูกค้าจากภายนอก (ใด ๆ ) สามารถเข้าถึงเซิร์ฟเวอร์ของฉันและเมื่อลูกค้าภายนอกผ่าน ASA แหล่งที่มาของพวกเขาจะถูกแทนที่เป็นที่อยู่ IP X

ที่นี่เป็นไปไม่ได้ที่จะใช้คำหลัก dns แต่ด้วยวิธีแก้ปัญหาของคุณฉันได้สร้างชุดของอ๊อบเจคเสริม NATs:

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

ขอแสดงความนับถือ Sergey

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.