یک وبسرور داخلی دارید که با Static NAT از اینترنت در دسترس است: از بیرون با آدرس عمومی 203.0.113.10 و در شبکه داخلی با 192.168.1.10. کاربران داخلی که برای www.example.com از DNS عمومی آدرس میگیرند، آدرس عمومی را دریافت میکنند و اتصالشان برقرار نمیشود، چون بسته باید از فایروال بیرون برود و دوباره به داخل برگردد. DNS Doctoring راهحل این مشکل است: تجهیزی که NAT انجام میدهد، آدرس داخل پاسخ DNS را هنگام عبور بازنویسی میکند تا کاربر داخلی آدرس خصوصی سرور را بگیرد.
در این مطلب مشکل را دقیق توضیح میدهیم، سه راهحل (Split DNS ، DNS Doctoring و Hairpin NAT) را مقایسه میکنیم، کانفیگ DNS Doctoring روی ASA و رفتار NAT روترهای IOS را مرور میکنیم و درباره استفاده از روتر بهعنوان DNS Server هم نکتههایی میگوییم.

DNS Doctoring در یک نگاه
| مشکل | کاربر داخلی از DNS عمومی، آدرس عمومی سرور داخلی را میگیرد |
| راهحل تمیز | Split DNS : یک DNS داخلی با آدرسهای خصوصی |
| DNS Doctoring | بازنویسی رکورد A در پاسخ DNS توسط NAT |
| روی ASA | کلمه dns در انتهای Static / Object NAT |
| روی روتر IOS | NAT با ALG مربوط به DNS ، آدرسهای داخل پاسخ DNS را ترجمه میکند |
فهرست مطالب
صورت مسئله
| مرحله | چه اتفاقی میافتد |
|---|---|
| ۱ | کلاینت 192.168.1.50 از DNS عمومی (مثلاً 8.8.8.8) آدرس www را میپرسد |
| ۲ | DNS عمومی پاسخ میدهد: 203.0.113.10 |
| ۳ | کلاینت به 203.0.113.10 وصل میشود؛ بسته به فایروال میرسد و باید به داخل برگردد (U-turn) |
| ۴ | بدون تنظیم خاص، فایروال یا روتر این مسیر را نمیپذیرد و اتصال برقرار نمیشود |
سه راهحل
| روش | توضیح | ارزیابی |
|---|---|---|
| Split DNS | DNS داخلی (مثلاً Windows DNS) برای همان دامنه، آدرس خصوصی را پاسخ میدهد | تمیزترین و پیشنهادی |
| DNS Doctoring | تجهیز NAT پاسخ DNS را بازنویسی میکند | وقتی DNS داخلی ندارید یا کلاینتها از DNS عمومی استفاده میکنند |
| Hairpin (U-turn) NAT | اجازه عبور ترافیک از داخل به آدرس عمومی و برگشت به داخل | کار میکند اما ترافیک بیدلیل از فایروال عبور میکند |
DNS Doctoring روی ASA

طبق سند رسمی سیسکو، روی ASA کافی است کلمه dns به انتهای Static NAT یا Object NAT اضافه شود؛ ASA با DNS Inspection (که پیشفرض فعال است) پاسخهای DNS را بررسی و رکورد A را بازنویسی میکند:
object network WEB-SERVER host 192.168.1.10 nat (inside,outside) static 203.0.113.10 dns ! policy-map global_policy class inspection_default inspect dns preset_dns_map
طبق همان سند، Twice NAT از کلمه dns پشتیبانی نمیکند و فقط Object NAT و Static NAT معمولی این قابلیت را دارند.
روی روتر IOS
NAT در IOS یک ALG برای DNS دارد: وقتی پاسخ DNS از اینترفیس outside به inside عبور میکند و آدرس داخل آن با یک ترجمه Static NAT مطابقت دارد، روتر آن آدرس را به آدرس داخلی ترجمه میکند. پیششرط این است که Static NAT تعریف شده و پاسخ DNS واقعاً از روتر عبور کند:
ip nat inside source static 192.168.1.10 203.0.113.10 ! interface GigabitEthernet0/0/0 ip nat outside interface GigabitEthernet0/0/1 ip nat inside
رفتار دقیق ALG به نسخه IOS بستگی دارد؛ پس از پیکربندی با nslookup از یک کلاینت داخلی بررسی کنید که آدرس خصوصی برمیگردد. جزئیات NAT را در پیادهسازی NAT روی روتر سیسکو ببینید.
روتر بهعنوان DNS Server؟
روتر سیسکو میتواند DNS Forwarder باشد و چند رکورد محلی هم پاسخ دهد:
ip dns server ip name-server 8.8.8.8 1.1.1.1 ip host www.example.com 192.168.1.10
این برای دفتر کوچک و چند رکورد کافی است، اما روتر برای نقش DNS Server اصلی سازمان بهینه نشده است: ابزار مدیریت، لاگ و امنیت DNS سرورهای واقعی را ندارد. برای شبکه سازمانی DNS داخلی جداگانه (Split DNS) بهترین راه است. اگر روتر DNS Server است، مطمئن شوید از اینترنت به آن پاسخ نمیدهد تا ابزار حمله Amplification نشود (DDoS و مقابله با آن).
پرسشهای متداول
DNS Doctoring روی DNS over HTTPS کار میکند؟
خیر؛ پاسخهای رمزنگاریشده (DoH و DoT) قابل بازنویسی نیستند. مرورگرهایی که DoH استفاده میکنند این راهحل را دور میزنند؛ Split DNS با DNS داخلی مطمئنتر است.
برای IPv6 چطور؟
در طراحی رایج IPv6 NAT وجود ندارد و سرور یک آدرس سراسری دارد؛ مشکل اصلاً پیش نمیآید.
منابع رسمی
- Cisco – DNS Doctoring on ASA Configuration Example
- Cisco – Configure DNS Doctoring for Three NAT Interfaces on ASA
مشاوره با AKA NET
برای طراحی NAT ، DNS و شبکه مرزی سازمان با آکانت (AKA NET) تماس بگیرید.
تلفن: 09121308444 | ایمیل: aka@aka.ir | aka.ir