ค้นหาเว็บไซต์

วิธีควบคุมการรับส่งข้อมูลเว็บโดยใช้ Squid Cache และ Cisco Router ใน Linux


งานที่สำคัญอย่างหนึ่งในเครือข่ายคือการควบคุมและจัดการการรับส่งข้อมูลการท่องเว็บของพนักงาน มีวิธีแก้ไขปัญหามากมายที่สามารถจัดการปัญหานี้ได้ หนึ่งในวิธีแก้ปัญหาที่ดีที่สุดคือการใช้แคชปลาหมึกบนเครื่อง Linux Squid สามารถตรวจสอบ จำกัด และแคชการรับส่งข้อมูลเว็บจากเครือข่ายหนึ่งไปยังอีกเครือข่ายหนึ่ง เช่น จาก LAN ไปยังอินเทอร์เน็ต

มีหลายวิธีในการเปลี่ยนเส้นทางคำขอเว็บของลูกค้าไปยังเครื่อง squid ในบทความนี้ เราจะแสดงวิธีเปลี่ยนเส้นทางการรับส่งข้อมูลเว็บจากเราเตอร์ CISCO ไปยังเครื่อง Squid Cache โดยใช้โปรโตคอล WCCP

รูปภาพด้านล่างเป็นตัวอย่างของสถานการณ์พื้นฐาน

ดังที่คุณเห็นในภาพด้านบน การรับส่งข้อมูลเว็บของลูกค้าทั้งหมดไปที่ Cisco Router (นั่นคือเกตเวย์เริ่มต้น) จากนั้นเราเตอร์จะเปลี่ยนเส้นทางแพ็กเก็ตไปยังเครื่อง squid โดยไม่ต้องแจ้งให้ทราบ ตอนนี้ squid สามารถเล่นตามบทบาทของมันได้ บทบาทหลักคือ การแคชเนื้อหาเว็บ, จำกัดการเข้าถึงตามโดเมน, ช่วงเวลา, ที่อยู่ IP, ขนาดของไฟล์ ฯลฯ

เราตรวจสอบการกำหนดค่าของสถานการณ์นี้ในสองขั้นตอนหลัก ขั้นแรกเราควรติดตั้งและกำหนดค่า squid และ Linux จากนั้นกำหนดค่าเราเตอร์ให้เปลี่ยนเส้นทางแพ็กเก็ตการรับส่งข้อมูลเว็บไปยัง squid โดยใช้โปรโตคอล WCCP

สภาพแวดล้อมการทดสอบ

ในสถานการณ์นี้ ฉันใช้ CENTOS 6.5 เป็นเซิร์ฟเวอร์ LINUX ของฉัน และ Cisco 2691 เป็นระบบเราเตอร์ของฉัน

Operating System: CENTOS 6.5
Application: Squid
Router: Cisco 2691

ขั้นตอนที่ 1: การติดตั้ง Squid Cache

Squid พร้อมใช้งานบนพื้นที่เก็บข้อมูลเริ่มต้นของ CENTOS ก่อนอื่นเราจะติดตั้งโดยใช้คำสั่ง yum ที่น่ารัก จากนั้นจึงเริ่มบริการ และสุดท้ายก็ตั้งค่าการเริ่มบริการ squid โดยอัตโนมัติ

yum -y install squid
service squid start
chkconfig squid on

ขั้นตอนที่ 2: เตรียมแคชปลาหมึก

ตอนนี้เราต้องเปลี่ยนพฤติกรรมเริ่มต้นบางอย่างของระบบปฏิบัติการ Centos เราต้องเปิดใช้งานการส่งต่อแพ็กเก็ตและปิดใช้งานตัวกรองเส้นทางย้อนกลับ (RPF) เราเปิดใช้งานการส่งต่อแพ็กเก็ตเพื่อให้ CentOS ทำหน้าที่เป็นตัวส่งต่อที่โปร่งใส (เช่น เราเตอร์)

ให้ฉันอธิบายในรายละเอียดเพิ่มเติม เมื่อการรับส่งข้อมูลเข้าสู่ centos จะมีที่อยู่ต้นทางและปลายทาง ตัวอย่างเช่น เมื่อไคลเอนต์เข้าสู่ www.example.com บนเบราว์เซอร์ของเขา/เธอ แพ็กเก็ตคำขอ http สร้างขึ้นและ มีที่อยู่ IP ต้นทางของเครื่องไคลเอนต์ (เช่น 192.168.1.20) และที่อยู่ IP ปลายทางของเซิร์ฟเวอร์ example.com (เช่น 2.2.2.2)

ดังนั้นเมื่อ centos ได้รับแพ็กเก็ต มันจะตรวจพบว่าเป็นแพ็กเก็ตที่ไม่ถูกต้องเนื่องจากที่อยู่ IP ของ centos ไม่ใช่ที่อยู่ปลายทางของแพ็กเก็ต ด้วยเหตุผลด้านความปลอดภัย centos จะทิ้งแพ็กเก็ต แต่เราต้องการจาก squid ให้ทำงานในโหมดโปร่งใส เราแจ้งสถานการณ์นี้ให้ centos ทราบโดยเปิดใช้งานยาการส่งต่อแพ็กเก็ต

ต่อไปเราควรปิดการใช้งานการกรองเส้นทางย้อนกลับเพื่อให้ centos ยอมรับแพ็กเก็ตที่ไม่สามารถเข้าถึงได้โดยเครื่องปลาหมึกหรือแพ็กเก็ตที่ไม่มีที่อยู่ IP ในเครือข่ายย่อยเดียวกันของเครื่องปลาหมึก

nano /etc/sysctl.conf
net.ipv4.ip_forward = 1 #set to 1 for enable the packet forwarding feature
net.ipv4.conf.default.rp_filter = 0 # set to 0 for disable the reverse path filter behavior

ต่อไปเราต้องสร้างอินเทอร์เฟซ GRE บนเครื่อง CENTOS เพื่ออะไร?? ให้ฉันอธิบายเพิ่มเติม โปรโตคอล WCCP ทำงานผ่านอุโมงค์ GRE ซึ่งหมายความว่าภาษาระหว่างเราเตอร์และ Squid คือ GRE ดังนั้น centos จำเป็นต้องมีอินเทอร์เฟซ GRE สำหรับ De- ห่อหุ้มแพ็กเก็ต GRE

เราควรสร้างไฟล์การกำหนดค่าสำหรับอินเทอร์เฟซ GRE ในเส้นทาง “/etc/sysconfig/network-script/ifcfg-gre0

ป้อนรหัสด้านล่างในไฟล์การกำหนดค่า ifcfg-gre0

DEVICE=gre0
BOOTPROTO=static
IPADDR=10.0.0.2         #unused ip address in your network
NETMASK=255.255.255.252
ONBOOT=yes
IPV6INIT=no

หลังจากสร้างอินเทอร์เฟซ GRE แล้ว เราจำเป็นต้องรีสตาร์ทบริการเครือข่าย

service network restart

ขั้นตอนที่ 3: การกำหนดค่า Squid Cache

เราต้องบอกให้ squid ยอมรับแพ็กเก็ต WCCP จากเราเตอร์ ป้อนรหัสด้านล่างในไฟล์ /etc/squid/squid.conf

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

บันทึกไฟล์การกำหนดค่าและเริ่มบริการ squid ใหม่

service squid restart

Squid ฟังแพ็กเก็ตในพอร์ต 3128 แต่หมายเลขพอร์ตปลายทางของแพ็กเก็ตของเราคือ 80 ดังนั้นสำหรับการเปลี่ยนพอร์ตปลายทาง 80 เป็น 3128< เราต้องสร้างกฎ NAT บนไฟร์วอลล์ที่รวม CENTOS (ซึ่งมีชื่อว่า iptable)

iptables -t nat -A PREROUTING -i gre0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -j MASQUERADE

ขั้นตอนที่ 4: การกำหนดค่าเราเตอร์ของ Cisco

อันดับแรก เราควรเปิดใช้งาน WCCP บนเราเตอร์ Cisco

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

ต่อไปเราจะกำหนดรายการเข้าถึงอื่นสำหรับวัตถุประสงค์ที่แตกต่างกันสองประการ อันดับแรกเราควรยกเว้นการรับส่งข้อมูล SQUID จากการเปลี่ยนเส้นทางโดยโปรโตคอล WCCP (หากไม่เราตกอยู่ในวงวนไม่มีที่สิ้นสุด!!) ประการที่สองเรากำหนด การรับส่งข้อมูล LAN ใดที่เราต้องการส่งผ่าน WCCP และ SQUID

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

หลังจากสร้างรายการเข้าถึงแล้ว เราจะต้องกำหนดค่าโปรโตคอล WCCP บนเราเตอร์

R1(config)# ip wccp web-cache redirect-list LAN-TRAFFIC group-list SQUID-MACHINE

ทุกสิ่งพร้อมสำหรับขั้นตอนสุดท้ายแล้ว เราต้องบอกเราเตอร์ว่าอินเทอร์เฟซ/อินเทอร์เฟซใดที่ต้องเปลี่ยนเส้นทางการรับส่งข้อมูลโดยใช้การกำหนดค่า WCCP

R1(config)#interface fastEthernet 0/0
R1((config-if)# ip wccp web-cache redirect in

สรุป

ถึงเวลาสรุปคำสั่งและข้อความทั้งหมดเป็นสองสามบรรทัดเพื่อความเข้าใจที่ดีขึ้น ตามสถานการณ์ที่เราเปลี่ยนเส้นทางแพ็กเก็ตการท่องเว็บของพนักงาน (ซึ่งอยู่บนพอร์ต TCP 80) จาก ROUTER (ซึ่งเป็นเกตเวย์เริ่มต้นของ ลูกค้า) ไปยังเครื่องแคชปลาหมึกโดยใช้โปรโตคอล WCCP

กระบวนการทั้งหมดนี้เกิดขึ้นอย่างเงียบๆ และไม่มีการกำหนดค่าเพิ่มเติมในฝั่งไคลเอ็นต์ เราจึงสามารถควบคุมและกำหนดนโยบายการเข้าชมเว็บในระบบ LAN ได้ ตัวอย่างเช่น เราสามารถเข้าถึงการท่องเว็บได้ในเวลาจำกัด จำกัดขนาดการดาวน์โหลดสูงสุด กำหนดบัญชีดำและบัญชีขาวที่กำหนดเองของเรา สร้างรายงานการใช้กิจกรรมอินเทอร์เน็ตฉบับเต็ม และอื่นๆ

ข้อเท็จจริงที่น่าสนใจประการหนึ่งในสถานการณ์นี้คือเมื่อเครื่องปลาหมึกหยุดทำงานเราเตอร์ตรวจพบปัญหานี้และหยุดการเปลี่ยนเส้นทางแพ็คเก็ตไปหามัน เพื่อให้คุณสามารถเพลิดเพลินกับการหยุดทำงานเป็นศูนย์ในเครือข่ายของคุณ

หากคุณมีคำถามใด ๆ เกี่ยวกับบทความนี้ โปรดตอบกลับผ่านช่องแสดงความคิดเห็นด้านล่าง