NAT آدرس یا Port را ترجمه می‌کند؛ مجوز عبور را فایروال تعیین می‌کند. امشب یک سرویس آزمایشی را از WAN مجازی منتشر می‌کنیم و این دو تصمیم را جدا می‌سنجیم.

این نوشته بخشی از دورهٔ MTCNA در ۳۰ شب است. مبنای مثال‌ها RouterOS 7 و آزمایشگاه ایزولهٔ دوره است؛ پیش از تغییر، Snapshot و دسترسی Console داشته باشید.

سه ترجمهٔ متفاوت#

Masquerade برای آدرس خروجی تغییرپذیر مفید است. src-nat می‌تواند آدرس ترجمهٔ مشخص بدهد. dst-nat مقصد را به میزبان دیگر می‌برد و redirect مقصد را به خود روتر هدایت می‌کند. استفادهٔ همزمان Ruleهای هم‌پوشان بدون شناخت ترتیب، نتیجه را مبهم می‌کند.

NAT برای اولین بستهٔ اتصال تصمیم می‌گیرد و Connection tracking آن را ادامه می‌دهد. بعد از تغییر Rule، اتصال تازه بسازید؛ پاک کردن تمام Connectionها روی روتر عملیاتی روش معمول تست نیست.

آزمایشگاه HTTP داخلی#

میزبان سرور LAN را با IP ثابت 192.168.50.100 تنظیم کنید. این IP را از Pool DHCP خارج کنید؛ مثلاً Pool را به .110-.199 تغییر دهید. Gateway سرور .1 باشد. روی Linux آزمایشگاهی:

python3 -m http.server 8080 --bind 192.168.50.100

فایل‌های حساس در Working directory سرویس نگذارید. از A سرویس را آزمایش کنید. سپس روی R1:

/ip firewall nat add chain=dstnat in-interface-list=WAN protocol=tcp dst-port=18080 action=dst-nat to-addresses=192.168.50.100 to-ports=8080 comment="MTCNA web publish"
/ip firewall filter add chain=mtcna-forward in-interface-list=WAN connection-nat-state=dstnat protocol=tcp dst-address=192.168.50.100 dst-port=8080 action=accept place-before=[find comment="MTCNA policy forward drop"] comment="MTCNA web permit"

از یک میزبان در سمت WAN مجازی، آدرس WAN روتر روی Port 18080 را باز کنید. از اینترنت واقعی این سرویس را منتشر نکنید. Counterهای NAT و Filter باید نتیجهٔ اتصال تازه را نشان دهند. در forward، مقصد پس از dst-nat آدرس و Port داخلی است.

تمرین src-nat و redirect#

در Clone دارای WAN ثابتِ واقعاً اختصاص‌یافته، Rule Masquerade را با Rule src-nat دارای to-addresses همان آدرس مقایسه کنید. آدرس دلخواه از بلوک Documentation را جای IP تخصیص‌یافته نگذارید؛ مسیر برگشت وجود نخواهد داشت.

برای شناخت Redirect، روی Clone Resolver روتر را برای LAN فعال کنید، ورودی TCP و UDP 53 را فقط از LAN مجاز و در dstnat درخواست‌های DNS همان LAN را با action=redirect to-ports=53 هدایت کنید. Rule برای هر دو TCP و UDP لازم است. این کار DoH/DoT را کنترل نمی‌کند و سیاست DNS سازمانی کامل نیست. بعد از تمرین، Resolver و Ruleهای اضافه را به وضعیت قبلی برگردانید.

خرابی و خودآزمایی#

Rule MTCNA web permit را Disable کنید. NAT می‌تواند Match شود ولی سرویس از WAN در دسترس نباشد. Rule را Enable کنید. تست از LAN به IP WAN ممکن است به Hairpin نیاز داشته باشد؛ آن را با آزمون واقعی سمت WAN اشتباه نگیرید.

شواهد، پاسخ HTTP، دو Counter و Source مشاهده‌شده در سرور است. چرا dst-nat جای Route برگشت را نمی‌گیرد؟ چرا Redirect به سرویس خود روتر در input بررسی می‌شود؟ برای بازگشت، دو Rule سرویس را Disable و HTTP Server را متوقف کنید.

منبع#

NAT .