05-02-2011، 01:52 AM
سلام خدمت دوستان عزیزم ...
توی این تاپیک هم سعی میکنم خیلی مختصر در مورد فایروال میکروتیک توضیح دهم تا از عملکرد آن مطلع شوید .
در میکروتیک چندین Chain وجود دارد .
Input
بسته هایی که به آدرس خود میکروتیک وارد میشوند ...
Forward
بسته هایی که از خود میکروتیک عبور میکنند ...
Outpout
بسته هایی که از میکروتیک تولید میشوند و خارج میشوند ...
در نوشتن رول در میکروتیک به صورت دستور شرطی در زبان های برنامه نویسی عمل میکنیم .
اگر ( شرط برقرار شود )
آنگاه ....
این شرط ها در رول ها همان فیلد هایی میباشند که ما در یک رول داریم مثل :
Src-Address
آدرس مبدا بسته ( آدرس فرستنده بسته )
Dst-Address
آدرس مقصد بسته ( آدرس گیرنده بسته )
Protocol
پروتکل مورد نظر ( TCP , UDP , GRE , ...
Src-Port
پورت مبدا
Dst-Port
پورت مقصد
Any-Port
هر پورتی ( رنج پورت های مورد نظر )
In. Interface
اینترفیسی که بسته ها از آنها وارد میکروتیک میشود
Out. Interface
اینترفیسی که بسته ها از میکروتیک خارج میشود
Packet Mark
بسته هایی با مارک مورد نظر
Connection Mark
بسته هایی با مارک کانکشن های مورد نظر
Routing Mark
بسته هایی با مارک روتینگ مورد نظر
Connection Type
نوع های کانکشن مورد نظر ( شامل برخی پروتکل ها که با NAT شدن مشکل دارند )
Connection State
بسته ایی با وضعیت کاکشن مورد نظر
ما چندین Connection State متفاوت داریم که شامل :
New
کانکشن های جدید در حال اجرا شدن
Invalid
کانکشن های غیر معتبر و باطل شده
Related
زیر کانکشن ها ، مثلا برای اجرای یک وب پیج یک کامکشن زده میشود و بعد از آن یک کانکشن جدید شکل گرفته میشود تا معبر باشد ( به کانکشم های دیگر نیاز دارد ) مثل پروتکل FTP که از پورت 20 و 21 استفاده میکند ...
Established
کانکشن هایی که در حال جاضر اجرا میباشند .
نکته : از Connection State ها برای بهینه کردن فایروالینگ استفاده میکنیم .
این مورد را با مثال میگویم :
فرض کنید شما یک رول مینویسید که تمامی بسته های TCP 80 را مارک کند تا صفحات وب را مچ کند ، در این زمان ما بسته های وب را با کانکشن استیت های مختلف داریم مثل New , Established , Related , Invalid و همه این ها وقتی توسط فایروال بخواهند مچ شوند باز زیادی را برای میکروتیک و CPU متحمل میشود .
به همین خاطر اگر به عمق قضیه نگاه کنید ، ما فقط قصد داریم بسته های وب را که میخواهند جدیدا شکل بگیرند را مچ کنیم به همین خاطر رول خودمان را بهینه میکنیم ، به این شکل که فایروال فقط بسته های وبی را که در حال شکل گیری هستند ( New State ) را چک کند .
در نهایت بعد از مچ شدن یک یا چند شرط مورد نظر ، دارای Action های متفاوت میباشم که آنها هم یک عملی را انحام میدهند و شامل :
Accept
بسته ها قبول شوند
Add Dst To Address List
آدرس مقصد بسته را در یک لیست آدرس ذخیره کند
Add Src To Address List
آدرس مبدا بسته را در لیست آدرس ذخیره کند
Drop
بسته ها را حذف کند .
Jump
به یک Chain دیگر منتقل شود
Log
در صورت مچ شدهن بسته ، یک لوگ ثبت شود ، ( اگر این رول در ابتدا لیست باشد و بسته ایی مچ شود ، به رول دیگر نمیرود )
Passtrouth
همانند Log میباشد با این تفاوت که در صورتی که لوگ را ثبت میکند ، به رول های دیگر هم برای مچ کردن میرود
Reject
علنی بسته رو از بین میبره :دی
Return
به Chain اصلی بر میگردد
Tarpit
برو بچه های دیتا تو بعضی روز های خواص ، اینترنت را توی این حالت قرار میدهند تا ما یکمی حال کنیم ! :دی
باعص میشود بسته های به مقصد نرسد و در اصل آنقدر سرعت را پایین می آورد که کانکشن به گونه ایی Hold میشود .
مثلا اگه برای بستهای وب این اکشن را انتخاب کنیم ، در باز کردن پیچ مشکل پیدا خواهیم کرد و با پیفام Connection Reset مواجه میشودیم و 10000 سال پیج باز نمیشه ! :دی
نکته :
به جز 3 Chain اصلی که از قبل تعریف شده میباشند ، میتوانیم Chain های جدید را خودمان طراحی کنیم .
در صورتی که Chain جدید طراحی کردیم ، برای ارسال بسته ای به آن ، از 2 اکشن Jump و Return استفاده میکنیم .
کاربرد آن : برای یهینه سازی در قایروالینگ یک سری چین ها را خودمان تعریف میکنیم تا بروی بسته ها مچ شود ...
مثل : در حالت عادی میایم یک رول مینویسم که بسته های TCP را مچ کند ، به همین خاطر تمامی رول ها برای بسته چک میشود .
برا بهینه کردن ، یک Chain فقط برای پروتکل های TCP میسازیم ، پس فقط بستهای TCP به آن Chain اراسل میشوند و مچ میشوند .
بدین شکل لود به صورت چشمگیری پایین می آید .
در صورتی که سوالی رد این زمینه داشتید طرح کنید تا پاسخ دهم ...
با آرزوی موفقیت
رضا مقدم
توی این تاپیک هم سعی میکنم خیلی مختصر در مورد فایروال میکروتیک توضیح دهم تا از عملکرد آن مطلع شوید .
در میکروتیک چندین Chain وجود دارد .
Input
بسته هایی که به آدرس خود میکروتیک وارد میشوند ...
Forward
بسته هایی که از خود میکروتیک عبور میکنند ...
Outpout
بسته هایی که از میکروتیک تولید میشوند و خارج میشوند ...
در نوشتن رول در میکروتیک به صورت دستور شرطی در زبان های برنامه نویسی عمل میکنیم .
اگر ( شرط برقرار شود )
آنگاه ....
این شرط ها در رول ها همان فیلد هایی میباشند که ما در یک رول داریم مثل :
Src-Address
آدرس مبدا بسته ( آدرس فرستنده بسته )
Dst-Address
آدرس مقصد بسته ( آدرس گیرنده بسته )
Protocol
پروتکل مورد نظر ( TCP , UDP , GRE , ...
Src-Port
پورت مبدا
Dst-Port
پورت مقصد
Any-Port
هر پورتی ( رنج پورت های مورد نظر )
In. Interface
اینترفیسی که بسته ها از آنها وارد میکروتیک میشود
Out. Interface
اینترفیسی که بسته ها از میکروتیک خارج میشود
Packet Mark
بسته هایی با مارک مورد نظر
Connection Mark
بسته هایی با مارک کانکشن های مورد نظر
Routing Mark
بسته هایی با مارک روتینگ مورد نظر
Connection Type
نوع های کانکشن مورد نظر ( شامل برخی پروتکل ها که با NAT شدن مشکل دارند )
Connection State
بسته ایی با وضعیت کاکشن مورد نظر
ما چندین Connection State متفاوت داریم که شامل :
New
کانکشن های جدید در حال اجرا شدن
Invalid
کانکشن های غیر معتبر و باطل شده
Related
زیر کانکشن ها ، مثلا برای اجرای یک وب پیج یک کامکشن زده میشود و بعد از آن یک کانکشن جدید شکل گرفته میشود تا معبر باشد ( به کانکشم های دیگر نیاز دارد ) مثل پروتکل FTP که از پورت 20 و 21 استفاده میکند ...
Established
کانکشن هایی که در حال جاضر اجرا میباشند .
نکته : از Connection State ها برای بهینه کردن فایروالینگ استفاده میکنیم .
این مورد را با مثال میگویم :
فرض کنید شما یک رول مینویسید که تمامی بسته های TCP 80 را مارک کند تا صفحات وب را مچ کند ، در این زمان ما بسته های وب را با کانکشن استیت های مختلف داریم مثل New , Established , Related , Invalid و همه این ها وقتی توسط فایروال بخواهند مچ شوند باز زیادی را برای میکروتیک و CPU متحمل میشود .
به همین خاطر اگر به عمق قضیه نگاه کنید ، ما فقط قصد داریم بسته های وب را که میخواهند جدیدا شکل بگیرند را مچ کنیم به همین خاطر رول خودمان را بهینه میکنیم ، به این شکل که فایروال فقط بسته های وبی را که در حال شکل گیری هستند ( New State ) را چک کند .
در نهایت بعد از مچ شدن یک یا چند شرط مورد نظر ، دارای Action های متفاوت میباشم که آنها هم یک عملی را انحام میدهند و شامل :
Accept
بسته ها قبول شوند
Add Dst To Address List
آدرس مقصد بسته را در یک لیست آدرس ذخیره کند
Add Src To Address List
آدرس مبدا بسته را در لیست آدرس ذخیره کند
Drop
بسته ها را حذف کند .
Jump
به یک Chain دیگر منتقل شود
Log
در صورت مچ شدهن بسته ، یک لوگ ثبت شود ، ( اگر این رول در ابتدا لیست باشد و بسته ایی مچ شود ، به رول دیگر نمیرود )
Passtrouth
همانند Log میباشد با این تفاوت که در صورتی که لوگ را ثبت میکند ، به رول های دیگر هم برای مچ کردن میرود
Reject
علنی بسته رو از بین میبره :دی
Return
به Chain اصلی بر میگردد
Tarpit
برو بچه های دیتا تو بعضی روز های خواص ، اینترنت را توی این حالت قرار میدهند تا ما یکمی حال کنیم ! :دی
باعص میشود بسته های به مقصد نرسد و در اصل آنقدر سرعت را پایین می آورد که کانکشن به گونه ایی Hold میشود .
مثلا اگه برای بستهای وب این اکشن را انتخاب کنیم ، در باز کردن پیچ مشکل پیدا خواهیم کرد و با پیفام Connection Reset مواجه میشودیم و 10000 سال پیج باز نمیشه ! :دی
نکته :
به جز 3 Chain اصلی که از قبل تعریف شده میباشند ، میتوانیم Chain های جدید را خودمان طراحی کنیم .
در صورتی که Chain جدید طراحی کردیم ، برای ارسال بسته ای به آن ، از 2 اکشن Jump و Return استفاده میکنیم .
کاربرد آن : برای یهینه سازی در قایروالینگ یک سری چین ها را خودمان تعریف میکنیم تا بروی بسته ها مچ شود ...
مثل : در حالت عادی میایم یک رول مینویسم که بسته های TCP را مچ کند ، به همین خاطر تمامی رول ها برای بسته چک میشود .
برا بهینه کردن ، یک Chain فقط برای پروتکل های TCP میسازیم ، پس فقط بستهای TCP به آن Chain اراسل میشوند و مچ میشوند .
بدین شکل لود به صورت چشمگیری پایین می آید .
در صورتی که سوالی رد این زمینه داشتید طرح کنید تا پاسخ دهم ...
با آرزوی موفقیت
رضا مقدم
Thanks God