วิธีการตั้งค่าเซิร์ฟเวอร์ "Squid Proxy" บน Ubuntu และ Debian
Squid เป็นเว็บพร็อกซีเซิร์ฟเวอร์ HTTP สำหรับแคชและส่งต่อที่ได้รับความนิยมมากที่สุด ใช้บริษัทหลายแห่งของฉันในการแคชหน้าเว็บจากเว็บเซิร์ฟเวอร์ เพื่อปรับปรุงความเร็วของเว็บเซิร์ฟเวอร์ ลดเวลาตอบสนอง และลดการใช้แบนด์วิธเครือข่าย
อ่านเพิ่มเติม: วิธีสร้างพร็อกซี HTTP โดยใช้ Squid บน CentOS 7
ในบทความนี้ เราจะอธิบายวิธีติดตั้งพร็อกซีเซิร์ฟเวอร์ squid บนการกระจาย Ubuntu และ Debian และใช้เป็นพร็อกซีเซิร์ฟเวอร์ HTTP
วิธีการติดตั้ง Squid บน Ubuntu
ก่อนที่เราจะเริ่มต้น คุณควรรู้ว่าเซิร์ฟเวอร์ Squid ไม่มีข้อกำหนดใดๆ แต่ปริมาณการใช้ RAM อาจแตกต่างกันไปขึ้นอยู่กับไคลเอนต์ที่เรียกดูอินเทอร์เน็ตผ่านพร็อกซีเซิร์ฟเวอร์
แพ็คเกจ Squid พร้อมให้ติดตั้งจากพื้นที่เก็บข้อมูลพื้นฐานของ Ubuntu แต่ก่อนหน้านั้น โปรดแน่ใจว่าได้อัปเดตแพ็คเกจของคุณด้วยการรัน
sudo apt update
เมื่อแพ็คเกจของคุณเป็นปัจจุบันแล้ว คุณสามารถดำเนินการติดตั้ง squid เพิ่มเติมและเริ่มและเปิดใช้งานเมื่อเริ่มต้นระบบโดยใช้คำสั่งต่อไปนี้
sudo apt -y install squid
sudo systemctl start squid
sudo systemctl enable squid
ณ จุดนี้เว็บพร็อกซี Squid ของคุณควรจะทำงานอยู่แล้ว และคุณสามารถตรวจสอบสถานะของบริการได้
sudo systemctl status squid
ผลลัพธ์ตัวอย่าง
● squid.service - LSB: Squid HTTP Proxy version 3.x
Loaded: loaded (/etc/init.d/squid; generated)
Active: active (running) since Tue 2018-12-04 06:42:43 UTC; 14min ago
Docs: man:systemd-sysv-generator(8)
Tasks: 4 (limit: 1717)
CGroup: /system.slice/squid.service
├─2761 /usr/sbin/squid -YC -f /etc/squid/squid.conf
├─2766 (squid-1) -YC -f /etc/squid/squid.conf
├─2768 (logfile-daemon) /var/log/squid/access.log
└─2772 (pinger)
Dec 04 06:42:43 tecmint systemd[1]: Starting LSB: Squid HTTP Proxy version 3.x...
Dec 04 06:42:43 tecmint squid[2708]: * Starting Squid HTTP Proxy squid
Dec 04 06:42:43 tecmint squid[2708]: ...done.
Dec 04 06:42:43 tecmint systemd[1]: Started LSB: Squid HTTP Proxy version 3.x.
Dec 04 06:42:43 tecmint squid[2761]: Squid Parent: will start 1 kids
Dec 04 06:42:43 tecmint squid[2761]: Squid Parent: (squid-1) process 2766 started
ต่อไปนี้คือตำแหน่งไฟล์ปลาหมึกที่สำคัญที่คุณควรทราบ:
- ไฟล์การกำหนดค่า Squid: /etc/squid/squid.conf
- บันทึกการเข้าถึง Squid: /var/log/squid/access.log
- บันทึกแคช Squid: /var/log/squid/cache.log
ไฟล์การกำหนดค่าเริ่มต้นประกอบด้วยคำสั่งการกำหนดค่าบางอย่างที่จำเป็นต้องกำหนดค่าเพื่อให้ส่งผลต่อพฤติกรรมของ Squid
ตอนนี้ให้เปิดไฟล์นี้เพื่อแก้ไขโดยใช้โปรแกรมแก้ไข Vi และทำการเปลี่ยนแปลงตามที่แสดงด้านล่าง
sudo vim /etc/squid/squid.conf
ตอนนี้ คุณสามารถค้นหาบรรทัดต่อไปนี้และเปลี่ยนแปลงได้ตามที่ร้องขอ ในโปรแกรมแก้ไข Vi คุณสามารถค้นหาบรรทัดเหล่านั้นได้โดยการกด 'ESC' และพิมพ์ “/ ” กุญแจสำคัญในการเขียนบรรทัดเฉพาะเพื่อค้นหา
- http_port : นี่คือพอร์ตเริ่มต้นสำหรับพร็อกซีเซิร์ฟเวอร์ HTTP โดยค่าเริ่มต้นคือ 3128 คุณสามารถเปลี่ยนเป็นพอร์ตอื่น ๆ ที่คุณต้องการ คุณสามารถเพิ่ม แท็ก "โปร่งใส" ที่ท้ายบรรทัด เช่น http_port 8888 transparent เพื่อให้ Squid proxy ทำหน้าที่เหมือนพร็อกซีแบบโปร่งใส หากคุณต้องการ
- http_access deny all : บรรทัดนี้จะไม่อนุญาตให้ใครเข้าถึงพร็อกซีเซิร์ฟเวอร์ HTTP นั่นคือสาเหตุที่คุณต้องเปลี่ยนเป็น http_access อนุญาตทั้งหมด เพื่อเริ่มใช้ Squid proxy server ของคุณ .
- visible_hostname : คำสั่งนี้ใช้เพื่อตั้งชื่อโฮสต์เฉพาะให้กับเซิร์ฟเวอร์ squid คุณสามารถตั้งชื่อโฮสต์ให้กับปลาหมึกได้
หลังจากทำการเปลี่ยนแปลงข้างต้นแล้ว คุณสามารถรีสตาร์ทพร็อกซีเซิร์ฟเวอร์ Squid โดยใช้คำสั่ง
sudo systemctl restart squid
การกำหนดค่า Squid เป็น HTTP Proxy บน Ubuntu
ในส่วนการกำหนดค่า squid นี้ เราจะอธิบายวิธีกำหนดค่า squid เป็นพร็อกซี HTTP โดยใช้เฉพาะที่อยู่ IP ไคลเอนต์สำหรับการตรวจสอบสิทธิ์
เพิ่ม Squid ACL
หากคุณต้องการอนุญาตให้มีที่อยู่ IP เดียวเท่านั้นในการเข้าถึงอินเทอร์เน็ตผ่านพร็อกซีเซิร์ฟเวอร์ใหม่ของคุณ คุณจะต้องกำหนด acl ใหม่ (รายการควบคุมการเข้าถึง) ในไฟล์การกำหนดค่า
sudo vim /etc/squid/squid.conf
กฎ acl ที่คุณควรเพิ่มคือ:
acl localnet src XX.XX.XX.XX
โดยที่ XX.XX.XX.XX
คือที่อยู่ IP ของเครื่องไคลเอ็นต์ ควรเพิ่ม acl นี้ไว้ที่จุดเริ่มต้นของส่วนของ ACL ดังที่แสดงในภาพหน้าจอต่อไปนี้
ถือเป็นแนวปฏิบัติที่ดีเสมอในการกำหนดความคิดเห็นถัดจาก ACL ซึ่งจะอธิบายว่าใครใช้ที่อยู่ IP นี้ เป็นต้น
acl localnet src 192.168.0.102 # Boss IP address
คุณจะต้องรีสตาร์ทบริการ Squid เพื่อให้การเปลี่ยนแปลงใหม่มีผล
sudo systemctl restart squid
เปิดพอร์ตใน Squid Proxy
ตามค่าเริ่มต้น อนุญาตให้ใช้เฉพาะบางพอร์ตในการกำหนดค่า squid หากคุณต้องการเพิ่มอีก เพียงกำหนดพอร์ตเหล่านั้นในไฟล์การกำหนดค่าดังที่แสดง
acl Safe_ports port XXX
โดยที่ XXX
คือหมายเลขพอร์ตที่คุณต้องการอนุญาต ขอย้ำอีกครั้งว่าควรกำหนดความคิดเห็นถัดจาก acl ที่จะอธิบายว่าพอร์ตจะใช้ทำอะไร
เพื่อให้การเปลี่ยนแปลงมีผล คุณจะต้องรีสตาร์ท squid อีกครั้ง
sudo systemctl restart squid
การตรวจสอบสิทธิ์ไคลเอ็นต์ Squid Proxy
หากต้องการอนุญาตให้ผู้ใช้ตรวจสอบสิทธิ์ก่อนใช้พร็อกซี คุณต้องเปิดใช้งานการตรวจสอบสิทธิ์ http พื้นฐานในไฟล์การกำหนดค่า แต่ก่อนหน้านั้นคุณต้องติดตั้งแพ็คเกจ apache2-utils โดยใช้คำสั่งต่อไปนี้
sudo apt install apache2-utils
ตอนนี้ให้สร้างไฟล์ชื่อ “passwd” ซึ่งจะจัดเก็บชื่อผู้ใช้สำหรับการตรวจสอบสิทธิ์ในภายหลัง Squid ทำงานโดยผู้ใช้ “proxy ” ดังนั้นไฟล์ควรเป็นของผู้ใช้รายนั้น
sudo touch /etc/squid/passwd
sudo chown proxy: /etc/squid/passwd
ls -l /etc/squid/passwd
ตอนนี้เราจะสร้างผู้ใช้ใหม่ชื่อ "tecmint" และตั้งค่ารหัสผ่าน
sudo htpasswd /etc/squid/passwd tecmint
New password:
Re-type new password:
Adding password for user tecmint
ตอนนี้เพื่อเปิดใช้งานการรับรองความถูกต้อง http พื้นฐานให้เปิดไฟล์การกำหนดค่า
sudo vim /etc/squid/squid.conf
หลังจากที่ ACL ของพอร์ตเพิ่มบรรทัดต่อไปนี้:
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users
บันทึกไฟล์และรีสตาร์ท squid เพื่อให้การเปลี่ยนแปลงใหม่มีผล:
sudo systemctl restart squid
บล็อกเว็บไซต์บน Squid Proxy
หากต้องการบล็อกการเข้าถึงเว็บไซต์ที่ไม่ต้องการ ขั้นแรกให้สร้างไฟล์ชื่อ “blacklisted_sites.acl” ที่จะจัดเก็บไซต์ที่อยู่ในบัญชีดำนั้น
sudo touch /etc/squid/blacklisted_sites.acl
ตอนนี้เพิ่มเว็บไซต์ที่คุณต้องการบล็อกการเข้าถึงเป็นต้น
.badsite1.com
.badsite2.com
จุด ดำเนินการต่อแจ้งให้ squid บล็อกการอ้างอิงทั้งหมดไปยังไซต์นั้น รวมถึง www.badsite1, subsite.badsite1.com ฯลฯ
ตอนนี้เปิดไฟล์กำหนดค่าของ Squid
sudo vim /etc/squid/squid.conf
หลังจาก ACL ข้างต้นเพิ่มสองบรรทัดต่อไปนี้:
acl bad_urls dstdomain "/etc/squid/blacklisted_sites.acl"
http_access deny bad_urls
ตอนนี้บันทึกไฟล์และรีสตาร์ท squid:
sudo systemctl restart squid
บล็อกคำหลักเฉพาะด้วย Squid
หากต้องการบล็อกรายการคำหลัก ขั้นแรกให้สร้างไฟล์ชื่อ “blockkeywords.lst” ซึ่งจะจัดเก็บคำหลักที่อยู่ในบัญชีดำไว้ในนั้น
sudo touch /etc/squid/blockkeywords.lst
ตอนนี้เพิ่มคำหลักที่คุณต้องการบล็อกการเข้าถึง เป็นต้น
facebook
instagram
gmail
ตอนนี้เปิดไฟล์กำหนดค่าของ Squid และเพิ่มกฎต่อไปนี้
acl blockkeywordlist url_regex "/etc/squid/blockkeywords.lst"
http_access deny blockkeywordlist
ตอนนี้บันทึกไฟล์และรีสตาร์ท squid:
sudo systemctl restart squid
เมื่อทุกอย่างกำหนดค่าอย่างถูกต้องแล้ว ตอนนี้คุณสามารถกำหนดค่าเว็บเบราว์เซอร์ไคลเอ็นต์ในเครื่องของคุณหรือการตั้งค่าเครือข่ายของระบบปฏิบัติการเพื่อใช้พร็อกซี HTTP ของปลาหมึกที่กำหนดค่าใหม่ได้
กำหนดค่าไคลเอนต์เพื่อใช้ Squid Proxy
ตอนนี้เพื่อทดสอบว่าพร็อกซีเซิร์ฟเวอร์ของคุณทำงานหรือไม่ คุณอาจเปิด Firefox และไปที่ แก้ไข –> การตั้งค่า –> ขั้นสูง –> เครือข่าย –> การตั้งค่า และเลือก “การกำหนดค่าพร็อกซีด้วยตนเอง ” และป้อนที่อยู่ IP ของพร็อกซีเซิร์ฟเวอร์และพอร์ตที่จะใช้สำหรับการเชื่อมต่อทั้งหมดดังต่อไปนี้
เมื่อคุณกรอกรายละเอียดพร็อกซีที่จำเป็นทั้งหมดแล้ว คุณจะสามารถท่องเว็บโดยใช้พร็อกซีเซิร์ฟเวอร์ Squid ของคุณได้ คุณสามารถทำสิ่งเดียวกันนี้ในเบราว์เซอร์หรือโปรแกรมอื่น ๆ ที่คุณต้องการได้
เพื่อให้แน่ใจว่าคุณกำลังท่องเว็บโดยใช้พร็อกซีเซิร์ฟเวอร์ของคุณ คุณสามารถไปที่ http://www.ipaddresslocation.org/ ที่มุมขวาบนคุณจะต้องเห็นที่อยู่ IP เดียวกันกับเซิร์ฟเวอร์ของคุณ ที่อยู่ IP.
สำหรับการตั้งค่าเพิ่มเติมเพิ่มเติม คุณสามารถตรวจสอบเอกสารประกอบของปลาหมึกอย่างเป็นทางการได้ หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดเพิ่มในส่วนความคิดเห็นด้านล่าง