การติดตั้ง proxy server ด้วยโปรแกรม squid
วิธีติดตั้ง proxy server ด้วยโปรแกรม squid
*** แหล่งข้อมูลต้นฉบับ squid คือ http://www.squid-cache.org
- ติดตั้งโปรแกรม squid ด้วยคำสั่ง
apt-get install squid
ในกรณีที่ใช้ yum ให้เปลี่ยนคำว่า apt-get เป็น yum ดังตัวอย่าง
yum install squid
- แก้ไขให้ทำงานทุกครั้งที่บูทเครื่อง
chkconfig squid on
- ตัวอย่างข้อกำหนดของระบบ proxy server
- ติดตั้งบน server หมายเลข IP คือ 10.0.0.5
- cache http port คือ 3128
ให้แก้ไขแฟ้ม /etc/squid/squid.conf กำหนดค่าตัวอย่างดังนี้
- ค้นหาตัวแปร http_port เพื่อตั้งค่าใหม่
ตัวอย่างต้นฉบับเดิมคือ # http_port 3128
ค่า default คือ http_port เป็น 3128 อยู่แล้ว ไม่ต้องทำอะไรอีก
หากใช้ port อื่นเช่น 8080 ก็เปลี่ยนให้เป็น http_port 8080 0
*** อย่าลืมเอาเครื่องหมาย # ด้านหน้า ออกด้วย
- ค้นหาตัวแปร http_access เพื่อตั้งค่าใหม่
ตัวอย่างต้นฉบับเดิมคือ # http_access deny all
ค่า default คือปิดไม่อนุญาติให้ใช้เลย
แก้ไขใหม่อนุญาติให้ใช้ได้ทั้งหมดเป็น http_access allow all
*** อย่าลืมเอาเครื่องหมาย # ด้านหน้า ออกด้วย
- สั่งให้ทำงานด้วยคำสั่งว่า
/etc/init.d/squid start
Starting dhcpd: [ OK ]
- เฉพาะกรณีการทำ proxy server ในมหาวิทยาลัยสงขลานครินทร์
ที่กำหนดต้องผ่าน cache.psu.ac.th:8080 อยู่แล้วจึงต้องแก้ไข
ข้อมูลในแฟ้ม /etc/squid/squid.conf
- ค้นหาตัวแปร cache_peer เพื่อตั้งค่าใหม่
ตัวอย่างต้นฉบับเดิม ไม่ได้กำหนดค่านี้ไว้
ให้เพิ่มเข้าไปใหม่เองด้วยบรรทัดว่า
cache_peer cache.psu.ac.th parent 8080
- สั่งทำงานใหม่ด้วยคำสั่งว่า
/etc/init.d/squid reload
- ตัวอย่างทดสอบใช้งาน โดยตั้งค่าใน browser ให้ชี้ไปที่
proxy server 10.0.0.5 port 3128
- การตั้งค่าให้ squid อนุญาติให้ไปเอาข้อมูลโดยตรงจากบาง site
แก้ไขแฟ้ม /etc/squid/squid.conf
ตัวอย่างอนุญาติให้ site ภายใต้โดเมน psu.ac.th คือ
acl psu dstdomain .psu.ac.th
always_direct allow psu
- ถ้าต้องการให้มีการตรวจสอบชื่อและรหัสผ่านผู้ใช้งาน ระบบ proxy
โดยมีฐานข้อมูลบัญชีผู้ใช้และรหัสผ่านจากแฟ้มระบบ /etc/passwd
สามารถทำได้โดยแก้ไขแฟ้ม /etc/squid/squid.conf ดังนี้
- จากเดิมที่บรรทัดว่า http_access allow all
ให้เปลี่ยนเป็น http_access allow password all
- จากเดิมที่บรรทัด #acl password proxy_auth REQUIRED
ให้ลบเครื่องหมาย # ออก กลายเป็น acl password proxy_auth REQUIRED
- ให้แทรกเพิ่มบรรทัดว่า
auth_param basic program /usr/lib/squid/pam_auth
ก่อนหน้าบรรทัดเหล่านี้คือ
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
- กำหนดสิทธิ์ของแฟ้มด้วยคำสั่ง
chmod u+s /usr/lib/squid/pam_auth
- เสร็จแล้วก็ให้ reload squid ด้วยคำสั่ง
/etc/init.d/squid reload
- หากไม่ต้องการใช้แฟ้ม /etc/passwd แต่ต้องการใช้ฐานข้อมูลของ IMAP server
ให้ดำเนินการทำนองเดียวกับการจัดการเชื่อมกับ /etc/passwd
แต่ต้องดาวน์โหลดโปรแกรมจัดการเพิ่มเติมและปรับแต่งดังนี้
- ดาวน์โหลดโปรแกรมจาก ftp://ftp.psu.ac.th/pub/squid/squid-imap.py
มาเก็บไว้ที่ /usr/lib/squid
- กำหนดสิทธิ์ของแฟ้มด้วยคำสั่ง
chmod +x /usr/lib/squid/squid-imap.py
- แก้ไขแฟ้ม /usr/lib/squid/squid-imap.py
ที่บรรทัดเดิมคือ server="127.0.0.1"
ให้แก้ไขเป็น IMAP server ที่ตัองการตัวอย่างคือ
server="myserver.domain"
- ตรวจสอบแก้ไข locale อย่าให้เป็น UTF-8
โดยการแก้ไขแฟ้ม /etc/sysconfig/i18n
จากบรรทัดข้อความเดิม LANG="en_US.UTF-8"
ให้ลบ .UTF-8 ออกเหลือเพียงข้อความว่า LANG="en_US"
- แก้ไขแฟ้ม /etc/squid/squid.conf เปลี่ยนแปลงบรรทัดจากเดิม
auth_param basic program /usr/lib/squid/pam_auth
ให้เป็นดังนี้
auth_param basic program /usr/lib/squid/squid-imap.py
- เสร็จแล้วก็ให้ reload squid ด้วยคำสั่ง
/etc/init.d/squid reload
- การตั้งค่าให้ squid ทำตัวเป็น transparent proxy
ต้องมีการตั้งค่าของ router ด้วย
เฉพาะในส่วนของ squid ให้แก้ไขแฟ้ม /etc/squid/squid.conf
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
*** ไม่สามารถใช้ squid ทำ transparent proxy กับ port https (443)
ทำได้เฉพาะ port http (80) เท่านั้น เนื่องจากข้อจำกัดทางเทคนิค
- ตัวอย่างการปรับแก้ไข shorewall ให้ใช้คู่กับ squid เป็น transparent proxy
แก้ไขแฟ้ม /etc/shorewall/rules
# Squid
REDIRECT loc 3128 tcp 80,44