ทำระบบเซอเวอร์(Proxy server) อินเตอร์เน็ตไว้ใช้ในโรงเรียน ด้วย Ubuntu + ISC-Dhcp-server+ Squid3 กับการ์ดแลน 2 ตัว
ทำระบบเซอเวอร์(server) อินเตอร์เน็ตไว้ใช้ในโรงเรียน ด้วย Ubuntu + ISC-Dhcp-server+ Squid3 กับการ์ดแลน 2 ตัว
ต่อไปนี้จะเป็นการทำระบบเซอร์เวอร์อินเตอร์เน็ต ให้นักเรียนได้ใช้งานอินเตอร์เน็ตในโรงเรียนแบบง่ายๆ ไม่ต้องมีระบบระบุตัวตน ซึ่งอาจจะดูเหมือนว่า เราไม่ได้เก็บข้อมูลอะไร แต่เราก็มี log เล็กของเราเองซึ่งได้จากตัว Squid ถ้าไม่ตรงกับวัตถุประสงค์ของท่านก็ต้องขออภัย อิ อิ
ผมจะไม่พูดถึงเรื่องของการติดตัง Ubuntu Server นะครับเพราะคิดว่าทุกท่านน่าจะติดตั้งเป็นแล้วแหละ ถ้ายังไม่เป็นสามารถหาอ่านได้จากเวป WIKI ทั่วไปได้ครับ
ในระบบที่จะกล่าวต่อไปนี้ เราจะใช้ Ubuntu Server รุ่นไหนก็ได้ แต่ที่ผมได้ลองใช้และทำงานได้ก็คือ Ubuntu Server 14.04
isc-dhcp-server คือ โปรแกรมที่ใช้ในการแจก IP address แบบ DHCP ให้กับเครื่องลูกที่จะใช้งานอินเตอร์เน็ต
Squid3 ตัวนี้จะทำหน้าที่เป็น Proxy Server ไว้เก็บข้อมูลเวป การเรียกใช้หน้าเวปเพื่อความรวดเร็วมากยิ่งขึ้น ตามหลักการของ Proxy
สรุปต้องมีซอฟแวร์ดังนี้
1. Ubuntu Server
2. Isc-dhcp-server
3. Squid3
4. Router แจก IP แบบ DHCP หมายเลข IP gateway 10.10.10.254
1. ดำเนินการติดตั้ง Ubuntu Server ตามปกติทั่วๆไป ตั้งค่าให้รับ IP เป็นแบบ DHCP จาก Router
$sudo passwd root
[sudo] password for [username]:[พิมพ์รหัสผ่านปัจจุบัน]
Type new UNIX password: [พิมพ์รหัสผ่าน root ตามต้องการ]
Retype new UNIX password: [พิมพ์รหัสผ่าน root ตามต้องการอีกครั้งให้เหมือนเดิม]
passwd: password updated successfully
$ su
ตอนนี้ใช้คำสั่ง su เราก็ได้กลายเป็น root แล้ว จะเปลี่ยนจาก $ เป็น #
eth0 : การ์ดตัวนี้ออกอินเตอร์เน็ต
eth1 : การ์ดตัวนี้ไว้เชื่อมต่อกับเครือข่ายภายใน
เราจะเข้าไปตั้งค่า การ์ดแลนได้โดยเข้าไปแก้ไข ดังนี้
#nano /etc/network/interfaces
กรณี 1 การตั้งค่า eth0 ให้รับค่าแบบ auto จาก Router
auto eth0
iface eth0 inet dhcp #//ใส่รูปแบบนี้ในกรณีให้รับค่า dhcp จาก Router
auto eth1
iface eth1 inet static #//กำหนด IP ให้กับการ์ดแลนตัวที่ 2 เพื่อเชื่อมต่อภายใน
address 192.168.1.1
netmask 255.255.255.0
กรณี 2 การตั้งค่า eth0 ให้เป็นแบบ static คือกำหนดค่าเอง
auto eth0
iface eth0 inet static #//กำหนด eth0 ให้เป็นแบบกำหนดค่า
address 10.10.10.1
netmask 255.255.255.0
gateway 10.10.10.254 #//กำหนด gateway ให้ตรงกับหมายเลข IP ของ router
auto eth1
iface eth1 inet static #//กำหนด IP ให้กับการ์ดแลนตัวที่ 2 เพื่อเชื่อมต่อภายใน
address 192.168.1.1
netmask 255.255.255.0
เราจะต้องกำหนดค่า gateway ให้กับ eth0 ในกรณีที่กำหนดค่าไอพีแบบ static
บันทึกด้วยการกด Ctrl+o
ออกด้วยการกด Ctril+x
5. ทำการรีสตาร์ท service ของ network
#service network restart
หรือ
#/etc/init.d/networking restart
ถ้าจะดู IP ที่ตั้งค่าไว้
#ifconfig
จะได้หมายเลขไอพี ตรงตามที่เรากำหนด
6. การติดตั้งโปรแกรม DHCP3-server เพื่อแจก IP แก่เครื่องลูก
#apt-get install dhcp3-server
7. การกำหนดค่า การแจก IP ของ DHCP server
#nano /etc/dhcp/dhcpd.conf
ค้นหาและแก้ไขให้มีเหมือนในลักษณะนี้
subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.30 192.168.1.200; option domain-name-servers 192.168.1.1; option domain-name "ubuntu.trumschool.net"; option routers 192.168.1.1; option broadcast-address 192.168.1.255; default-lease-time 600; max-lease-time 7200; }
9. การติดตั้ง Squid3 Proxy
#apt-get install squid3
****ทำตามขั้นตอน อาจจะต้องมีการกด Y เพื่อดำเนินการติดตั้งให้สำเร็จ****
10. การตั้งค่า squid.conf เพื่อให้ใช้งานได้
#nano /etc/squid3/squid.conf
ค้นหา
http_port 3128
แล้วเพิ่ม transparent จะได้เป็น
http_port 3128 transparent #//เพื่อจะได้ไม่ต้องตั้งค่า proxy ที่บราวเซอร์
ทำการเพิ่ม acl เพื่อกำหนดเครือข่ายที่ต้องการให้ผ่าน squid proxy ได้โดยเพิ่ม
acl localnet src 192.168.1.0/24
http_access allow localnet
บันทึกด้วยการกด Ctrl+o
ออกด้วยการกด Ctril+x
11. การตั้งค่าในกรณีที่เวปเป็น https:// โดยการกำหนด iptables
#nano /etc/init.d/iptables
คำสั่งที่พิมพ์ลงใน iptables
### BEGIN INIT INFO # Provides: scriptname # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -F iptables -t mangle -F iptables -t filter -F iptables -X iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.1:3128 iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 iptables -I INPUT -p tcp --dport 443 -j ACCEPT iptables -I OUTPUT -p tcp --dport 443 -j ACCEPT
ต่อไปนี้จะเป็นการทำระบบเซอร์เวอร์อินเตอร์เน็ต ให้นักเรียนได้ใช้งานอินเตอร์เน็ตในโรงเรียนแบบง่ายๆ ไม่ต้องมีระบบระบุตัวตน ซึ่งอาจจะดูเหมือนว่า เราไม่ได้เก็บข้อมูลอะไร แต่เราก็มี log เล็กของเราเองซึ่งได้จากตัว Squid ถ้าไม่ตรงกับวัตถุประสงค์ของท่านก็ต้องขออภัย อิ อิ
ผมจะไม่พูดถึงเรื่องของการติดตัง Ubuntu Server นะครับเพราะคิดว่าทุกท่านน่าจะติดตั้งเป็นแล้วแหละ ถ้ายังไม่เป็นสามารถหาอ่านได้จากเวป WIKI ทั่วไปได้ครับ
ในระบบที่จะกล่าวต่อไปนี้ เราจะใช้ Ubuntu Server รุ่นไหนก็ได้ แต่ที่ผมได้ลองใช้และทำงานได้ก็คือ Ubuntu Server 14.04
isc-dhcp-server คือ โปรแกรมที่ใช้ในการแจก IP address แบบ DHCP ให้กับเครื่องลูกที่จะใช้งานอินเตอร์เน็ต
Squid3 ตัวนี้จะทำหน้าที่เป็น Proxy Server ไว้เก็บข้อมูลเวป การเรียกใช้หน้าเวปเพื่อความรวดเร็วมากยิ่งขึ้น ตามหลักการของ Proxy
สรุปต้องมีซอฟแวร์ดังนี้
1. Ubuntu Server
2. Isc-dhcp-server
3. Squid3
4. Router แจก IP แบบ DHCP หมายเลข IP gateway 10.10.10.254
1. ดำเนินการติดตั้ง Ubuntu Server ตามปกติทั่วๆไป ตั้งค่าให้รับ IP เป็นแบบ DHCP จาก Router
1.กำลังติดตั้ง Ubuntu Server
2. ให้ดำเนินการ Login โดยใช้ User ที่ตั้งค่าไว้ ตอนที่ติดตั้ง Ubuntu Server
3. แปลงร่างตัวเองเป็น root น่าจะทำงานได้สะดวกกว่าเยอะ งั้นเราก็ตั้งรหัสผ่านให้ root เลยดีกว่า
$sudo passwd root
[sudo] password for [username]:[พิมพ์รหัสผ่านปัจจุบัน]
Type new UNIX password: [พิมพ์รหัสผ่าน root ตามต้องการ]
Retype new UNIX password: [พิมพ์รหัสผ่าน root ตามต้องการอีกครั้งให้เหมือนเดิม]
passwd: password updated successfully
$ su
ตอนนี้ใช้คำสั่ง su เราก็ได้กลายเป็น root แล้ว จะเปลี่ยนจาก $ เป็น #
4. ตั้งค่าให้ออกอินเตอร์เน็ตได้ โดยตั้งค่า IP ของการ์ดแลน ทั้งสองการ์ด
eth0 : การ์ดตัวนี้ออกอินเตอร์เน็ต
eth1 : การ์ดตัวนี้ไว้เชื่อมต่อกับเครือข่ายภายใน
เราจะเข้าไปตั้งค่า การ์ดแลนได้โดยเข้าไปแก้ไข ดังนี้
#nano /etc/network/interfaces
กรณี 1 การตั้งค่า eth0 ให้รับค่าแบบ auto จาก Router
auto eth0
iface eth0 inet dhcp #//ใส่รูปแบบนี้ในกรณีให้รับค่า dhcp จาก Router
auto eth1
iface eth1 inet static #//กำหนด IP ให้กับการ์ดแลนตัวที่ 2 เพื่อเชื่อมต่อภายใน
address 192.168.1.1
netmask 255.255.255.0
กรณี 2 การตั้งค่า eth0 ให้เป็นแบบ static คือกำหนดค่าเอง
auto eth0
iface eth0 inet static #//กำหนด eth0 ให้เป็นแบบกำหนดค่า
address 10.10.10.1
netmask 255.255.255.0
gateway 10.10.10.254 #//กำหนด gateway ให้ตรงกับหมายเลข IP ของ router
auto eth1
iface eth1 inet static #//กำหนด IP ให้กับการ์ดแลนตัวที่ 2 เพื่อเชื่อมต่อภายใน
address 192.168.1.1
netmask 255.255.255.0
เราจะต้องกำหนดค่า gateway ให้กับ eth0 ในกรณีที่กำหนดค่าไอพีแบบ static
บันทึกด้วยการกด Ctrl+o
ออกด้วยการกด Ctril+x
5. ทำการรีสตาร์ท service ของ network
#service network restart
หรือ
#/etc/init.d/networking restart
ถ้าจะดู IP ที่ตั้งค่าไว้
#ifconfig
จะได้หมายเลขไอพี ตรงตามที่เรากำหนด
6. การติดตั้งโปรแกรม DHCP3-server เพื่อแจก IP แก่เครื่องลูก
#apt-get install dhcp3-server
7. การกำหนดค่า การแจก IP ของ DHCP server
#nano /etc/dhcp/dhcpd.conf
ค้นหาและแก้ไขให้มีเหมือนในลักษณะนี้
subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.30 192.168.1.200; option domain-name-servers 192.168.1.1; option domain-name "ubuntu.trumschool.net"; option routers 192.168.1.1; option broadcast-address 192.168.1.255; default-lease-time 600; max-lease-time 7200; }
บันทึกด้วยการกด Ctrl+o
ออกด้วยการกด Ctril+x
8. การกำหนดการ์ดที่จะให้แจก DHCP แก่เครื่องลูก
#nano /etc/default/isc-dhcp-server
ค้นหาบรรทัดแล้วแก้ไขให้เป็น
INTERFACES="eth1"
บันทึกด้วยการกด Ctrl+o
ออกด้วยการกด Ctril+x
ทำการรีสตาร์ท service ด้วยคำสั่ง
#service isc-dhcp-server restart
ออกด้วยการกด Ctril+x
8. การกำหนดการ์ดที่จะให้แจก DHCP แก่เครื่องลูก
#nano /etc/default/isc-dhcp-server
ค้นหาบรรทัดแล้วแก้ไขให้เป็น
INTERFACES="eth1"
บันทึกด้วยการกด Ctrl+o
ออกด้วยการกด Ctril+x
ทำการรีสตาร์ท service ด้วยคำสั่ง
#service isc-dhcp-server restart
#apt-get install squid3
****ทำตามขั้นตอน อาจจะต้องมีการกด Y เพื่อดำเนินการติดตั้งให้สำเร็จ****
10. การตั้งค่า squid.conf เพื่อให้ใช้งานได้
#nano /etc/squid3/squid.conf
ค้นหา
http_port 3128
แล้วเพิ่ม transparent จะได้เป็น
http_port 3128 transparent #//เพื่อจะได้ไม่ต้องตั้งค่า proxy ที่บราวเซอร์
ทำการเพิ่ม acl เพื่อกำหนดเครือข่ายที่ต้องการให้ผ่าน squid proxy ได้โดยเพิ่ม
acl localnet src 192.168.1.0/24
http_access allow localnet
บันทึกด้วยการกด Ctrl+o
ออกด้วยการกด Ctril+x
11. การตั้งค่าในกรณีที่เวปเป็น https:// โดยการกำหนด iptables
#nano /etc/init.d/iptables
คำสั่งที่พิมพ์ลงใน iptables
### BEGIN INIT INFO # Provides: scriptname # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -F iptables -t mangle -F iptables -t filter -F iptables -X iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.1:3128 iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 iptables -I INPUT -p tcp --dport 443 -j ACCEPT iptables -I OUTPUT -p tcp --dport 443 -j ACCEPT
สามารถกำหนดได้ตามตัวอย่างได้เลยครับ
บันทึกด้วยการกด Ctrl+o
ออกด้วยการกด Ctril+x
12. กำหนด iptables ให้กลายเป็น service จะได้รีสตาร์ท หรือ หยุดได้
#chmod +x /etc/init.d/iptables
#update-rc.d iptables defaults
13. ทำการรีสตาร์ท squid3 , iptables
ออกด้วยการกด Ctril+x
12. กำหนด iptables ให้กลายเป็น service จะได้รีสตาร์ท หรือ หยุดได้
#chmod +x /etc/init.d/iptables
#update-rc.d iptables defaults
13. ทำการรีสตาร์ท squid3 , iptables
#service squid3 restart
#/etc/init.d/iptables restart
หรือ จะ รีสตาร์ทเครื่องเลยก็ได้
#reboot
เป็นอันว่าเสร็จสิ้นขั้นตอนการติดตั้ง Proxy server แบบ Transparent โดย ใช้ Ubuntu server กับ Squid
การติดตั้งนี้เป็นการทำให้เครื่องลูกสามารถใช้อินเตอร์เน็ตได้ โดยผ่านตลอดยังไม่มีการกรองเวปที่ไม่เหมาะใดๆทั้งสิ้น ให้แต่เพียงใช้ได้ก่อน ส่วนการกรองเวป เดี๋ยวค่อยมาติดตามกันต่อไป
หน้าตาของเครื่อง server ที่ได้ทดสอบ เป็น HP G6 ส่วน notebook สองเครื่องเป็นเครื่องทดสอบ กับเครื่องไว้ค้นหาความรู้และฟังเพลงไปด้วยระหว่างที่รอ
ถ้าลองทำตามแล้วได้หรือไม่ได้อย่างไร แนะนำข้อที่ผิดพลาดได้นะครับ (ยินดี)
ไม่มีความคิดเห็น
แสดงความคิดเห็น