การติดตั้งและใช้งาน Squid proxy server

จาก Research 2549, สารานุกรมฟรี

<<< BACK

เรื่อง การติดตั้งและการใช้งาน 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

เราได้ประโยชน์อะไรจาก 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

การติดตั้ง 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=

Personal tools