مقایسه عملکرد NAT با ROUTE
ما در این بخش از آموزش، تصمیم داریم که NAT یا بهتر است بگوییم عملکرد NAT را با Route مقایسه کنیم.
آنچه در این مقاله می خوانید:
توضیحات اولیه
ما یک تصویر را برایتان در نظر گرفتیم که می تواند بهتر در این موضوع به ما کمک کند. خب دو بخش داریم. یکی تصویر سمت راست است که روتری است که در لبه ی شبکه قرار دارد. سمت راستمان شبکه ی پرایویت یا همان شبکه ی LANمان است و تعدادی کلاینت داریم. تصویر سمت چپمان شبکه ی پابلیکمان است که چند تا شبکه ی WAN داریم که به روترمان وصل شده است (روتر و شبکه های WAN را در تصویر مشخص کرده ایم).
فرض کنید شبکه ی ۱، اینترنتمان است، شبکه ی ۲ هم یک اینترنت دیگر است که از یک ASP دیگر گرفتیم؛ مثلاً فرض کنید یکی فیبر نوری است و دیگری رادیو. شبکه ی سوممان ارتباط شعب است و شبکه ی چهارمان، مثلاً یک خط Sip trank که از مخابرات گرفتیم و به مرکز تلفنمان وصل کردیم. ما چهار شبکه ی WAN داریم. MPLSای که نوشتیم، یک زوج سیم خصوصی است؛ حالا روی فیبر نوری هم به مشترکین تحویل می دهد.
مثلاً شما به عنوان مثال، دو شعبه دارید؛ یکی تهران و یکی اصفهان و اگر خواستید می توانید، این دو شعبه را با یک زوج سیم خصوصی با پهنای باند برای مثال ۵۱۲ یا ۲۵۶ با هم دیگر ارتباط بدهید. مخابرات یک زوج سیم را در دفتر تهران به شما تحویل داده و زوج سیم دیگری را نیز در دفتر اصفهان و با روت هایی که شما بین دو شعبه می زنید، می توانید دفاترتان را با یک دیگر یکپارچه کنید.
این یکی از راهکارهای تانل است و می توانید همین کار را از طریق اینترنت هم انجام بدهید. روی بستر اینترنت، چون ممکن است که stable نباشد و پهنای باند خوبی را به شما ندهد در بسیاری از فضاها که تماس ها برایشان مهم است و ارتباط برایشان خیلی اهمیت دارد از زوج سیم های خصوصی استفاده می کنند که یک آبونمان ماهیانه دارد.
حالا فرض کنید که ما ۴ شبکه ی WAN داریم که به روترمان وصل کردیم و یک سری کلاینت هم داریم. آی پی کلاینت هایمان چند است؟ ۲۴/۰۱..۱۶۸.۱۹۲. حالا مثلا آی پی کلاینت هایمان به این شکل است: ۲۰، ۲۱، ۲۲، ۲۰۰، ۱۰۰ و ۱۵۰. این موارد، کلاینت هایمان هستند.
موقعی که می خواهیم این موارد با هم دیگر ارتباط داشته باشند، نیازی به گتوی ندارند؛ ولی گتوی آن ها کجا می شود؟ می شود درگاهی که در تصویر مشخص کردیم؛ با آی پی برای مثال ۱.۱. موقعی که بخواهند به خارج از شبکه وصل شوند، باید از یک گتوی استفاده کنند؛ اما موقعی که می خواهند بین خودشان دیتا رد و بدل کنند، نیازی به گتوی ندارند.
بررسی تفاوت ها و عملکرد NAT و Route
حالا ما می خواهیم به کلاینت هایمان در شبکه ی پرایویت، دسترسی بدهیم که به شبکه ی بیرون وصل شوند. دو کار باید انجام بدهیم: یکی NAT و دیگری هم روتینگ. حالا می خواهیم تفاوت این دو را با یک دیگر بررسی کنیم.
ما در برخی مواقع، می توانیم بدون NAT دسترسی ایجاد کنیم؛ ولی در مواقعی باید NAT را برقرار کنیم. معمولاً روی شبکه های اینترنت مثلاً روی Sip trank که از مخابرات می گیریم یا MPLS، یعنی مواقعی که روتر مقابلمان در اختیار ما نیست، باید از NAT استفاده کنیم. شاید این نکته ای که به شما گفتیم، باید حتماً در چند پروژه با آن درگیر بشوید و کار کنید تا دقیقاً متوجه منظورمان بشوید که چرا این موضوع را می گوییم.
در سرفصل روتینگ ها، ما در مورد آن صحبت می کنیم؛ اما این در ذهنتان باشد که ما همیشه به NAT نیازی نداریم؛ موقعی که دو روتر در دو شبکه در اختیار خودمان باشند و بتوانیم روی هر دو روتر روتینگ های مورد نیازمان را پیاده سازی کنیم، نیازی به NAT نداریم؛ اما در شبکه ای مثل MPLS که یک سمت سرورمان در اختیار ما نیست و در اختیار مخابرات است و یا Sip trank یا اینترنت در این مواقع باید حتماً از NAT استفاده کنیم.
تعریف NAT چه بود؟ گفتیم NAT، آی پی ها را با هم دیگر ترنسلیت می کند؛ مثلاً یک آی پی پابلیک را به یک آی پی پرایویت تبدیل یا ترنسلیت می کند که به آن Dst NAT می گوییم یا یک آی پی پرایویت را به آی پی پابلیک ترنسلیت می کند که به آن Src NAT می گوییم. این موضوعی بود که در جلسه ی قبل در مورد آن صحبت کردیم.
ببینید دوستان، موقعی که آی پی در حال ترنسلیت شدن است، می گوییم عملیات NAT در حال انجام شدن است و موقعی که روتینگ برقرار می شود، می گوییم عملیات روتینگ در حال انجام شدن است؛ یعنی Route زدیم. ما به طور کلی ۳ الی ۴ مدل روت داریم که بعداً می خواهیم در مورد آن ها صحبت کنیم.
وقتی می خواهیم به یکی از کلاینت هایمان مثلاً کلاینت ۲۰ دسترسی بدهیم و یک دسترسی ایجاد کنیم که از گتوی رد شده و فقط از اینترنت مشخصی برای مثال اینترنت ۱ خارج شود، این یعنی این کلاینت با این آی پی، می تواند از این اینترنت استفاده کند. این همان عملیات روتینگ است؛ یعنی ما route زدیم یا می گوییم اگر کلاینت ۲۰۰ بود، حتماً باید از شبکه ی اینترنت ۲ خارج بشود که این همان روتینگ است.
ما آی پی را تغییر ندادیم؛ بلکه مسیر را مشخص کردیم. موقعی که در حال مشخص کردن مسیر هستیم، می گوییم اگر فلان کلاینت ها بودند، باید از فلان درگاه عبور کنند. هر کدام از اینترنت ها، یک درگاه است (در تصویر با رنگ بنفش مشخص کرده ایم؛ موارد ۱ و ۲ و ۳ و ۴). این موارد، روتینگ ما هستند و ما آی پی را عوض نکردیم.
پس در روتینگ، ما مسیر را مشخص می کنیم که چه کلاینت هایی به چه شبکه هایی دسترسی دارند یا به روش Static NAT می نویسیم؛ یعنی می گوییم هر کلاینتی که بود (کاری به Src آن نداریم)، اگر مقصدش مشخص بود که به فلان جا است، باید از این گتوی رد بشود. این Static Route است. در Static Route (در بخش روتینگ در مورد آن صحبت می کنیم)، می گوییم اگر برای مثال مقصدش شعبه ی اصفهان باشد که آی پی LAN آن ۲۴/۰.۵.۱۶۸.۱۹۲ است، باید از چه گتوی ای رد بشود؟ برای مثال از گتوی شماره ی ۳. حالا این را برایتان می نویسیم و ارتباط می دهیم؛ عجله نکنید. این همان Static Route است.
پس ما می توانیم دیفالت روت بزنیم مثل اینترنت ها (دو تصویر قبل)؛ چون مقصدمان مشخص نیست و مقصدهای مختلفی را داریم یا وب سرورهای مختلفی داریم و چون سرورهای مختلفی که در اینترنت هستند و کلاینت ها می خواهند به آن ها وصل شوند مشخص نیستند، باید از دیفالت روت استفاده کنیم و در MPLS یا در Sip trank، معمولاً مقصد مشخص است که در این موارد از Static Route استفاده می کنیم. در کل وقتی که در حال مسیر یابی هستیم، می گوییم در حال روتینگ زدن هستیم و موقعی که در حال تغییر دادن آی پی ها با هم هستیم، این NAT کردن است.
الان وقتی کلاینت ۲۰ ما بخواهد به اینترنت ۱ وصل شود، می گوییم اگر ۲۰ بود، باید به روتر برود که روتر مسیر یابی را مشخص کرده یا شرط را برقرار کند که اگر آی پی ۲۰ بود، باید از درگاه اینترنت ۱ خارج بشوی. این روتینگ ما است. حالا عملیات Src NAT ما چه می گوید؟ عملیات Src NAT ما می گوید که آی پی ۱۹۲.۱۶۸.۱.۲۰ باید به آی پی پابلیک برای مثال ۵.۱۰۰.۱۰.۲، ترنسلیت بشود.
وقتی که در حال ترنسلیت کردن است از PAT استفاده می کند؛ یک پورت را در جدول برای این کلاینت در نظر می گیرد و می گوید که درخواست این کلاینت در حال رفتن به سمت اینترنت است و این آی پی پابلیک و این پورت را بگیر و برو و دوباره در برگشت آن را به همین کلاینت ما وصل می کند. این عملیات PAT است یا همان NAT کردن. NAT کردن یعنی آی پی را عوض می کند؛ اما این که باید از چه درگاهی عبور کند، کار روتینگ ما است.
هدف ما در این جلسه در واقع این بود که در رابطه با NAT و روتینگ به صورت عملی یا کاربردی، مثالی را برایتان بزنیم که متوجه تفاوت این دو بشوید. شاید برای بهتر درک کردن این موضوع، نیاز است که شما به صورت عملی روی روتر کار کنید که ما در بخش های بعدی، این کار را می کنیم؛ یعنی روی روتر کار می کنیم، روت می زنیم، NAT می زنیم. همه ی این کارها را انجام می دهیم و شما قطعاً تفاوت این موارد را با هم متوجه می شوید. هیچ چیز سختی نیست؛ فقط باید بدانید که در روتینگ، ما مسیر را مشخص می کنیم و در NAT، آی پی ها را تغییر می دهیم.
همین و هیچ نکته ی دیگری ندارد و در Dst NAT مشخص می کنیم که اگر یک درخواست به یک آی پی پابلیک آمد (با رنگ آبی در تصویر مشخص کرده ایم) که مثلاً اگر یک آی پی به سمت Sip trank ما آمد، این Sip trank یک آی پی پابلیک برای ما دارد؛ مثلاً ۱۰.۱۹۸.۵.۱۰۰. فرض کنید چنین آی پی ای را مخابرات به ما داده است و به آن می گوییم که اگر پورتش ۵۰.۶۰ بود به فلان آی پی LAN ما با پورت ۵۰.۶۰ برو. اگر یادتان باشد در بخش قبلی ما در رابطه با این موضوع، صحبت کردیم که گفتیم نباید از پورت های معروف استفاده کنید؛ منظورمان در فضای اینترنت بود. این (Sip trank) یک شبکه ی داخلی خود مخابرات است و می شود گفت که تقریباً امنیت برقرار است؛ اما در شبکه ی اینترنت، ما نمی توانیم از این پورت معروف ۵۰.۶۰ استفاده کنیم.
پس همیشه در Dst NAT ها، باید حواسمان باشد که امنیت را در نظر بگیریم. اصلاً یکی از راه های نفوذ هکرها و ربات ها، همین Dst NAT است؛ یعنی از طریق همین Dst NAT ها، پورت ها را اسکن می کنند که شما می توانید راهکارهای اسکن را ببندید و اجازه ی اسکن پورت ها را به آن ها ندهید؛ مثلاً یکی از راهکارها این است و وقتی پورت ها را پیدا کنند به کلاینت شما وصل می شوند یا یکی از راه های امنیت این است که ما پروتکل ICMP را روی آی پی های پابلیکمان می بندیم و اجازه ی Ping را به آن ها نمی دهیم. یکی از راه ها این است و راهکارهای مختلفی برای امنیت وجود دارد.
پس این از جلسه ای که می خواستیم در رابطه با تفاوت NAT و Route صحبت کنیم. امیدواریم این جلسه برایتان مفید بوده باشد. ما تلاشمان را کردیم که در غالب یک سناریو و به صورت عملی و کاربردی که قطعاً با آن در پروژه ها برخورد می کنید، بتوانید NAT و Route را از هم دیگر تشخیص بدهید و خیلی از همکاران هستند که هنوز دقیق مفهوم NAT و Route را نمی توانند از هم دیگر تفکیک کنند و در سناریوهای پیچیده به مشکلات مختلفی برخورد می کنند. اگر بتوانید تفاوتشان را با هم دیگر درک کنید و نوع ارتباطشان را بفهمید، قطعاً در هر پروژه یا هر سازمانی، می توانید از این راهکارها استفاده کنید و قطعاً به هیچ مشکلی هم برخورد نمی کنید. حال برویم سراغ بخش بعدی که می خواهیم یک Src NAT را روی روترمیکروتیک برایتان پیاده سازی کنیم.
سلام
ممنون از شما، مطب بسیار مفید و کابردی بود
اگر بشه لطفا در مورد ALG در مودم ها و یا تب services در میکرو تیک هم توضیحی بفرمایید
چون مفهوم این دوتا به nat وابسته هست اما من دقیق مفهوم و کاربرد ALG,services رو متوجه نشدم تا حالا
با تشکر
سلام و درود
ارادتمندم. بله در فصل امنیت در مورد services صحبت خواهیم کرد
ممنون از پیشنهاد شما