اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

نحوه ی کنترل ترافیک وب با استفاده از squid cache و روتر سیسکو در لینوکس

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    نحوه ی کنترل ترافیک وب با استفاده از squid cache و روتر سیسکو در لینوکس

    یکی از کارهای مهم در شبکه کنترل و مدیریت ترافیک مصرفی کارمندان می باشد، راه حل های بسیاری وجود دارد که می توان این پروژه را هندل کرد، یکی از بهترین راه حل ها استفاده از squid cache برروی یک سیستم لینوکس می باشد. Squid می تواند ترافیک های وب را از شبکه ای به شبکه دیگر برای مثال از یک lan به اینترنت را بازرسی، محدود و cache کند.

    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Squid-Traffic-Control-Using-Router-in-CentOS.png
نمایش ها:	1
اندازه:	68.8 KB
شناسه:	21134

    چندین راه برای هدایت درخواست های وب کاربران به ماشین squid وجود دارد، در این مقاله ما نشان خواهیم دادکه شما چگونه باید ترافیک وب را از یک router سیسکو به squid cahe با استفاده از پروتکل wccp هدایت کنید.

    تصویر زیر مثالی از یک سناریو ی ابتدایی می باشد.
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Control-Web-Traffic-Using-Squid-Cisco-Router.png
نمایش ها:	1
اندازه:	86.5 KB
شناسه:	21135

    همانطور که شما می بینید در تصویر بالا ترافیک تمام کلاینت ها ابتدا به روتر سیسکو رفته و سپس روتر پکت ها را به ماشین squid هدایت می کند، حالا می توان نقش آن را بازی کرد، نقش اصلی آن کش کردن محتوای وب است، محدود کردن دسترسی براساس دامین، اینتروال زمان، آدرس آی پی، سایز فایل ها و ... می باشد.

    ما پیکربندی این سناریو را در دو گام بزرگ بازبینی می کنیم، ابتدا ما می خوهیم squid را نصب و پیکربندی کنیم، سپس روتر را برای هدایت ترافیک وب به squid با استفاده از پروتکل WCCP پیکربندی نماییم.

    آزمایش محیط
    در این سناریو من از CentOS 6.5 به عنوان سرور لینوکس و از Cisco 2691 به عنوان روتر استفاده می کنم.
    کد:
    [B]Operating System[/B]: CENTOS 6.5
    [B]Application[/B]: Squid
    [B]Router[/B]: Cisco 2691

    گام 1:نصب Squid Cache

    Squid برروی ریپوزیتوری پیش فرض centos قابل دسترسی است، ما ابتدا آنرا با استفاده از دستور yum نصب می کنیم و سپس سرویس های آنها را استارت کرده و سرانجام استارت اتوماتیک سرویس squid را تنظیم می کنیم.
    کد:
    # yum -y install squid
    # service squid start
    
    # chkconfig squid on

    گام 2: آماده سازی squid cache

    حالا ما باید برخی رفتارهای سیستم عامل centos را تغییر دهیم، ما نیاز داریم packet forwarding را فعال کرده و reverse Path filter(RFP) را غیرفعال کنیم، ما packet forwarding را برای اینکه centos به عنوان یک forwarder نامرئی همانند روتر عمل کند فعال می کنیم. اجازه بدهید جزئیات بیشتری را توضیح دهیم، هنگامی که ترافیک در centos وارد می شود آدرس های مبدا و مقصد آن مشخص است، برای مثال زمانیکه یک کلاینت در مرورگر خود آدرس www.example.com را وارد می کند ، یک http request ایجاد شده و آدرس آی پی مبدا ماشین کلاینت (مثلا 192.168.1.20) و آدرس آی پی مقصد سرور example.com(مثلا 2.2.2.2) خواهد بود.

    بنابراین ، هنگامیکه پکت توسط centos می رسد آن به عنوان یک پکت اشتباه تشخیص داده می شود به دلیل اینکه آدرس آی پی centos به عنوان آدرس آی پی مقصد نمی باشد، به دلایل امنیتی centos پکت را دور میریزد، اما ما از squid می خواهیم که در مد نامرئی کار کند. ما این وضعیت را به centos توسط فعال کردن گزینه ی packet forwarding به centos می گوییم.

    سپس ما Reverse Path Filtering را غیرفعال خواهیم کرد برای اینکه به centos اجازه دهیم که پکت های غیرقابل دسترس توسط ماشین squid را قبول کند و یا آن پکت هایی را که آدرس آی پی آنها در همان subnet نیستند.
    کد:
    [LEFT]# [B]nano [/B]/etc/sysctl.conf
    [B]net.ipv4.ip_forward = 1[/B] #set to 1 for enable the packet forwarding feature
    [B]net.ipv4.conf.default.rp_filter = 0[/B] # set to 0 for disable the reverse path filter behavior
    [/LEFT]
    سپس ما نیاز به ایجاد یک اینترفیس GRE برروی ماشین centos داریم،برای چه؟؟ اجازه دهید بیشتر توضیح دهیم، پروتکل WCCP از طریق یک تانل GRE کار می کند، این به این معنی است که زبان بین squid و روتر، GRE است، بنابراین centos نیاز به یک اینترفیس GRE برای محصور کردن پکت های GRE داریم.

    ما فایل پیکربندی ای برای اینترفیس GRE در مسیر /etc/sysconfig/network-script/ifcfg-gre0 ایجاد کرده ایم.

    کد های زیر را در فایل پیکربندی ifcfg-gre0 وارد کنید.
    کد:
    [LEFT]DEVICE=gre0
    BOOTPROTO=static
    IPADDR=10.0.0.2         #unused ip address in your network
    NETMASK=255.255.255.252
    ONBOOT=yes
    IPV6INIT=no
    [/LEFT]
    بعد از ایجاد یک اینترفیس GRE ما نیاز به restart کردن سرویس شبکه داریم.
    کد:
    # service network restart

    گام 3: پیکربندی squid cache

    ما نیاز به قبول پکت های WCCP از روتر داریم. کد های زیر را در فایل /etc/squid/squid.conf وارد کنید.
    کد:
    [LEFT]http_port 3128 intercept                 # Define SQUID listening port
    wccp2_router 192.168.1.254          #ip address of the router
    wccp2_forwarding_method gre
    wccp2_return_method gre
    wccp2_service standard 0
    [/LEFT]
    فایل پیکربندی را ذخیره کرده و سرویس squid را ریستارت کنید.
    کد:
    # service squid restart

    Squid برروی پورت 3128 پکت ها را گوش می کند، اما مقصد پکت ما شماره پورت 80 است، بنابراین برای تعویض پورت 80 به 3128، ما نیاز به ایجاد یک رول NAT برروی Centos داریم. (با استفاده از iptables)
    کد:
    [LEFT]# iptables -t nat -A PREROUTING -i gre0 -p tcp --dport 80 -j REDIRECT --to-port 3128
    # iptables -t nat -A POSTROUTING -j MASQUERADE
    [/LEFT]

    گام 4:پیکربندی روتر سیسکو

    ابتدا ما WCCP را برروی روتر فعال می کنیم.
    کد:
    [LEFT]R1(config)# ip wccp version 2
    Then we must use an ACL for introducing SQUID cache machine to router
    R1(config)# ip access-list standard SQUID-MACHINE
    R1(config-std-nacl)# permit host 192.168.1.10
    [/LEFT]
    سپس ما لیست دسترسی را برای دو هدف متفاوت تعرف می کنیم که ابتدا ما باید از طریق هدایت توسط پروتکل WCCP ترافیک های squid را جدا کنیم (اگر نه ما در لوپ خواهیم افتاد!!) دوم ما باید ترافیک های LAN را که می خواهیم از طریق WCCP و SQUID عبور کنند را تعریف کنیم.
    کد:
    [LEFT]R1(config)#ip access-list LAN-TRAFFICS
    R1(config-ext-nacl)#deny ip host 192.168.1.10 any                            #Prevent SQUID to get in loop
    R1(config-ext-nacl)#permit tcp 192.168.1.0 0.0.0.255 any equal www           #define LAN Traffics
    [/LEFT]
    پس از ایجاد access-list مان ما باید پروتکل WCCP را برروی روتر ایجاد کنیم.
    کد:
    [LEFT]R1(config)# ip wccp web-cache redirect-list LAN-TRAFFIC group-list SQUID-MACHINE
    
    
    [/LEFT]
    همه چیز برای گام نهایی آماده است، ما باید به روتر بگوییم که هر اینترفیسی که باید ترافیک ها با استفاده از پیکربندی WCCP آنها هدایت کنند.
    کد:
    [LEFT]R1(config)#interface fastEthernet 0/0
    R1((config-if)# ip wccp web-cache redirect in
    [/LEFT]
    خلاصه

    حال زمان آن است که برای فهم بهتر تمام دستورات و متن ها را خلاصه سازی کنیم، طبق سناریو ما ترافیک وب را را هدایت می کنیم(که برروی پورت 80 TCP ) از روتر (که default gateway کلاینت است) به squid cache با استفاده از پروتکل WCCP می باشد.
    تمام این پروسه ها به صورت مسکوت اتفاق افتاده است و هیچ پیکربندی اضافی ای برروی کلاینت مقابل نیاز نمی باشد. بنابراین ما م یتوانیم پالیسی هایی را برروی ترافیک های وب در LAN تنظیم و کنترل کنیم. برای مثال ما می توانیم دسترسی به وب را با محدود کردن زمان، محدود کردن ماکزیمم حجم دانلود، تعریف blacklist و whitelist شخصی مان، ایجاد گزارش های کامل از مصرف اینترنت و ... تعریف کنیم.
    یکی از نکات جالب در این سناریو زمانی است که ماشین squid پایین بودن روتر را تشخیص می دهد و هدایت پکت ها را متوقف می کند، بنابراین شما می توانید بدون هیچ downtime ی در شبکه این کار را انجام دهید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 03-26-2016, 05:10 PM.
    اینستاگرام انجمن لینوکس ایران : https://www.instagram.com/iranlinuxforum

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X