การติดตั้ง Squid ให้รองรับการ Authen user จาก mysql
หลังจากที่เราติดตั้ง FreeBSD + Apache + MySQL + PHP + NAT เรียบร้อยแล้ว ลองทดสอบว่า ลูกข่าย
ออกเน็ทได้หรือเปล่า เมื่อเป็นไปตามที่คาดหมาย ดำเนินการต่อไปเลยครับ
ทำการติดตั้ง package นี้
# cd /usr/ports/databases/p5-DBI
# make install clean
เสร็จแล้ว ตามด้วย package นี้
# cd /usr/ports/databases/p5-DBD-mysql50
# make install clean
2. แตกไฟล์ tar.gz ด้วยคำสั่ง
# tar xvfz squid-2.7กดปุ่มแท็บ 1 ครั้ง จะได้เป็น tar xvfz squid-2.7.STABLE4.tar.gz
# cd squid-2.7 กดปุ่มแท็บ 1 ครั้ง
3. ติดตั้ง squid-2.7.STABLE4 (option delaypools = ทำให้เวลา download ของลูกข่ายช้าลง หรือจำกัด bandwidth arp = เอาไว้ log เครื่อง โดยล็อกได้ถึงระดับ mac address ของ การ์ดแลนด์เลยแหละ และตัวสุดท้ายคือ basic auth helper=DB ตัวนี้แหละเป็น Authentication โดย อาศัยเจ้า MySQL)
# ./configure --prefix=/usr/local/squid --enable-delay-pools --enable-arp-acl --enable-basic-auth-helpers=DB
# make all; make install
ทำการแก้ไขไฟล์ squid.conf ทีละบรรทัด
# pico /usr/local/squid/etc/squid.conf
// ค้นหาข้อความกดปุ่ม Ctrl +w แล้วพิมพ์ข้อความที่ต้องการค้นหา เพื่อความสะดวกและรวดเร็วครับ
http_port 8080
cache_dir ufs /var/cache 2500 16 256 // ตำแหน่งเก็บ cache ไฟล์ต่าง ๆ
access_log /var/log/access.log squid // เปลี่ยนตำแหน่งเก็บ log file ไว้ที่ /var/log
cache_log /var/log/cache.log
cache_store_log /var/log/store.log
เพิ่ม
acl mynetwork src 192.168.xxx.0/24 // เลขไอพีภายในที่ต้องการกำหนด LAN ใบที่ 2 ครับ mynetwork เปลี่ยนชื่อ acl ได้ตามต้องการ
# ส่วนนี้จะอยู่ประมาณต้นๆ ของ squid.conf ทางที่ดี ssh เข้าเครื่อง แล้ว copy ไปวางเลย ชัวร์กว่า
auth_param basic program /usr/local/squid/libexec/squid_db_auth --user squid --password passwd --plaintext --persist
auth_param basic children 5
auth_param basic realm ตั้งชื่อตามที่ต้องการจะปรากฎเวลาให้ใส่รหัส เช่น ICT Center
auth_param basic credentialsttl 1 minute
auth_param basic casesensitive off
authenticate_ttl 1 hour
authenticate_ip_ttl 60 seconds
ค้นหาคำว่า acl CONNECT method CONNECT
แล้วเพิ่มบรรทัดด้านล่างต่อไปดังนี้ สองบรรทัดนี้ กำหนดให้ใช้ 1 user 1 ip เท่านั้น
acl onlyonce max_user_ip -s 1
http_access deny onlyonce
acl mynetwork src 192.168.200.0/24 //เปลี่ยน ค่า network เป็นของตัวเอง
acl auth_user proxy_auth REQUIRED //auth_user เปลี่ยนชื่อได้
้http_access allow auth_user
http_access allow mynetwork
#บันทึก
แก้ไขเสร็จแล้วบันทึกไฟล์ squid.conf และออกจากการแก้ไขไฟล์ squid.conf
5. สร้างฐานข้อมูล squid และเพิ่มผู้ใช้ชื่อ squid รหัสผ่าน passwd ดังนี้
# mysql -u root -p''พิมพ์รหัสผ่าน root mysql''
mysql> show databases squid; // แสดงฐานข้อมูล squid ว่าโปรแกรมสร้างให้หรือยัง ถ้ายังสร้างใหม่ด้วยคำสั่ง create database squid;
mysql> grant all on squid.* to squid@localhost identified by ''passwd'';
เพิ่มสิทธิผู้ใช้ชื่อ squid รหัสผ่าน passwd ให้ใช้งานฐานข้อมูล squid ได้
mysql> use squid; // เรียกใช้ฐานข้อมูล squid
คัดลอกคำสั่งสร้างตารางต่อไปนี้ไปวางได้เลยครับ
CREATE TABLE passwd (
id int(5) NOT NULL auto_increment,
`user` varchar(30) NOT NULL default '''',
`password` varchar(35) NOT NULL default '''',
enabled tinyint(1) NOT NULL default ''1'',
fullname varchar(60) default NULL,
`comment` varchar(60) default NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=tis620 AUTO_INCREMENT=0 ;
คัดลอกต่อไปนี้ไปวางได้เลยครับ
insert into passwd values(''testuser'',''test'',1,''Test User'',''for testing purpose'');
ทดสอบว่า squid ติดต่อ mysql ได้หรือยัง # /usr/local/squid/libexec/squid_db_auth --user squid --password passwd --plaintext --persist
พิมพ์ testuser test
OK แสดงว่า squid ติดต่อกับ mysql ได้แล้วครับ
6. สร้างห้องเก็บ Cache และ log file ต่าง ๆ
# mkdir /var/log/
# cd /var/log
# touch /var/log/access.log
# touch /var/log/cache.log
# touch /var/log/store.log
# chmod 777 *
# mkdir /var/cache
# chmod 777 /var/cache
# chown nobody:nogroup /var/cache
# /usr/local/squid/sbin/squid -z
จะพบข้อความประมาณนี้ แสดงว่า สร้างห้อง cache สำเร็จครับ
2008/06/09 20:54:23| Creating Swap Directories
# /usr/local/squid/Bin/RunCache & // สั่ง Run Squid
# ps -ax|grep squid
9378 ?? Is 0:00.01 /usr/local/squid/sbin/squid
9380 ?? S 0:03.84 (squid) (squid)
9381 ?? Is 0:00.37 /usr/bin/perl /usr/local/squid/libexec/squid_db_auth
9382 ?? Is 0:00.37 /usr/bin/perl /usr/local/squid/libexec/squid_db_auth
9383 ?? Is 0:00.37 /usr/bin/perl /usr/local/squid/libexec/squid_db_auth
9384 ?? Is 0:00.37 /usr/bin/perl /usr/local/squid/libexec/squid_db_auth
9385 ?? Is 0:00.36 /usr/bin/perl /usr/local/squid/libexec/squid_db_auth
# netstat -an |grep 8080 tcp4 0 0 *.8080 *.* LISTEN แสดงว่า squid ทำงานสมบูรณ์แล้ว
ลองทดสอบตั้งค่า Proxy Server ที่เครื่องลูกข่าย จากนั้นก่อนจะเข้าใช้งานอินเตอร์เน็ตทุกครั้งจะพบกรอบวินโดว์ให้ป้อนข้อมูลผู้ใช้งานก่อน จึงจะอนุญาตให้ใช้อินเตอร์เน็ตได้
การตั้งค่า Proxy server ไปที่เมนู Tools => Internet Options ... => คลิกแท็บ Connections => คลิกปุ่ม LAN Settings ... แล้วตั้งค่า proxy เป็น 192.168.100.1 คือ เลขไอพีการ์ดแลนวงในครับ (LAN ใบที่ 2) port 8080 น๊ะ
#ตัวสุดท้าย กลับไปที่ FreeBSD น๊ะ
ใช้ ipfw เพื่อบังคับให้ user ที่อยู่ในวง Lan ของเรา ต้องผ่าน proxy เท่านั้น ดังนี้
#pico /etc/rc.local
แล้วพิมพ์ตามนี้ (ไอพีไฟล์วอล ที่ 1100 ส่งมาที่ 192.168.xxx.1 port 8080 ถ้ามีการร้องขอ)
ipfw add 1100 fwd 192.168.xxx.1:8080 tcp from 192.168.xxx.0/24 to any 80
1 ความคิดเห็น:
ขอบคุณที่แวะไปเยี่ยม ไปชม และถึงขั้นทำ links มาให้
ดีครับ งานที่ทำมา ดีแล้ว ทำออกมาเถอะ
มะขาม ฅินเดินดน
มะไฟ ฅนเหลิงฟ้า
แสดงความคิดเห็น