ICMPprotocol
سلام خدمت دوستان عزیز ...
با توجه به این که پروتکل ICMP پورت ندارد ، در شبکه های LAN چگونه به سمت اینترنت NAT میشود ؟!
3 پاسخ
سلام
پروتکل ICMP خودش به تنهایی کار نمیکنه، این پروتکل در قسمت payload پروتکل IP قرار میگیره و ارسال میشه
خیلی ممنون از توضیح بسیار کامل و مفیدتون .
با آرزوی موفقیت روز افزون برای شما ...
سوال بسیار بسیار عالی هستش, معلومه آدم ریزبینی هستید
تو عملکرد NAT نحوه رفتار با پروتکل ICMP یکم با UDP و TCP فرق می کنه, میشه گفت ICMP جزء استثناء ها هست
تو ICMP echo request و echo response: تو این نوع بسته ها که اپلیکیشن ping ازش استفاده می کنه, داخل بسته یه فیلدی هست به اسم Identifier, این Identifier رو بهش میگن Request Identifier , هر بسته Ping Request ای Identifier منحصر به فردی داره, NAT با دیدن بسته ICMP Echo request و Echo reply محتویات داخلیشو نگاه می کنه و از Identifier اون بسته استفاده می کنه واسه ساخت جدول NAT Binding و اینکه تو جدول نوع پروتکل رو هم می نویسه ICMP
تو ICMP Message ها: برخی بسته های ICMP در پاسخ به یک بسته ای یا بهتر بگیم یک اتفاقی فرستاده میشند, یعنی بسته ای باعث میشه روتر یا سیستم ما بسته ICMP با Type و Code خاصی برگردونه, به عنوان مثال وقتی TTL بسته به صفر میرسه ICMP Time Exceeded برگردونده میشه, تو این نوع بسته های ICMP از اطلاعات پورت بسته ای که باعث ارسال این بسته ICMP شده استفاده می کنه یعنی اونارو داخل فیلدهای مربوطه داخل بسته ICMP می نویسه, و در نتیجه NAT با بررسی محتویات داخل بسته و مقایسه اون با فیلد مربوط به این مشخصات میتونه بفهمه ICMP دریافتی مربوط به کدوم رکورد موجود تو NAT Translation table هست
توضیحات یکم پیچیده هست ولی متن رو چندبار بخونید متوجه عملکرد NAT در مواجهه با بسته های ICMP میشید
نتیجه گیری: NAT یا بهتر بگیم PAT (به این نوع NAT که Port هارو ترجمه می کنه PAT میگن) صرفا واسه ترجمه پورت Segment و یا Datagram های UDP و TCP طراحی نشده. در زمان طراحی این قابلیت همین قضیه پروتکل هایی که شامل Port Address نمیشند دغدغه طراحانش شده و به این ترتیب NAT رو جوری طراحی کردند که تو جدول Binding خودش بتونه نوع پروتکل رو هم ذخیره سازی کنه (مثل TCP, UDP, IP و ICMP) و اینکه بتونه علاوه بر پروتکل های لایه ۴ مثل TCP و UDP پروتکل های مستقلی مثل ICMP رو هم Inspect کنه و از محتویاتش واسه ساختن جدول Binding استفاده کنه
اینم به صورت عملی:
تو توپولوژی ما روتر NMAXi-R2 روش Overloading NAT یا PAT تنظیم شده و قراره هر درخواستی از طرف R1 بیاد رو ترجمه کنه
از R1 آدرس 33.33.33.33 یعنی R3 رو پینگ می کنم و از NAT Table روتر NMAXi-R2 خروجی میگیرم (به نوع پروتکل نگاه کنید سمت چپ نوشته ICMP و به عدد 5 بعد از IP Address ها توجه کنید)
حالا به محتویات بسته Capture شده اینترفیس Fa0/1 روی روتر R3 نگاه کنید (به بخصوص قسمت Identifier)
حالا من یه پیغام UDP به 33.33.33.33 یعنی R3 می فرستم و کاری می کنم TTL صفر بشه و در پاسخش ICMP Message ارسال بشه (بسته UDP هست و پورت ها 49162 و 33434)
حالا بسته پاسخ ICMP رو ببینید (در این تصویر محتویات بسته ICMP نمایش داده شده عینا IP Address ها و پورت ها داخلش نوشته شده)
و اینم از NAT Table روتر NMAXi-R2 : به شماره ها نگاه کنید همون شماره پورت ها هستند
روتر NMAXi-R2 با دیدن بسته ICMP و محتویاتش که شامل شماره پورت های مبداء و مقصد هستند و مقایسه اون با رکورد مربوط به اون شماره پورت ها بسته رو هدایت میکنه به مقصدش یعنی ۱۱.۱۱.۱۱.۱۱ و شماره پورت ۴۹۱۶۲