فایروال میکروتیک: filter، NAT و mangle
فایروال میکروتیک چطور کار میکند؛ جدولهای filter، NAT، mangle و raw، زنجیرههای input و forward، connection tracking، port forwarding و اشتباههای رایج.
در این صفحه
فایروال میکروتیک از چهار جدول تشکیل شده است: filter تصمیم میگیرد بسته عبور کند یا نه، NAT آدرسها را عوض میکند، mangle بستهها را برای کارهای بعدی علامت گذاری میکند و raw پیش از connection tracking بستهها را دور میریزد. اگر فقط یک نکته از این مقاله بماند: هر قانون جدید را بالای قانون «drop everything» اضافه کنید، نه زیر آن.
جدولها و زنجیرهها
| جدول | کاربرد | زنجیرههای مهم |
|---|---|---|
| filter | اجازه یا رد ترافیک | input، forward، output |
| nat | تغییر آدرس و پورت | srcnat، dstnat |
| mangle | علامت گذاری (mark)، تغییر TTL و MSS | prerouting، forward، postrouting و … |
| raw | رد کردن ترافیک پیش از connection tracking | prerouting، output |
سه زنجیرهی جدول filter را باید دقیق بشناسید:
- input: ترافیکی که مقصدش خود روتر است؛ Winbox، SSH، DNS روتر، ping به روتر.
- forward: ترافیکی که از روتر عبور میکند؛ کاربر شبکهی داخلی که به اینترنت میرود.
- output: ترافیکی که خود روتر تولید میکند.
خطای رایج این است که کسی برای محافظت از سرورهای پشت روتر قانون در input میگذارد. ترافیک به سمت سرورها از forward عبور میکند.
connection tracking
روتر هر ارتباط را دنبال میکند و به هر بسته یکی از این وضعیتها را میدهد:
| وضعیت | معنی |
|---|---|
new |
اولین بستهی یک ارتباط |
established |
بستهای از ارتباطی که قبلاً پذیرفته شده |
related |
ارتباط وابسته، مثلاً کانال دادهی FTP یا پیام ICMP مربوط به یک ارتباط |
invalid |
بستهای که به هیچ ارتباط معتبری تعلق ندارد |
untracked |
بستهای که در جدول raw از tracking خارج شده |
فایروال خوب از همین استفاده میکند: established و related را اول میپذیرد (بیشتر ترافیک همین است و بقیهی قوانین دیگر بررسی نمیشوند)، invalid را دور میریزد و فقط برای new تصمیم میگیرد.
قوانین پایهی filter
/ip firewall filter
add chain=input action=accept connection-state=established,related,untracked comment="input: accept established"
add chain=input action=drop connection-state=invalid comment="input: drop invalid"
add chain=input action=accept protocol=icmp comment="input: accept ICMP"
add chain=input action=accept in-interface-list=LAN comment="input: accept from LAN"
add chain=input action=drop comment="input: drop everything else"
add chain=forward action=fasttrack-connection connection-state=established,related hw-offload=yes comment="forward: fasttrack"
add chain=forward action=accept connection-state=established,related,untracked comment="forward: accept established"
add chain=forward action=drop connection-state=invalid comment="forward: drop invalid"
add chain=forward action=drop connection-state=new connection-nat-state=!dstnat in-interface-list=WAN comment="forward: drop new from WAN"قانون آخر ارزش توضیح دارد: هر ارتباط جدیدی که از اینترنت میآید رد میشود، مگر این که قبلاً با یک قانون dstnat (port forwarding) به یک سرور داخلی هدایت شده باشد. به همین دلیل وقتی port forwarding اضافه میکنید، لازم نیست قانون filter جداگانه بنویسید.
این قوانین فرض میکنند فهرستهای WAN و LAN را ساختهاید؛ روش کار در کانفیگ اولیهی روتر میکروتیک آمده است.
محدود کردن مدیریت روتر با address list
به جای این که همهی شبکهی داخلی به Winbox دسترسی داشته باشند، یک فهرست از آدرس مدیرها بسازید:
/ip firewall address-list add list=admins address=192.168.88.10 comment="IT laptop"
/ip firewall filter add chain=input action=accept protocol=tcp dst-port=8291,22 src-address-list=admins place-before=0 comment="input: admins to Winbox/SSH"بعد قانون accept from LAN را طوری محدود کنید که فقط سرویسهایی مثل DNS و DHCP را برای کاربران باز بگذارد.
NAT
srcnat (masquerade)
ترافیک کاربران که به اینترنت میرود، با IP روتر جایگزین میشود:
/ip firewall nat add chain=srcnat out-interface-list=WAN action=masqueradeاگر IP ثابت دارید، action=src-nat to-addresses=203.0.113.10 کمی کارآمدتر از masquerade است؛ masquerade برای IP متغیر (DHCP و PPPoE) ساخته شده.
dstnat (port forwarding)
برای دسترسی از اینترنت به یک وب سرور داخلی:
/ip firewall nat add chain=dstnat in-interface-list=WAN protocol=tcp dst-port=443 action=dst-nat to-addresses=192.168.88.20 to-ports=443 comment="HTTPS to web server"mangle
mangle به تنهایی ترافیک را رد یا قبول نمیکند؛ روی بسته یا ارتباط علامت میگذارد تا بخشهای دیگر (routing، queue) از آن استفاده کنند. نمونه: علامت زدن ترافیک یک کاربر تا از اینترنت دوم برود:
/ip firewall mangle
add chain=prerouting src-address=192.168.88.50 connection-mark=no-mark action=mark-connection new-connection-mark=via-isp2 passthrough=yes
add chain=prerouting connection-mark=via-isp2 action=mark-routing new-routing-mark=to-isp2 passthrough=norouting-mark فقط وقتی کار میکند که یک جدول مسیریابی به همین نام ساخته باشید (در RouterOS 7 با /routing table add name=to-isp2 fib). همین ایده پایهی load balancing با PCC است.
raw
جدول raw پیش از connection tracking اجرا میشود و برای دور ریختن ترافیک ناخواسته در حجم بالا ارزانتر است. نمونه: رد کردن هر ترافیکی از آدرسهای یک فهرست سیاه:
/ip firewall raw add chain=prerouting in-interface-list=WAN src-address-list=blocklist action=dropبرای بیشتر شبکههای کوچک و متوسط، filter کافی است. raw را وقتی به کار ببرید که CPU روتر زیر بار ترافیک ناخواسته رفته است.
لاگ گرفتن
برای دیدن این که چه چیزی رد میشود، روی قانون آخر لاگ روشن کنید:
/ip firewall filter set [find comment="input: drop everything else"] log=yes log-prefix="DROP-IN "بررسی قوانین
/ip firewall filter print stats
/ip firewall nat print stats
/ip firewall connection print count-onlyشمارندهی bytes و packets هر قانون نشان میدهد چه ترافیکی از آن عبور کرده است. قانونی که هرگز شمارندهاش بالا نمیرود یا اشتباه است یا زیر قانون دیگری قرار گرفته که زودتر همان ترافیک را میگیرد.
اشتباههای رایج
- قانون جدید زیر drop نهایی: RouterOS قوانین را از بالا بررسی میکند؛ قانونی که زیر
drop everything elseباشد هرگز اجرا نمیشود. ازplace-beforeاستفاده کنید یا در Winbox قانون را بالا بکشید. - DNS باز روی اینترنت: با
allow-remote-requests=yesو بدون قانون drop درinput، روتر به همهی اینترنت جواب DNS میدهد. - محافظت از سرورها در input: ترافیک به سمت سرورهای داخلی از
forwardعبور میکند. - حذف قانون invalid: بستههای invalid بخش مهمی از اسکنها و ترافیک خراب هستند؛ همیشه آنها را رد کنید.
برای بقیهی مراحل راه اندازی روتر، مسیر یادگیری راهنمای جامع میکروتیک را دنبال کنید.
منابع
- MikroTik Documentation — Filter help.mikrotik.com
- MikroTik Documentation — NAT help.mikrotik.com
- MikroTik Documentation — Packet Flow in RouterOS help.mikrotik.com
- MikroTik Documentation — Building Your First Firewall help.mikrotik.com