سیدمحمد خادمی
سیدمحمد خادمی
خواندن ۳ دقیقه·۱ سال پیش

کنترل درخواست های DNS توسط روتر سیسکو DNS Doctoring

من هیچ وقت و به هیچ وجه توصیه نمیکم که مثل اینها که فکر میکنند خیلی اعجاب انگیز است که یک روتر سیسکو بتواند DNS Server هم باشد ! چون از نطر من اصلا برای این کار بهینه نشده این یک فعالیت غیر معمول است و کار تمیزی نیست ! ولی اگر شما سرچ کنید Configure Cisco Router as DNS server مقادیر انبوهی سایت می بینید ،من به شخصه معتقدم بهترین استفاده از این فیچر میتواند در هاست های local روی خود روتر باشد ، بدین ترتیب که شما هیچ Resolver ی برای روتر تعریف نکنید و از این کامند هم محض بی ربطی استفاده کنید no ip domain lookup  !

بعد میتوانید هاست های مورد نیاز را دستی تعریف کرده و از شر لاشخورهایی که در عرض 2 روز ترافیک DNS خود را به سمت روتر شما سرازیر میکنند خلاص کنید ! من برای اثبات اینکه این فیچر در حالت Resolver بدرد نخور ترین امکانیست که طراح در یک روزی که به شدت مست بوده به ذهن نئشه اش خطور کرده و آنرا در IOS چپانده ، بر روی پلت فرم های مختلف ، این سرویس را run و ترافیک مثلا 8.8.8.8 را بر رویش سرازیر کردم و با ناباوری ، روتر 7206 VXR G2 و ISR 3945 کاملا بالای 85% لود داشتند ! پس به این نتیجه میرسیم که حتی به این مسئله فکر هم نکنید …

مسئله دیگر DNS Doctoring in Some way است ! بدین معنی که شما بتوانید در شبکه خود رفتار و پاسخ DNS Request ها را به نفع خود و یا بقیه کنترل کنید . کاری که در حال حاظر مخابرات ایران انجام میدهد !

شما تصور کنید که میخواهید ، مشترکین از هر DNS سرور Public روی اینترنت که استفاده کردند ، ترافیک DNS به سمت DNS Server مورد نظر شما روانه و پاسخ های مورد نظر شما دریافت شود ، برای مثال شما میخواهید همیشه مثلا فلان URL به آدرس فیلترینگ شما که مثلا 10.10.11.11 است ، Poiny کند ، راه حل چیست ؟

بعضی اقدام به بومی سازی یا Localize نمودن DNS سرور های مشهور مثل 8.8.8.8 4.2.2.4 192.9.9.3 , … می نمایند ، که این روش بسیار کودکانه و اشتباه است.

روش کار به این صورت است که ما کا ترافیک DNS خروجی شبکه را TAG میکنیم و به سمت DNS سرور خودمان سرازیر میکنیم و در DNS Server خودمان هر بلایی که خواستیم ، سر Request ها میاوریم !

ابتدا تگ کردن ترافیک :

Core-Router(config)#ip acce e 110
Core-Router(config-ext-nacl)#per udp an an eq 53
Core-Router(config-ext-nacl)#per tcp an an eq 53
Core-Router(config-ext-nacl)#den
Core-Router(config-ext-nacl)#deny ip an
Core-Router(config-ext-nacl)#deny ip any an
Core-Router(config-ext-nacl)#deny ip any any
Core-Router(config-ext-nacl)#exit

route کردن ترافیک به DNS Server مورد نظر :

Core-Router(config)#route-map dns per 10
Core-Router(config-route-map)#match ip address 110
Core-Router(config-route-map)#set ip next-hop 217.218.127.127
Core-Router(config-route-map)#exit
Core-Router(config)#route-map dns per 20
Core-Router(config-route-map)#exit

با اعمال کردن این Route-Map به اینترفیس خروجی اصلی یا هر اینترفیس که مورد نظر ماست ، و کانفیگ DNS Server خود ، میتوانید کل کرافیک DNS را فارغ از اینکه کاربر از چه DNS سروری استفاده میکند ، به سمت DNS Server مورد نظر سرازیر نمود.

تست :

Before :

C:\Users\User>nslookup – 8.8.8.8
Default Server: google-public-dns-a.google.com
Address: 8.8.8.8
> yahoo.com
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative answer:
Name: yahoo.com
Addresses: 206.190.36.45
98.138.253.109
98.139.183.24

After :

C:\Users\User>nslookup – 8.8.8.8
Default Server: google-public-dns-a.google.com
Address: 8.8.8.8
> yahoo.com
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative answer:
Name: yahoo.com
Address: 10.10.11.11

C:\Users\User>nslookup – 4.2.2.4
Default Server: d.resolvers.level3.net
Address: 4.2.2.4
> yahoo.com
Server: d.resolvers.level3.net
Address: 4.2.2.4
Non-authoritative answer:
Name: yahoo.com
Address: 10.10.11.11

ملاحظه میکنید که پاسخ Request های ما به آنچه دوست داشتیم تغییر کرده و این یعنی زور !!

البته شما میتوانید به جای یک DNS Server خارجی ، ازخود روتر استفاده کنید ، که البته کمی کانفیگ متفاوت میشود ، ولی با توجه به توصیه های ابتدایی پست ، من به هیچ وجه توصیه نمیکنم .

dns
شاید از این پست‌ها خوشتان بیاید