DNS static در RouterOS یعنی رکوردهای ثابت داخل کش/سرور DNS خود روتر: مثلاً یک نام داخلی را به آیپی LAN ببندید یا با regexp چند درخواست را یکجا پاسخ دهید. مستند رسمی DNS میکروتیک همین قابلیت را با مثال /ip dns static add نشان میدهد؛ وقتی روتر DNS کلاینتها باشد، این رکوردها جلوتر از آپاستریم دیده میشوند.
آموزش DNS Static میکروتیک؛ نام داخلی و override ساده
پیشنیازهایی که جا میماند: روتر باید برای کلاینتها بهعنوان DNS دیده شود (معمولاً با allow-remote-requests و تنظیم DHCP)، بدانید override فقط برای کسانی کار میکند که از همین روتر میپرسند، و فایروال پورت ۵۳ را برای کل اینترنت باز نگذارید. نقشها: کلاینت LAN کوئری میفرستد؛ روتر اول static را میبیند؛ اگر نبود به سرور بالادست میرود.
- در ترمینال یا WinBox مسیر IP → DNS را باز کنید و مطمئن شوید سرورهای بالادست (مثل DNS ISP یا عمومی) تنظیم شدهاند.
- گزینهٔ Allow Remote Requests را فقط اگر میخواهید روتر به کلاینتها پاسخ DNS بدهد روشن کنید؛ مستند هشدار میدهد دسترسی TCP/UDP ۵۳ را به hostهای شناختهشده محدود کنید.
- به تب/منوی Static بروید یا در CLI بنویسید: /ip dns static.
- طبق مثال رسمی یک رکورد ساده بسازید: /ip dns static add name=www.mikrotik.com address=10.0.0.1 — در شبکهٔ خودتان نام و آیپی داخلی واقعی بگذارید.
- اگر چند نام مشابه دارید، regexp را امتحان کنید؛ مستند میگوید اگر نام با استاندارد DNS نخواند بهعنوان عبارت منظم در نظر گرفته میشود و لیست از بالا به پایین چک میشود: /ip dns static add regexp="[*mikrotik*]" address=10.0.0.2
- با /ip/dns/static/print ترتیب و TTL را ببینید.
- از یک کلاینت LAN که DNSاش روتر است، nslookup یا dig بزنید و تأیید کنید پاسخ همان address است.
- در DHCP Server گزینهٔ DNS را روی آیپی روتر بگذارید تا کلاینتهای جدید خودکار همین مسیر را بگیرند.
اگر برای یک نام فقط رکورد A دارید و کلاینت AAAA میپرسد، رفتار مستند این است که A را از static میدهد و برای AAAA ممکن است بالادست را بپرسد. برای «خراب کردن» عمدی یک نام بالادست میتوانید مقدار ساختگی IPv6 مثل ::ffff بگذارید؛ این کار را فقط وقتی سیاست شبکه روشن است انجام دهید.
اگر کلاینت هنوز IP عمومی میگیرد، در نظرات بگویید DNS کارت شبکه چیست و Allow Remote Requests روشن است یا نه.
خطاهای رایج و امنیت
- static دیده نمیشود → کلاینت از DNS دیگری میپرسد (۸٫۸٫۸٫۸ مستقیم، DoH مرورگر، یا DHCP اشتباه).
- فقط بعضی دستگاهها درستاند → کش محلی OS/مرورگر؛ یکبار کش را خالی کنید.
- regexp همه چیز را میگیرد → ترتیب لیست و الگوی بیشازحد باز را اصلاح کنید.
- پورت ۵۳ از اینترنت باز است → فوراً با filter محدود کنید؛ Allow Remote Requests بهمعنی «برای همهٔ اینترنت» نیست.
- override را برای فیشینگ یا دور زدن امنیتی همکاران استفاده نکنید؛ فقط برای نامهای داخلی و سیاست رسمی شبکه.
DNS static را برای پرتال داخلی میخواهید یا برای مسدود/هدایت چند دامنه؟ الگوی name ساده برایتان کافی است یا regexp؟
DNS static وقتی میدرخشد که نام داخلی پایدار میخواهید بدون اینکه روی همهٔ کلاینتها فایل hosts پخش کنید. روتر را DNS DHCP بگذارید، یک name به address داخلی بدهید، و تمام. برای چند زیرنام مشابه، regexp میتواند تکرار را کم کند ولی الگو را تنگ نگه دارید تا درخواستهای بیربط را نقاپد.
مستند DNS هشدار امنیتی روشنی دارد: وقتی allow-remote-requests روشن است، پورت ۵۳ را برای hostهای شناختهشده محدود کنید. باز گذاشتن DNS resolver به اینترنت هم مصرف منابع است هم سطح حمله. Static داخلی دلیل نمیشود resolver عمومی شوید.
اگر فقط بعضی کلاینتها جواب static میگیرند، اول بپرسید DNS کارت شبکه چیست. موبایلهایی که Private DNS یا DoH دارند ممکن است اصلاً از روتر نپرسند. روی دسکتاپ هم کش OS گاهی رکورد قدیمی را نگه میدارد؛ تست با dig مستقیم به آیپی روتر شفافتر است.
مرجع کامل ویژگیهای static و مثالهای name/regexp همان صفحهٔ DNS در مستندات RouterOS است؛ از همان فرمانهای /ip dns static استفاده کنید.