การติดตั้งและใช้งาน Squid proxy server
จาก Research 2549, สารานุกรมฟรี
เรื่อง การติดตั้งและการใช้งาน Squid proxy serverชื่อผู้จัดทำ นนร.กิตติพันธ์ เลิศจิตเมต ชั้นปีที่ ๔ ตอน ทส. เลขที่ ๔ mailto:kittiphan.l@gmail.com
สารบัญ |
บทคัดย่อ
เนื่องจากในยุคสมัยปัจจุบันได้ก้าวเข้าสู่ยุคของข้อมูลและข่าวสารจึงทำให้
ความต้องการในการเข้าสู่ Internet และใช้บริการข้อมูลข่าวสารจึงเป็น
สิ่งจำเป็นที่องค์กรและหน่วยงานต่างๆต้องวางระบบเครือข่ายภายในองค์กร
เพื่อให้ใช้งานได้อย่างมีประสิทธิภาพ การใช้คอนเนคชั่นเดียวกันในการใช้ Internet
เพื่อลดค่าใช้จ่ายในการต่อ Internet ความเร็วในการใช้งานก็เป็นเรื่องที่สำคัญ
เมื่อยิ่งมีผู้ใช้งานมากขึ้นก็จะทำให้ความเร็วในการใช้ Internet ลดน้อยลงตามไป
ด้วย จึงจำเป็นที่จะต้องหาวิธีในการใช้งาน อีกทางเลือกหนึ่งก็คือ การใช้ Proxy Server
ซึ่งที่ค่อนข้างจะนิยมใช้กันก็คือ Squid Proxy Server ที่มีอยู่ใน Linux ทุกๆตัว
ทั้งช่วยประหยัดงบประมาณเนื่องจากไม่เสียค่าใช้จ่ายเกี่ยวกับลิขสิทธ์ของโปรแกรม
แล้วยังมีประสิทธิภาพในการทำงานดี และแพร่หลายเป็นอย่างมากอีกด้วย
บทนำ
รายงานนี้จัดทำขึ้นเพื่อนำเสนอขั้นตอนของการติดตั้งและใช้งานโปรแกรม squid proxy เพื่อเป็นประโยชน์แก่ผู้ที่สนใจและต้องการจะนำไปศึกษาเพื่อนำไปใช้งานในเบื้องต้นประวัติความเป็นมา/ทฤษฏีพื้นฐานที่เกี่ยวข้อง
- Proxy server
- Proxy Server คือ ตัวกลางระหว่างเครือข่ายภายนอกกับเครือข่ายภายใน ที่คอยรับเอาการร้องขอจากภายในเครือข่ายติดต่อไปยังเซริฟ์เวอร์ปลายทางภายนอกเครือข่าย(Internet) แล้วยังคอยรับข้อมูลที่ส่งมาจากเครือข่ายภายนอกที่เข้ามายังเครือข่ายภายใน โดย Proxy แต่ละตัวก็จะให้บริการในหน้าที่ ที่แตกต่างกันออกไป เช่น Friewall Proxy , Proxy caching server เป็นต้น โดยการให้บริการของ Proxy นั้นจะถูกร้องขอจากเครื่องลูกข่ายโดยใช้โปรแกรมเว็บราวเซอร์ หรือ โปรแกรม FTP Client
- เราได้ประโยชน์อะไรจาก proxy ?
- - ระบบการจัดการการร้องขอแบบ caching คือ เวบใดเคยมีการเรียกใช้จากเครื่องลูกข่ายภายในเครือข่ายแล้ว Proxy จะเก็บข้อมูลของเวบนั้นไว้ใน caching ของ Proxy
- - แล้วเมื่อมีการเรียกใช้อีกครั้งในภายหลังก็สามารถเรียกจาก caching ได้ทันทีโดยไม่ต้องเรียกจากเครื่องเซิร์ฟเวอร์ปลายทาง
- - ประหยัดเวลาในการถ่ายโอนข้อมูล web page
- - ประหยัด bandwidth ของเครือข่ายในการเข้าถึงข้อมูลใน caching
- - การทำงานอื่นๆบนเครือข่ายจะเร็วขึ้น
- Squid Proxy Server
- Squid เป็นโปรแกรม Proxy caching server ที่อยู่ในระบบปฏิบัติการ Linux การให้บริการของ Squid ซึ่งเป็น Web caching server นั้นคือ จะคอยรับคำร้องขอบริการจากเครื่องลูกข่าย และส่งผ่านไปยังเซิร์ฟเวอร์ปลายทางที่เหมาะสม ข้อมูลต่าง ๆ ที่ผ่านเข้ามาจะถูกสำเนาเก็บไว้ในหน่วยความจำแคช และดิสก์ ดังนั้นเมื่อมีการร้องขอข้อมูลซ้ำอีกในครั้งต่อมาจะสามารถนำข้อมูลในแคชมาให้บริการได้รวดเร็วกว่าการติดต่อไปยังเซิร์ฟเวอร์โดยตรง ช่วยให้ลดการใช้ช่องทางสื่อสารข้อมูลลงได้ นอกจากนี้ Squid ยังมีคุณสมบัติเป็น Firewall Proxy อีกด้วย
- อย่างไรก็ตาม Squid เป็นเพียง Web Only Cache หมายถึง จะทำงานกับโปรโตคอล HTTP โดยเฉพาะเท่านั้น จะไม่สามารถแคชข้อมูลจากโปรโตคอลอื่น ๆ เช่น RealAudio หรือ FTP ได้ ยกเว้นกรณีที่ FTP นั้นทำงานโดยโปรโตคอล HTTP ซึ่งมีเพียงส่วนน้อย และสำหรับโปรโตคอล SSL แล้ว Squid สามารถทำการแคชการบริการได้ การใช้งานที่ต้องเข้าสู่เว็บไซต์ที่ใช้ SSL เช่น เว็บไซต์บริการอีเมล์ฟรีต่าง ๆ จึงไม่มีปัญหาแต่อย่างใด
เนื้อเรื่อง (วิธีการ/รูปแบบการทำงาน)
การติดตั้ง Squid
การติดตั้ง Squid แบ่งได้ 2 แบบ
- การติดตั้งประเภท RPM
- การติดตั้งประเภทไฟล์ tar.gz
การติดตั้งประเภท rpm
- ถ้าในขณะติดตั้ง Linux ครั้งแรกนั้นได้เลือก service squid ไว้แล้วก็ไม่ต้องทำการติดตั้งใหม่ แต่ถ้ายังไม่ได้เลือกติดตั้งตั้งแต่ตอนแรกก็ให้ทำการติดตั้งโดย
- แบบ GUI
System setting ---> Add/Remove Aplication Server ---> Web server ---> detail ---> squid update แล้วใส่แผ่นเพื่อ install squid
- การติดตั้งแบบใช้ command line
1.ใสแผ่นดิสก์แผ่นที่ 1 2.mount ซีดีรอมด้วยคำสั่ง #mount /mnt/cdrom 3.เข้าไปยัง directory ของ RPM ด้วยคำสั่ง #cd /mnt/cdrom/RedHat/RPMS 4.ติดตั้งด้วยคำสั่ง #rpm -ivh squid.rpm
การติดตั้งจากไฟล์ประเภท tar.gz
1. ดาวน์โหลดโปรแกรม Squid จาก http://www.squid-cache.org ซึ่งควรเลือกเวอร์ชัน stable ที่ล่าสุด 2. ในที่นี้ผมดาวโหลดมาไว้ที่ /root ชื่อไฟล์เป็น /root/squid.tar.gz 3. ให้เปลี่ยนไดเร็คทอรี่ไปอยู่ที่ /root 4. แตกไฟล์ออกมาด้วยคำสั่ง : #tar xvfx squid.tar.gz 5. จากข้อ 3 จะมีการสร้าง directory ชื่อ squid ขึ้นมา ก็ให้เปลี่ยนตำแหน่งเข้าไปอยู่ในตำแหน่งดังกล่าวด้วยคำสั่ง : #cd squid 6.การ build และติดตั้งโปรแกรมให้ทำดังนี้ : #./configure --prefix=/usr/local/squid #make all #make install
หลังจากที่ได้ทำการติดตั้ง Squid เสร็จแล้ว จะได้ไฟล์ squid.conf ถ้าติดตั้งแบบ GUI ไฟล์จะอยู่ใน /etc/squid/squi.conf แต่ถ้า ติดตั้งแบบใช้ command line ไฟล์จะอยู่ที่ /usr/local/etc/squid/squid.conf
การ config squid หลังจากการติดตั้งเพื่อให้พร้อมสำหรับการใช้งาน
การ config สำหรับการติดตั้งแบบ RPM
เข้าไปที่ /etc/squid/squid.conf แล้ว config จากไฟล์ text editor ด้วยคำสั่ง
#sudo vi /etc/squid/squid.conf
เพื่อให้เครื่องลูกข่ายสามารถใช้งาน proxy server ได้โดยเปลี่ยนแปลงในบรรทัดที่
#acl our_networks src 192.168.1.0/24 192.168.2.0/24 #http_access allow our_networks
ให้ทำการใส่ค่า (หรือแก้ไข) ค่า network ที่ไช้งานในบรรทัด acl ซึ่งค่า default เป็น 192.168.1.0/24 192.168.2.0/24 ให้เป็นค่า network ของตัวเองซึ่งถ้ามีหลาย network ก็ให้ใช้ space แยกระหว่างกัน
จากนั้นก็ให้เอาเครื่องหมาย # ของทั้งสองบรรทัดออกซึ่งอาจจะเป็นดังนี้
acl our_networks src 192.168.1.0/24 192.168.2.0/24 http_access allow our_networks
จากนั้นเปิด seervice squid ด้วยคำสั่ง
#service squid start
หรือถ้า service มีการ start แล้วก็ให้ใช้คำสั่ง
#squid -k reconfigure
เพื่อให้การคอนฟิกที่ทำใหม่มีผล
การ config สำหรับการติดตั้งจากไฟล์ประเภท tar.gz
ให้เอาเครื่องหมาย # ออกจากหน้าข้อความต่อไปนี้
cache_peer, never_direct/always_direct cache_dir /usr/local/squid/var/cache 100 16 256 acl, http_access, icp_access cache_mgr visible_hostname
หลังจากนั้นให้ทำการแก้ไขข้อความต่อไปนี้โดยการใส่หมายเลข IP address ใหม่ของเครือข่ายลงไปแทน หรือ ถ้าต้องการให้ใช้งานได้ทันทีก็ไม่ต้องแก้ไขก็ได้แต่ระบบจะตั้งเป็นค่า defualt ที่ทำงานเฉพาะในเครื่องที่ไม่ได้เป็นเครือข่ายเท่านั้น
#acl our_networks src 192.168.1.0/24 192.168.2.0/24 #http_access allow our_networks
แต่ต้องเปลี่ยนค่า network ในบรรทัด acl ให้ตรงกับ network ของตัวเอง ซึ่งถ้ามีหลาย network ก็ให้คั่นด้วย space
เมื่อแก้ไขไฟล์ squid.conf เสร็จแล้วก็ให้ทำการสร้าง cache และตำแหน่งของ cache โดยตำแหน่งของ cache จะอยู่ที่ /usr/local/squid/var/cache โดยไดเร็คทอรี่ cache ในตอนนี้จะยังไม่มี แต่จะถูกสร้างขึ้นเมื่อเรารันคำสั่งต่อไป
#/usr/local/squid/sbin/squid -z
เนื่องจากคำสั่ง squid -z จะมีการสร้าง cache ภายใต้ /etc/local/squid/var ดังจะสามารถสร้างได้ก็ต่อเมื่อตำแหน่งนี้มี permission ที่สามารถให้ทำหาร write ได้ ฉะนั้นก่อนที่จะใช้คำสั่ง squid -z ก็ต้องทำการเปลี่ยน permision ของ /etc/usr/squid/var ให้สามารถ write ได้เสียก่อน ซึ่งถ้ากำหนด permission ไม่ถูกต้องก็อาจจะมีการฟ้องว่า
FATAL: Failed to make swap directory /usr/local/squid/var/cache: (13) Perssion denied
หรือบางทีอาจจะมีปัญหาเรื่องของ visible_hostname ก็ต้องให้เข้าไปแก้คอนฟิกในส่วนของ visible_hostname ด้วยการใส่ชื่อ hostname เข้าไป สำหรับการกำหนด permission ก็อาจใช้คำสั่งดังนี้
#chmod 777 /etc/usr/local/var
แล้วทำการสร้าง cache ด้วยคำสั่ง :
#/usr/local/squid/sbin/squid -z
ให้ลองเข้าไปดูที่ตำแหน่งของ /usr/local/squid/var ดูนะครับจะเห็นว่าจะเกิดไดเร็คทอรี่ cache (และมี directoty ย่อยภายใต้ cache อีกมากมาย)
start service squid ด้วยคำสั่ง :
#/usr/local/squid/sbin/squid
การใช้งาน squid หลังจากการติดตั้งแล้ว
config file /etc/squid/squid.conf
#http_port 3128
แก้เป็น
http_port 3128
3128 เป็น port ที่ต้องการ อาจเปลี่ยน เป็น port อะไรก็ได้
#icp_port 3130
แก้เป็น
icp_port 3130 #cache_mem 8 MB
แก้เป็น
cache_mem 256 MB # RAM หาร 3
#cache_dir ufs /var/spool/squid 100 16 256
แก้เป็น
cache_dir ufs /var/spool/squid 1000 16 256 #cache_access_log /var/log/squid/access.log
แก้เป็น
cache_access_log /var/log/squid/access.log
#cache_access_log /var/log/squid/cache.log
แก้เป็น
cache_access_log /var/log/squid/cache.log
#cache_access_log /var/log/squid/store.log
แก้เป็น
cache_access_log /var/log/squid/store.log
เพิ่ม บรรทัดนี้ต่อท้าย acl ที่ default มากับ โปรแกรม acl my_networks src 192.168.0.0/24 #network ของเรา เพิ่ม บรรทัดนี้ไว้ก่อนหน้า http_access ที่ default มากับ โปรแกรม
http_access allow my_networks http_access deny all #บรรทัดนี้แหละ ที่ต้องแก้ แก้เเป็น http_access allow all
จากนั้นทำการ save file สร้างไฟล์ 3 ไฟล์ คือ access.log , cache.log , store.log เข้าไปที่ directory /var/log/squid/ ใช้คำสั่ง
#touch access.log #touch store.log #touch cache.log
เปลี่ยนสิทธิ์และเจ้าของ
#chmod 755 /var/log/squid/* #chown squid.squid /var/log/squid/*
สร้าง cache
#squid -z
กำหนดให้ squid start ทุกครั้งเมื่อเปิดเครื่อง
#squid chkconfig on
สั่งให้ squid ทำงาน
# service squid restart
จากนั้นก็ทดลอง ใส่ proxy ให้กับลูกข่าย
สรุป
Squid เป็นโปรแกรม Proxy server ที่มีในระบบปฏิบัติการ Linux ซึ่งเป็ฟนโปรแกรมแบบ open source ไม่เสียค่าใช้จ่ายในการใช้งานซึ่งในตัวของโปรแกรม squid เองแล้วเป็นได้ทั้ง proxy caching แล้วยังสามารถเป็น firewall ที่สามารถ block เวบไซต์ที่เราไม่ต้องการจะให้เคือข่ายภายในของเราเข้าได้อีกด้วย การ config squid ยังมีอีกมากมาย ที่นำเสนอนี้เป็นเพียงการ config ขั้นพื้นฐานที่สามารถทำให้ใช้งานอย่างง่ายๆได้ สำหรับผู้ที่สนใจจะศึกษาเพิ่มเติมสามารถ download Squid configuration manual ได้ที่
เอกสารอ้างอิง และเว็บลิงค์
All about Squid
http://micro.se-ed.com/content/mc205/MC205_181.asp
http://www.ku.ac.th/~jane/faq/top5_3.htm
http://www.thailinux.com/1999/04/18/topic1.html
http://www.kko.moph.go.th/reloaded/_html_/wbquestion.asp?QID=83&Text=


