NS Linux Foundation Certified Engineerคือมืออาชีพที่มีทักษะซึ่งมีความเชี่ยวชาญในการติดตั้ง จัดการ และแก้ไขปัญหาบริการเครือข่ายใน Linux ระบบ และรับผิดชอบการออกแบบ การใช้งาน และการบำรุงรักษาสถาปัตยกรรมทั่วทั้งระบบอย่างต่อเนื่อง
ขอแนะนำโปรแกรมการรับรองมูลนิธิ Linux
ใน ส่วนที่ 1 ในชุดนี้ เราได้แสดงวิธีการติดตั้ง squid ซึ่งเป็นเซิร์ฟเวอร์แคชพร็อกซีสำหรับเว็บไคลเอ็นต์ โปรดอ้างอิงโพสต์นั้น (ลิงก์ที่ให้ไว้ด้านล่าง) ก่อนดำเนินการต่อ หากคุณยังไม่ได้ติดตั้ง squid ในระบบของคุณ
ในบทความนี้ เราจะแสดงวิธีกำหนดค่าพร็อกซีเซิร์ฟเวอร์ Squid เพื่ออนุญาตหรือจำกัดการเข้าถึงอินเทอร์เน็ต และวิธีกำหนดค่าไคลเอนต์ http หรือเว็บเบราว์เซอร์ เพื่อใช้พร็อกซีเซิร์ฟเวอร์นั้น
ระบบปฏิบัติการ: Debian Wheezy 7.5 ที่อยู่ IP: 192.168.0.15 ชื่อโฮสต์: dev2.gabrielcanepa.com.ar
ระบบปฏิบัติการ: อูบุนตู 12.04 ที่อยู่ IP: 192.168.0.104 ชื่อโฮสต์: ubuntuOS.gabrielcanepa.com.ar
ระบบปฏิบัติการ: CentOS-7.0-1406 ที่อยู่ IP: 192.168.0.17 ชื่อโฮสต์: dev1.gabrielcanepa.com.ar
ขอให้เราจำไว้ว่า พูดง่ายๆ ก็คือ เว็บพร็อกซี่เซิร์ฟเวอร์เป็นตัวกลางระหว่างคอมพิวเตอร์ไคลเอนต์หนึ่งเครื่อง (หรือมากกว่า) กับทรัพยากรเครือข่ายบางอย่าง ซึ่งโดยทั่วไปคือการเข้าถึงอินเทอร์เน็ต กล่าวอีกนัยหนึ่ง พร็อกซีเซิร์ฟเวอร์เชื่อมต่อกับอินเทอร์เน็ตโดยตรงด้านหนึ่ง (หรือเราเตอร์ที่เชื่อมต่ออยู่ ไปยังอินเทอร์เน็ต) และอีกด้านหนึ่งไปยังเครือข่ายคอมพิวเตอร์ไคลเอนต์ที่จะเข้าถึงเวิลด์ไวด์เว็บผ่าน มัน.
คุณอาจสงสัยว่าทำไมฉันถึงต้องการเพิ่มซอฟต์แวร์อีกชิ้นหนึ่งลงในโครงสร้างพื้นฐานเครือข่ายของฉัน
1. Squid เก็บไฟล์จากคำขอก่อนหน้าเพื่อเพิ่มความเร็วในการโอนในอนาคต. ตัวอย่างเช่น สมมุติ ลูกค้า1 ดาวน์โหลด CentOS-7.0-1406-x86_64-DVD.iso จากอินเทอร์เน็ต เมื่อไร ลูกค้า2 ขอเข้าถึงไฟล์เดียวกัน squid สามารถถ่ายโอนไฟล์จากแคชของมันแทนการดาวน์โหลดอีกครั้งจากอินเทอร์เน็ต อย่างที่คุณเดาได้ คุณสามารถใช้คุณสมบัตินี้เพื่อเพิ่มความเร็วในการถ่ายโอนข้อมูลในเครือข่ายคอมพิวเตอร์ที่ต้องการการอัปเดตบางประเภทบ่อยครั้ง
2. ACLs (รายการควบคุมการเข้าถึง) อนุญาตให้เราจำกัดการเข้าถึงเว็บไซต์ และ / หรือตรวจสอบการเข้าถึงเป็นรายบุคคล คุณสามารถจำกัดการเข้าถึงตามวันในสัปดาห์ ช่วงเวลาของวัน หรือโดเมน เป็นต้น
3. ข้ามตัวกรองเว็บ ทำได้โดยใช้เว็บพรอกซีที่มีการร้องขอและส่งคืนเนื้อหาที่ร้องขอไปยังไคลเอนต์ แทนที่จะให้ไคลเอนต์ร้องขอโดยตรงไปยังอินเทอร์เน็ต
ตัวอย่างเช่น สมมติว่าคุณเข้าสู่ระบบใน ลูกค้า1 และต้องการเข้าถึง www.facebook.com ผ่านเราเตอร์ของบริษัทคุณ เนื่องจากไซต์อาจถูกบล็อกโดยนโยบายของบริษัท คุณจึงสามารถเชื่อมต่อกับเว็บพร็อกซีเซิร์ฟเวอร์และขอให้ไซต์ดังกล่าวเข้าถึง www.facebook.com. จากนั้นเนื้อหาระยะไกลจะถูกส่งคืนถึงคุณผ่านเว็บพร็อกซีเซิร์ฟเวอร์อีกครั้ง โดยข้ามนโยบายการบล็อกของเราเตอร์ของบริษัทคุณ
รูปแบบการควบคุมการเข้าถึงของเว็บพร็อกซีเซิร์ฟเวอร์ Squid ประกอบด้วยสององค์ประกอบที่แตกต่างกัน:
ไฟล์กำหนดค่าหลักของ Squid คือ /etc/squid/squid.conf, ซึ่งเป็น ~5000 บรรทัดยาวเนื่องจากมีทั้งคำสั่งการกำหนดค่าและเอกสารประกอบ ด้วยเหตุนี้เราจะสร้างใหม่ squid.conf ไฟล์ที่มีเฉพาะบรรทัดที่มีคำสั่งการกำหนดค่าเพื่อความสะดวกของเรา โดยเว้นบรรทัดว่างหรือแสดงความคิดเห็น ในการทำเช่นนั้น เราจะใช้คำสั่งต่อไปนี้
# mv /etc/squid/squid.conf /etc/squid/squid.conf.bkp
แล้ว
# grep -Eiv '(^#|^$)' /etc/squid/squid.conf.bkp หรือ # grep -ve ^# -ve ^$ /etc/squid/squid.conf.bkp > /etc/squid/ ปลาหมึก.คอน
ตอนนี้เปิดที่สร้างขึ้นใหม่ squid.conf ไฟล์และค้นหา (หรือเพิ่ม) ต่อไปนี้ ACL องค์ประกอบและรายการเข้าถึง
acl localhost src 127.0.0.1/32. acl localnet src 192.168.0.0/24.
สองบรรทัดข้างต้นเป็นตัวอย่างพื้นฐานของการใช้ ACL องค์ประกอบ
สองบรรทัดด้านล่างคือ รายการเข้าถึง กฎและแสดงถึงการดำเนินการที่ชัดเจนของ ACL คำสั่งที่กล่าวถึงก่อนหน้านี้ บอกได้คำเดียวว่า การเข้าถึง http ควรได้รับหากคำขอมาจากเครือข่ายท้องถิ่น (localnet) หรือจาก localhost. เฉพาะเครือข่ายท้องถิ่นที่ได้รับอนุญาตหรือที่อยู่โฮสต์ในพื้นที่คืออะไร คำตอบคือ: สิ่งที่ระบุไว้ในคำสั่ง localhost และ localnet
http_access อนุญาต localnet http_access อนุญาต localhost
ณ จุดนี้คุณสามารถเริ่มต้นใหม่ได้ ปลาหมึก เพื่อใช้การเปลี่ยนแปลงที่รอดำเนินการ
# service squid restart [การแจกแจงแบบ Upstart / sysvinit] # systemctl รีสตาร์ท squid.service [การแจกแจงแบบอิง systemd]
แล้วกำหนดค่าเบราว์เซอร์ไคลเอนต์ในเครือข่ายท้องถิ่น (192.168.0.104 ในกรณีของเรา) เพื่อเข้าถึงอินเทอร์เน็ตผ่านพร็อกซีของคุณดังนี้
1. ไปที่ แก้ไข เมนูและเลือก การตั้งค่า ตัวเลือก.
2. คลิกที่ ขั้นสูงจากนั้นบน เครือข่าย แท็บ และสุดท้ายบน การตั้งค่า…
3. ตรวจสอบ การกำหนดค่าพร็อกซีด้วยตนเอง และป้อน ที่อยู่ IP ของพร็อกซีเซิร์ฟเวอร์และ ท่า ที่มันกำลังฟังการเชื่อมต่อ
บันทึก โดยค่าเริ่มต้น Squid จะฟังพอร์ต 3128แต่คุณสามารถลบล้างพฤติกรรมนี้ได้โดยการแก้ไข รายการเข้าถึง กฎที่ขึ้นต้นด้วย http_port (โดยค่าเริ่มต้นจะอ่านว่า http_port 3128).
4. คลิก ตกลง เพื่อใช้การเปลี่ยนแปลงและคุณก็พร้อมแล้ว
ตอนนี้คุณสามารถตรวจสอบได้ว่าไคลเอนต์เครือข่ายท้องถิ่นของคุณกำลังเข้าถึงอินเทอร์เน็ตผ่านพร็อกซีของคุณดังนี้
1. ในไคลเอนต์ของคุณ เปิด a เทอร์มินัล และพิมพ์
# ที่อยู่ IP แสดง eth0 | grep -Ei '(inet.*eth0)'
คำสั่งนั้นจะแสดงค่าปัจจุบัน ที่อยู่ IP ของลูกค้าของคุณ (192.168.0.104 ในรูปต่อไปนี้)
2. ในไคลเอนต์ของคุณ ใช้เว็บเบราว์เซอร์เพื่อเปิดเว็บไซต์ที่กำหนด (www.tecmint.com ในกรณีนี้).
3. ในเซิร์ฟเวอร์ให้เรียกใช้
# tail -f /var/log/squid/access.log
และคุณจะได้รับมุมมองสดของคำขอที่ให้บริการผ่าน ปลาหมึก.
ตอนนี้ สมมติว่าคุณต้องการปฏิเสธการเข้าถึงที่อยู่ IP ของไคลเอ็นต์นั้นอย่างชัดแจ้ง ในขณะที่ยังคงเข้าถึงส่วนที่เหลือของเครือข่ายท้องถิ่น
1. นิยามใหม่ ACL คำสั่งดังนี้ (ผมตั้งชื่อมันว่า ubuntuOS แต่จะตั้งชื่ออะไรก็ได้ตามใจชอบ)
acl ubuntuOS src 192.168.0.104.
2. เพิ่ม ACL คำสั่งไปยัง การเข้าถึงเครือข่ายท้องถิ่น รายการที่มีอยู่แล้ว แต่นำหน้าด้วยเครื่องหมายอัศเจรีย์ นี่หมายความว่า “อนุญาตให้เข้าถึงอินเทอร์เน็ตไปยังไคลเอนต์ที่ตรงกับคำสั่ง localnet ACL ยกเว้นที่ตรงกับคำสั่ง ubuntuOS”.
http_access อนุญาต localnet !ubuntuOS
3. ตอนนี้เราต้องรีสตาร์ท Squid เพื่อใช้การเปลี่ยนแปลง หากเราพยายามเรียกดูไซต์ใด ๆ เราจะพบว่าการเข้าถึงถูกปฏิเสธในขณะนี้
เพื่อจำกัดการเข้าถึง Squid ตามโดเมน เราจะใช้ dstdomain คีย์เวิร์ดใน a ACL คำสั่งดังนี้.
acl forbidden dstdomain "/etc/squid/forbidden_domains"
ที่ไหน forbidden_domains เป็นไฟล์ข้อความธรรมดาที่มีโดเมนที่เราต้องการที่จะปฏิเสธการเข้าถึง
สุดท้าย เราต้องให้สิทธิ์การเข้าถึง Squid สำหรับคำขอที่ไม่ตรงกับคำสั่งด้านบน
http_access อนุญาต localnet !forbidden
หรือบางทีเราต้องการอนุญาตให้เข้าถึงเว็บไซต์เหล่านั้นในช่วงเวลาหนึ่งของวันเท่านั้น (10:00 ถึง 11:00 น.) เฉพาะใน จันทร์ (ม), วันพุธ (ญ), และ วันศุกร์ (F).
acl someDays เวลา MWF 10:00-11:00. http_access อนุญาตบางวันต้องห้าม http_access ปฏิเสธสิ่งต้องห้าม
มิฉะนั้น การเข้าถึงโดเมนเหล่านั้นจะถูกบล็อก
Squid รองรับกลไกการพิสูจน์ตัวตนหลายอย่าง (Basic, NTLM, Digest, SPNEGO และ Oauth) และตัวช่วย (ฐานข้อมูล SQL, LDAP, NIS, NCSA เป็นต้น) ในบทช่วยสอนนี้ เราจะใช้การตรวจสอบสิทธิ์ขั้นพื้นฐานด้วย กศน.
เพิ่มบรรทัดต่อไปนี้ใน your /etc/squid/squid.conf ไฟล์.
โปรแกรมพื้นฐาน auth_param /usr/lib/squid/ncsa_auth /etc/squid/passwd. auth_param ข้อมูลรับรองพื้นฐานsttl 30 นาที auth_param ตัวพิมพ์เล็กและใหญ่พื้นฐานบน auth_param เว็บเซิร์ฟเวอร์แคชพร็อกซีของ realm พื้นฐานสำหรับชุด LFCE ของ Tecmint ต้องการ acl ncsa proxy_auth http_access อนุญาต ncsa
บันทึก: ใน CentOS 7, ปลั๊กอิน NCSA สำหรับปลาหมึกสามารถพบได้ใน /usr/lib64/squid/basic_nsca_authดังนั้นให้เปลี่ยนตามบรรทัดด้านบน
คำชี้แจงบางประการ:
เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างไฟล์และเพิ่มข้อมูลรับรองสำหรับผู้ใช้ gacanepa (ละเว้น -ค ตั้งค่าสถานะหากมีไฟล์อยู่แล้ว)
# htpasswd -c /etc/squid/passwd gacanepa.
เปิดเว็บเบราว์เซอร์ในเครื่องไคลเอ็นต์และลองเรียกดูไซต์ที่ระบุ
หากการรับรองความถูกต้องสำเร็จ การเข้าถึงจะได้รับไปยังทรัพยากรที่ร้องขอ มิฉะนั้น การเข้าถึงจะถูกปฏิเสธ
คุณลักษณะเด่นประการหนึ่งของ Squid คือความเป็นไปได้ในการแคชทรัพยากรที่ร้องขอจากเว็บไปยังดิสก์ เพื่อเพิ่มความเร็วในคำขอในอนาคตของวัตถุเหล่านั้นไม่ว่าจะโดยไคลเอนต์เดียวกันหรือผู้อื่น
เพิ่มคำสั่งต่อไปนี้ในของคุณ squid.conf ไฟล์.
cache_dir ufs /var/cache/squid 1000 16 256. สูงสุด_object_size 100 MB. refresh_pattern .*\.(mp4|iso) 2880.
คำชี้แจงบางประการของคำสั่งข้างต้น
ครั้งแรกและครั้งที่สอง 2880 เป็นขีดจำกัดล่างและบนตามลำดับว่าอ็อบเจ็กต์ที่ไม่มีเวลาหมดอายุชัดเจนจะพิจารณาเป็นปัจจุบันนานเท่าใดตามลำดับ และแคชจะให้บริการโดยที่ 0% คือเปอร์เซ็นต์ของอายุของออบเจ็กต์ (เวลาตั้งแต่การแก้ไขครั้งล่าสุด) ที่แต่ละอ็อบเจ็กต์ที่ไม่มีเวลาหมดอายุอย่างชัดเจนจะถือเป็นค่าล่าสุด
ลูกค้ารายแรก (IP 192.168.0.104) ดาวน์โหลด a 71 MB .mp4 ไฟล์ใน 2 นาที 52 วินาที
ลูกค้ารายที่สอง (IP 192.168.0.17) ดาวน์โหลดไฟล์เดียวกันใน 1.4 วินาที!
นั่นเป็นเพราะว่าไฟล์ถูกส่งมาจากไฟล์ แคชปลาหมึก (ระบุโดย TCP_HIT/200) ในกรณีที่สอง ซึ่งต่างจากกรณีแรก เมื่อดาวน์โหลดโดยตรงจากอินเทอร์เน็ต (แสดงโดย TCP_MISS/200).
NS ตี และ นางสาว คำหลักพร้อมกับ 200 http รหัสตอบกลับ ระบุว่าไฟล์ได้รับการให้บริการสำเร็จทั้งสองครั้ง แต่แคชเป็นแบบ HIT และ Missed ตามลำดับ เมื่อแคชไม่สามารถให้บริการคำขอได้ด้วยเหตุผลบางประการ Squid จะพยายามให้บริการจากอินเทอร์เน็ต
ในบทความนี้ เราได้พูดถึงวิธีตั้งค่า a Squid เว็บแคชพร็อกซี่. คุณสามารถใช้พร็อกซีเซิร์ฟเวอร์เพื่อกรองเนื้อหาโดยใช้เกณฑ์ที่เลือก และเพื่อลดเวลาในการตอบสนอง (เนื่องจากคำขอขาเข้าเหมือนกัน ถูกเสิร์ฟจากแคชซึ่งใกล้กับไคลเอนต์มากกว่าเว็บเซิร์ฟเวอร์ที่ให้บริการเนื้อหาจริง ๆ ส่งผลให้เร็วขึ้น การถ่ายโอนข้อมูล) และทราฟฟิกเครือข่ายด้วย (ลดจำนวนแบนด์วิดท์ที่ใช้ ซึ่งช่วยให้คุณประหยัดเงินได้หากคุณจ่าย การจราจร).
คุณอาจต้องการอ้างถึง เว็บไซต์ปลาหมึก สำหรับเอกสารประกอบเพิ่มเติม (อย่าลืมตรวจสอบวิกิด้วย) แต่อย่าลังเลที่จะติดต่อเราหากคุณมีคำถามหรือความคิดเห็นใดๆ เรายินดีเป็นอย่างยิ่งที่จะได้ยินจากคุณ!