کنترل درخواست های 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 110Core-Router(config-ext-nacl)#per udp an an eq 53Core-Router(config-ext-nacl)#per tcp an an eq 53Core-Router(config-ext-nacl)#denCore-Router(config-ext-nacl)#deny ip anCore-Router(config-ext-nacl)#deny ip any anCore-Router(config-ext-nacl)#deny ip any anyCore-Router(config-ext-nacl)#exitroute کردن ترافیک به DNS Server مورد نظر :Core-Router(config)#route-map dns per 10Core-Router(config-route-map)#match ip address 110Core-Router(config-route-map)#set ip next-hop 217.218.127.127Core-Router(config-route-map)#exitCore-Router(config)#route-map dns per 20Core-Router(config-route-map)#exitبا اعمال کردن این Route-Map به اینترفیس خروجی اصلی یا هر اینترفیس که مورد نظر ماست ، و کانفیگ DNS Server خود ، میتوانید کل کرافیک DNS را فارغ از اینکه کاربر از چه DNS سروری استفاده میکند ، به سمت DNS Server مورد نظر سرازیر نمود.تست :Before :C:\Users\User>nslookup – 8.8.8.8Default Server: google-public-dns-a.google.comAddress: 8.8.8.8> yahoo.comServer: google-public-dns-a.google.comAddress: 8.8.8.8Non-authoritative answer:Name: yahoo.comAddresses: 206.190.36.4598.138.253.10998.139.183.24After :C:\Users\User>nslookup – 8.8.8.8Default Server: google-public-dns-a.google.comAddress: 8.8.8.8> yahoo.comServer: google-public-dns-a.google.comAddress: 8.8.8.8Non-authoritative answer:Name: yahoo.comAddress: 10.10.11.11C:\Users\User>nslookup – 4.2.2.4Default Server: d.resolvers.level3.netAddress: 4.2.2.4> yahoo.comServer: d.resolvers.level3.netAddress: 4.2.2.4Non-authoritative answer:Name: yahoo.comAddress: 10.10.11.11ملاحظه میکنید که پاسخ Request های ما به آنچه دوست داشتیم تغییر کرده و این یعنی زور !!البته شما میتوانید به جای یک DNS Server خارجی ، ازخود روتر استفاده کنید ، که البته کمی کانفیگ متفاوت میشود ، ولی با توجه به توصیه های ابتدایی پست ، من به هیچ وجه توصیه نمیکنم .