منبع اصلی نوشتار زیر در این لینک قرار دارد

Masquerad با iptables در روتر لینوکسی

سلام دوستان . همان طور که از عنوان مشخص است , امروز در مورد تکنیک Masquerad صحبت خواهیم کرد . به این صورت که سناریو ای را مطرح می کنیم و سپس با این روش به حل آن می پردازیم . لازم به ذکر است که این تکنیک و دیگر موارد مثل src nat و dst nat و … همگی جزء مباحث شبکه می باشند و اکثر در روتر ها خودشون رو نشون می دن . اما در این پست به بررسی این تکنیک بر روی سیستم لینوکسی می پردازیم .

توپولوژی فرضی شبکه :

OSLearn.ir_001

همان طور که مشاهده می کنید به صورت پیش فرض سیستم ویندوزی نمی تواند به اینترنت دسترسی داشته باشد چرا که آدرس آی پی آن یک آدرس آی پی داخلی و اصطلاحا invalid است . برای این منظور می توان از Masquerad استفاده کرد . Masquerad به این صورت عمل می کند که آدرس مبدا پکت ها را به آدرس آی پی اینترفیس دوم سیستم لینوکسی یعنی eth1 تغییر می دهد .

به عنوان مثال فرض کنید که سیستم ویندوزی گوگل را پینگ کرده است . در حالت عادی پکت به دست گوگل می رسد اما از آن جایی که آدرس مبدا در پکت 192.168.10.10 ذکر شده , گوگل نمی تواند پاسخی درست به این درخواست دهد . در نتیجه ارتباط برقرار نمی شود . حال با استفاده از تکنیک Masquerad آدرس آی پی پکتی که از سیستم ویندوزی وارد سیستم لینوکسی می شود را ویرایش می کنیم و آن را به آدرس آی پی valid یعنی 92.98.41.25 تغییر می دهیم . حال پکت به سمت گوگل فرستاده می شود . این بار گوگل می تواند این آی پی را در سطح نت ببیند و پاسخی درست صادر می کند . در نهایت پکت بازگشتی از سمت گوگل به سیستم لینوکسی ما رسیده و سپس به دست سیستم ویندوزی می رسد .

با توجه به توضیحات بالا , انتظار می رود در صورتی که سیستم ویندوزی آی پی 8.8.8.8 را پینگ کند با پیغام timed out مواجه شود و همچنین در سیستم لینوکسی که حکم روتر را دارد , پکت ها با آدرس مبدای invalid یعنی 192.168.10.10 به سمت گوگل فرستاده شوند .

برای بررسی صحت موارد گفته شده ابتدا tcpdump را در روتر لینوکسی استارت می کنیم سپس در سیستم ویندوزی گوگل را پینگ می کنیم .

برای این منظور به شکل زیر از tcpdump استفاده می کنیم :

root@OSLearn:~# tcpdump -i eth1 icmp -nn

OSLearn.ir_002

همان طور که مشاهده می کنید پکت ها به سمت گوگل ارسال شده اما گوگل نمی تواند جوابی صادر کند چرا که آدرس آی پی مبدا نامعتبر است .

OSLearn.ir_003

همان طور که از شکل مشخص است , ویندوز نمی تواند با گوگل ارتباط بر قرار کند و خروجی timed out چاپ کرده است .

اما برای استفاده از تکنیک Masquerad در این سناریو به شکل زیر عمل می کنیم :

root@OSLearn:~# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

توجه داشته باشید که سویچ o- اینترفیس خروجی پکت ها را مشخص می کند نه اینترفیس ورودی پکت ها ( توجه داشته باشید که این سویچ را با سویچ i- اشتباه نگیرید )

حال یک بار دیگر tcpdump را بر روی سیستم لینوکسی استارت و در سیستم ویندوزی اقدام به پینگ کردن گوگل می کنیم .

root@OSLearn:~# tcpdump -i eth1 icmp -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
10:01:25.207500 IP 92.98.41.25 > 8.8.8.8: ICMP echo request, id 512, seq 8448, length 40
10:01:25.335224 IP 8.8.8.8 > 92.98.41.25: ICMP echo reply, id 512, seq 8448, length 40
10:01:26.211847 IP 92.98.41.25 > 8.8.8.8: ICMP echo request, id 512, seq 8704, length 40
10:01:26.337080 IP 8.8.8.8 > 92.98.41.25: ICMP echo reply, id 512, seq 8704, length 40
10:01:27.211426 IP 92.98.41.25 > 8.8.8.8: ICMP echo request, id 512, seq 8960, length 40
10:01:27.336364 IP 8.8.8.8 > 92.98.41.25: ICMP echo reply, id 512, seq 8960, length 40
10:01:28.211946 IP 92.98.41.25 > 8.8.8.8: ICMP echo request, id 512, seq 9216, length 40
10:01:28.336851 IP 8.8.8.8 > 92.98.41.25: ICMP echo reply, id 512, seq 9216, length 40

 

موفق و موید باشید .

 

منبع : او اس لرن دات آی آر | http://OSLearn.ir

نویسنده : E2MA3N



برچسب ها : , , , , , , , , , ,