เขียนบน 22/08/2012 โดย ครูชาตรี
สภาวะแวดล้อม
-Ubuntu Server 12.04LTS AMD 64 bit
-squid 3
-isc-dhcp-server
1.ติดตั้ง ubuntu ดาวน์โหลดทีนี่ หรือ คลิกที่นี่ จากนั้นสั่ง update
#sudo apt-get update
2.ตั้งค่า การ์ดแลน
eth0 เชื่อมต่อกับภายนอก ip server 122.154.157.104
eth1 เชื่อมต่อกับ LAN ภายใน ip LAN 192.168.0.1
#nano /etc/network/interfaces
////// เพิ่มคำสั่งเข้าไป set ค่าตามนี้
##
auto eth0
iface eth0 inet static
address 122.154.157.104
netmask 255.255.255.240
gateway 122.154.157.97
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.240.0
broadcast 192.168.15.255
##
รีสตาร์ทเน็ตเวิร์ค
#sudo /etc/init.d/networking restart
# nano /etc/sysctl.conf
เอาเครื่องหมาย # หน้าบรรทัดนี้ออก
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1 // เอาเครื่องหมาย # ออก
เพิ่มกฏใน iptables ให้เลือกวิธีการใดวิธีการหนึ่งดังต่อไปนี้
วิธีที่1
#nano /etc/rc.local
เพิ่มค่าดังนี้
# By default this script does nothing.
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#iptables -t nat -A PREROUTING -i eth1 -p tcp -dport 80 -j REDIRECT –to-port 8080
iptables -t nat -F
iptables -t mangle -F
iptables -t filter -F
iptables -X
iptables -A FORWARD -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -s 192.168.0.0/20 -o eth0 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 3128
iptables -A FORWARD -d 192.168.0.0/20 -m state –state ESTABLISHED,RELATED -i eth0 -j ACCEPT
iptables -t nat -I PREROUTING -i eth1 -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 3128
exit 0
ต่อไป
#nano /home/admin1/net.sh
เพิ่มข้อความนี้เข้าไป
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -t mangle -F
iptables -t filter -F
iptables -X
iptables -A FORWARD -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -s 192.168.0.0/20 -o eth0 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 3128
iptables -A FORWARD -d 192.168.0.0/20 -m state –state ESTABLISHED,RELATED -i eth0 -j ACCEPT
iptables -t nat -I PREROUTING -i eth1 -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 3128
จากนั้นบันทึกไฟล์
เข้าไปใน /home/admin1 ——> admin1 คือ directoryของ user admin1
#chmod a+x net.sh
#./net.sh
วิธีที่2
หรือแบบนี้ใน etc/rc.local ก็ได้ครับสั้นดี ( หากทำวิธีการที่ 1 อย่าลืมลบตัวเดิมในrc.local ออกก่อนนะครับ )
#echo 1 > /proc/sys/net/ipv4/ip_forward
#nano /etc/rc.local แล้วเพิ่มข้อความ 2 บรรทัดนี้ก่อน exit 0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 3128
ต่อไป ติดตั้ง squid3
#sudo apt-get install squid3
#nano /etc/squid3/squid.conf
# แก้ไขค่าต่าง ๆ ดังนี้
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/20 # RFC1918 possible internal network
#acl localnet src fc00::/7 # RFC 4193 local private network range
#acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
#######Block Website By Chatee somkanei
acl time_block time M T W H F 9:00-18:00
acl time_block time A S 9:00-12:00
acl blockdomain dstdom_regex “/etc/squid3/baddomain.txt”
http_access deny blockdomain time_block
acl blockword url_regex “/etc/squid3/badword.txt”
http_access deny blockword time_block
acl blockfile url_regex “/etc/squid3/badfile.txt”
http_access deny blockfile time_block
acl time_acl time M T W H F 9:00-18:00
acl time_acl2 time S A 9:00-12:00
#reply_body_max_size 20000 KB time_acl
#reply_body_max_size 20000 KB time_acl2
http_port 3128 transparent
cache_dir ufs /var/spool/squid3 5000 16 256
access_log /var/log/squid3/access.log squid
cache_store_log /var/log/squid3/store.log
cache_log /var/log/squid3/cache.log
cache_mem 512 MB
http_access allow localnet ( เอาเครื่องหมาย # ออก )
######
ต่อไป สร้งไฟล์ baddomain.txt ,badword.txt,badfile.txt
#touch /etc/squid3/baddomain.txt
#touch /etc/squid3/badword.txt
#touch /etc/squid3/badfile.txt
#chmod 777 /etc/squid3/baddomain.txt ( เพิ่ม .xxxxx.com,.japan18.comโดยให้อยู่คนละบรรทัด)
#chmod 777 /etc/squid3/badword.txt ( เพิ่มคำไม่พึงประสงค์ เช่น คำลามกต่าง ๆ โดยให้อยู่คนละบรรทัด )
#chmod 777 /etc/squid3/badfile.txt ( เพิ่มประเภทไฟล์ที่ไม่ให้ดาวน์โหลด \.dat$ \.avi$ โดยให้อยู่คนละบรรทัด )
เพิ่มเข้ารายชื่อเว็บที่ต้องการบล็อกลงในในไฟล์ดังกล่าว
ตั้งเวลาเครื่องให้ตรง โดยใส่ให้ตรงกับปัจจุบัน
#sudo date 120622432012.55
อธิบาย
12 =month
06=day
22=hour
43=minute
2012=year
.55=seconds
จบคำอธิบาย
ต่อไปกำหนดสิทธิ์ไฟล์
#sudo chown -R proxy:proxy /var/log/squid3/
#sudo chown proxy:proxy /etc/squid3/squid.conf
#sudo /etc/init.d/squid3 restart
สั่งrun squid
#sudo /etc/init.d/squid3 restart
ไปทดสอบที่เครื่องลูกข่าย เข้าเว็บ google แล้วลอง search ข้อความที่ block ว่าเข้าดูได้หรือไม่ ( อย่าลืมเช็คเวลา block ใน squid.conf นะครับ )
ติดตั้ง dhcp
#sudo apt-get install isc-dhcp-server
#nano /etc/dhcp/dhcpd.conf
กำหนดค่าดังนี้
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.0.0 netmask 255.255.240.0 {
range 192.168.0.20 192.168.15.254;
option routers 192.168.0.1;
option domain-name-servers 202.129.27.133;
option domain-name”rc.com”;
option broadcast-address 192.168.15.255;
}
นอกนั้นปิดหมด
# nano /etc/default/isc-dhcp-server
กำหนดค่าดังนี้
INTERFACES=”eth1″
แก้การ rotate log
#nano /etc/logrotate.conf
แก้ไขค่าดังนี้
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 14
รีสตาร์ท dhcp
sudo service isc-dhcp-server restart
————————————————————————-
สั่ง reboot server
#reboot