Proxy Server คืออะไร
คือเครื่องเซิร์ฟเวอร์
สำหรับใช้เก็บข้อมูลชั่วคราวของข้อมูลที่ถูกเรียกใช้บ่อยครั้ง
ของผู้ใช้อินเทอร์เน็ต ในกลุ่มบริเวณเดียวกัน
นอกจากนั้นยังจัดการอื่นๆอีกเช่นจัดการหาข้อมูลมาเก็บไว้เพื่อให้เครื่องผู้ใช้บริการได้นำไปใช้
เป็นต้น กล่าวโดยสรุปว่าเป็นเครื่องแม่ข่าย ที่ทำหน้าที่เป็นเสมือน
ที่เก็บข้อมูลของเครื่องเว็บเซิร์ฟเวอร์ต้นฉบับจริง
เพื่อให้เครื่องผู้ใช้บริการได้เข้าถึงข้อมูลได้เร็วขึ้น
โดยผู้ใช้บริการต้องกำหนดค่าใน เว็บเบราว์เซอร์ส (Web browsers )
ให้ใช้บริการผ่านเครื่อง proxy server นี้
โดยแท้จริงแล้ว Proxy server จะเป็นเพียงแค่
เครื่องที่ทำหน้าที่เป็นตัวจัดหาข้อมูลที่เครื่องผู้ใช้บริการต้องการใช้
มาให้ และ Cache server
เป็นเครื่องที่ทำหน้าที่จัดเก็บข้อมูลที่เครื่องลูกหรือเครื่องผู้ใช้บริการ
เรียกใช้ไว้เพื่อใช้ในครั่งต่อไป แต่ในที่นี้จะใช้คำว่า Proxy server แทน
Proxy/Cache Server ดังกล่าวมาแล้วข้างต้น
หลักการทำงานของ Proxy Server
เมื่อผู้ใช้บริการอินเทอร์เน็ตเรียกดูขัอมูลจากเวบไซต์ โดยผ่าน Proxy
Server สมมติว่า ผู้ใช้บริการอินเทอร์เน็ต
เรียกดูข้อมูลเป็นครั้งแรก Proxy Server จะทำการตรวจสอบว่า
มีข้อมูลดังกล่าวได้มีเก็บไว้ที่ตัวมันแล้วหรือไม่
• ถ้าไม่มีข้อมูลดังกล่าว เครื่อง Proxy Server จะทำการติดต่อไปยัง
เครื่องเซิร์ฟเวอร์ปลายทาง
ต้นฉบับจริงเพื่อเรียกข้อมูลดังกล่าวมา และจะนำส่งไปให้ผู้ใช้บริการ
ในขณะที่ยังเก็บข้อมูลนั้นไว้ที่ตัวเพื่อเอาไว้ใช้ในครั้งต่อไป
• ถ้ามีข้อมูลอยู่แล้ว เครื่อง Proxy Server
จะทำการตรวจสอบว่าข้อมูลที่มีอยู่แล้วนั้น
เป็นข้อมูลที่มีอยู่ตรงกับที่มีอยู่ที่เครื่องเซิร์ฟเวอร์ปลายทางต้นฉบับหรือไม่
• ถ้ามีข้อมูลตรงกัน Proxy Server
จะส่งข้อมูลที่เก็บไว้แล้วนั้นไปให้ผู้ใช้บริการทันที
• แต่ถ้าข้อมูลไม่ตรงกัน เครื่อง Proxy Server
ก็จะทำการติดต่อไปยังเครื่องเซิร์ฟเวอร์ปลายทาง
เพื่อนำข้อมูลมาใหม่และส่งไปให้ผู้ใช้บริการ
พร้อมทั้งเก็บไว้ใช้ในครั้งต่อไปด้วย
ข้อดีของ Proxy Server
• เครื่องไคล์เอ็นท์สามารถเรียกดูข้อมูลจากเว็บไซต์ได้รวดเร็วขึ้น
เพราะข้อมูลบางส่วนจะดึงจากเครื่อง
Proxy Server แทนที่การดึงจากเครื่องเซิร์ฟเวอร์ปลายทางต้นฉบับโดยตรง
• ประหยัดเวลาในการท่องอินเทอร์เน็ต เนื่องจากเครื่อง Proxy Server
สามารถที่จะจัดเก็บข้อมูลเว็บไซต์ได้มากจึงเหมือนกับท่องอินเทอร์เน็ต
ดูเว็บไซต์จากภายนอก
• ลดความหนาแน่น (Bandwidth) ในการติดต่ออินเทอร์เน็ตของผู้ใช้บริการ
เพราะผู้ใช้บริการที่เรียกใช้ข้อมูลที่ซ้ำๆ กันจำนวนมาก
จะดึงข้อมูลจากเครื่อง Proxy Server
โดยไม่ต้องติดต่อกับเครื่องเซิร์ฟเวอร์ปลายทาง พร้อมกันจำนวนมาก
• เครื่องผู้ใช้บริการไม่จำเป็นต้องมี IP จริง
ทั้งนี้เพราะการติดต่อกับเครื่องเซิร์ฟเวอร์ปลายทางโดยตรงที่อยู่บนอินเตอร์เน็ต
จำเป็นที่เครื่องผู้ใช้บริการจะต้องมี IP จริงด้วยเช่นกัน
การเซตอัพ Proxy Server
การคอนฟิกต่อไปนี้
ได้ตั้งสมมุติฐานว่าเครื่องลูกข่ายหรือเครื่องไคลเอ็นท์ที่จะต่อเข้ามาใช้
proxy server ที่เรากำลังคอนฟิกอยู่นี้ มีไอพีอยู่ในวง 172.16.0.1/22
นั่นคือมีไอพีตั้งแต่ 172.16.0.1 ถึง 172.16.3.254 มี subnetmask เป็น
255.255.252.0
จะมีการติดตั้งได้หลายวิธี แต่จะใช้วิธีที่ง่ายและใช้งานได้เต็มที่
มีขั้นตอนการเซ็ตอัพประกอบด้วย 2 ขั้นตอน ดังนี้
1.
ตรวจสอบโปรแกรม Squid
2. กำหนดค่าต่าง
ๆ ที่จำเป็นใน Squid.conf
โดยในระบบยังไม่ได้มีการติดตั้งโปรแกรม squid เอาไว้ก่อน
ให้ทำการติดตั้งใช้คำสั่ง
sut@localhost:~$ sudo apt-get install squid3
ระบบจะทำการดาวน์โหลดโปรแกรมและทำการติดตั้ง เมื่อระบบติดตั้งโปรแกรม
squid เรียบร้อยแล้วให้แก้ไขแฟ้ม /etc/squid3/squid.conf โดยใช้คำสั่ง
sut@localhost:~$ sudo gedit /etc/squid3/squid.conf
จากนั้นโปรแกรมแก้ไขข้อความ gedit จะรันขึ้นมาพร้อมกับ code ของ squid
ให้ทำการแก้ไขค่าต่าง ๆ ของระบบ ดังนี้
* ค้นหาตัวแปร http_port เพื่อตั้งค่าใหม่
ค่า default คือ http_port เป็น
3128 อยู่แล้ว ไม่ต้องทำอะไรอีก
หากใช้ port อื่นเช่น 8080
ก็เปลี่ยนให้เป็น http_port 8080
* ค้นหาตัวแปร http_access เพื่อตั้งค่าใหม่
ตัวอย่างต้นฉบับเดิมคือ #http_access
allow localnet
แก้ไขใหม่เอาเครื่องหมาย #
* ค้นหาบรรทัด #acl localnet src 192.168.1.0/24
นำเครื่องหมาย # ออก และกำหนด src เป็น
172.16.0.0/22 แทน
*(172.16.0.0/22)
หาได้จากการใช้คำสั่งดังนี้ $ ipcalc 172.16.0.1 255.255.252.0
start squid ใช้คำสั่งดังนี้
sut@localhost:~$ sudo /etc/init.d/squid3 start
Starting Squid HTTP proxy: squid.
ถ้าไม่สามารถ start ได้ให้ลองใช้คำสั่ง
sut@localhost:~$ sudo /etc/init.d/squid3 stop
ดูก่อน เพราะว่า service อาจจะทำงานอยู่ทำให้ไม่สามารถ start อีกครั้งได้
วิธีการ block เว็บไม่พึงประสงค์ด้วย Squid มี 2 วิธีคือ กำหนดที่
Squid acl และการติดตั้ง Squid Guard
-------------------- Squid acl
---------------------
วิธีการ block
เว็บที่ไม่พึงประสงค์ทั้งหมดด้วย acl ทำได้ดังนี้
1. พิมพ์บัญชีดำ รายชื่อเว็บที่ไม่ต้องการให้เข้าไปไฟล์ (ในที่นี้สมมติ)
block.txt มีข้อความ
#<=================>
http://www.sexy.com/
http://linux.sut.ac.th
http://......................ฯลฯ
<=================>
แล้วเก็บไว้ที่ /etc/squid3/
2. แก้ไขไฟล์ squid.conf ในหัวส่วนต่อไปนี้ acl และ http_access
#<==================>
acl lockschool url_regex '/etc/squid3/block.txt' ( บรรทัดนี้
เอาไว้บนสุดของ acl ...... เลยนะครับ)
http_access deny lockschool ( บรรทัดนี้เอาไว้บนสุดของ
http_access.........)
<====================>
3. เครื่องลูกข่ายทุกเครื่องให้ fix IP คือกำหนดไอพีตายตัวไว้
เพราะจะทำให้ง่ายต่อการตรวจสอบภายหลัง
หมายเหตุ
'lockschool' เป็นการตั้งชื่อ acl (ตั้งเป็นชื่ออะไรก็ได้ตามถนัด)
แต่เวลาอ้างใน http_access deny ก็ต้องอ้างตามชื่อที่เราตั้งไว้
บัญชีรายชื่อเวบไม่พึงประสงค์เพิ่มลงไนไฟล์ block.txt ได้ตลอดเวลา
------------------------ Squid
Guard --------------------
สำหรับ SquidGuard ตัวนี้เป็นนำฐานข้อมูล .db
มาใช้เก็บเว็บที่ไม่ต้องการและ
สามารถเรียกตรวจสอบเว็บที่มีอยู่ในฐานข้อมูลอย่างรวดเร็ว
ซึ่งจะแตกต่างจากการใช้การ block เก็บในไฟล์
ทั้งนี้เพราะถ้ามีรายชื่อจำนวนมากการตรวจสอบจะใช้เวลานานมากขึ้น
มาดูกันว่าการลงแบบนี้มีขั้นตอนอย่างไร
1. ติดตั้ง squidGuard
sut@localhost:~$ sudo apt-get install squidguard
2. แก้ไขไฟล์ squid.conf
sut@localhost:~$ sudo gedit /etc/squid3/squid.conf
เพิ่มบรรทัดต่อไปนี้
url_rewrite_program /usr/bin/squidGuard –c /etc/squid/squidGuard.conf
3.แก้ไขไฟล์ /etc/squid/squidGuard.conf ให้มีข้อมูลดังนี้
dbhome /var/lib/squidguard/db
logdir /var/log/squid
time workhours {
weekly mtwhfa 08:00-12:00
weekly mtwhfa 13:00-16:30
}
src admin {
}
dest streaming {
domainlist
streaming/domains
urllist streaming/urls
log
streaming.log
within workhours
}
acl {
admin {
pass any
}
default {
pass
!streaming any
redirect
http://www.google.com/
}
}
4. สร้างไดเรคทอรีที่กำหนดไว้
sudo mkdir /var/lib/squidguard/db/streaming
5. สร้างไฟล์ที่เก็บ url ของเว็บที่ต้องการ block
sudo gedit /var/lib/squidguard/db/streaming/domains
www.youtube.com
radio.sanook.com
www.youdumv.com
6. กำหนดสิทธิ์ให้กับไฟล์ที่สร้าง
sudo chown -R proxy:proxy /var/lib/squidguard/db
7. ทำการ rebuild ฐานข้อมูล
sudo squidGuard -C all
8. สั่งให้ squid เริ่มทำงานใหม่
sudo /etc/init.d/squid3 restart
หมายเหตุ ทุกครั้งที่ทำการแก้ไข config ไฟล์ ควรจะต้องมีการ รัน service
ใหม่ทุกครั้ง
วิธีการกำหนดรายชื่อผู้ใช้และรหัสผ่าน
1. สร้าง username และ password โดยใช้คำสั่งนี้
# sudo htpasswd -c /etc/squid3/passwd username
New password:
Re-type new password:
Adding password for user user1
และกำหนดให้ squid สามารถอ่านไฟล์ passwd ได้โดยใช้คำสั่งดังนี้
# sudo chmod o+r /etc/squid3/passwd
2. แก้ไขไฟล์ /etc/squid3/squid.conf
ให้เปิดระบบการใช้งานการใช้รหัสผ่านด้วย nsca_auth
# sudo gedit /etc/squid3/squid.conf
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd
แก้ไขและเพิ่มส่วนของ ACL ดังนี้
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
เริ่มทำงาน squid ใหม่โดยใช้คำสั่งดังนี้
# sudo /etc/init.d/squid3 restart
สามารถดู logs ไฟล์ได้ที่ /var/log/squid/access.log
(ภายในไฟล์สามารถดูได้ว่ารายชื่อผู้ใช้ได้เข้ามาใช้งานเวลาใดได้)