ระบบควบคุมการใช้งานอินเตอร์เน็ตโรงพยาบาล
Hospital Internet System Control
นายปฐมฤกษ วรวานิช
Mr. Pathomlurk Worawanich
สารนพินธ์นี้เป็นส่วนหนึง่ของการศึกษา
หลักสูตรวิทยาศาสตรมหาบัณฑิต สาขาวิชา วศิวกรรมเครอืข่าย
คณะวิทยาการและเทคโนโลยีสารสนเทศ
มหาวิทยาลยัเทคโนโลยมีหานคร
ปีการศึกษา 2560
i
หัวข้อ ระบบควบคุมการใช้งานอินเตอร์เน็ตโรงพยาบาล
Hospital Internet System Control
ชื่อนักศึกษา ปฐมฤกษ วรวานิช
รหัสนักศึกษา 5717660010
หลักสูตร วิศวกรรมเครือข่าย
ปีการศึกษา 2559
อาจารย์ท่ีปรึกษา ผศ.ดร.วรพล ลีลาเกียรติสกุล
บทคัดย่อ
สารนิพนธ์นี้ได้น าเสนอโครงงานเกี่ยวกับระบบบริหารจัดการการใช้งานอินเตอร์เน็ตภายใน
โรงพยาบาล เพ่ือการให้บริการที่มีความสะดวกสบายมากขึ้นต่อผู้รับบริการ ซึ่ง ได้มีการน าหลักการ
ท างานของ Linux Traffic control, Iptables, PHP, Mysql, มาร่วมกันท างาน เป็น Internet
gateway เพ่ือใช้ในการควบคุม การใช้งานอินเตอร์เน็ตภายในโรงพยาบาลให้มีประสิทธิภาพมากและ
ได้ประโยชน์สูงสุด วิธีการก าหนดสิทธ์การใช้งาน จะอ้างตามรายบุคคลที่เป็นลูกค้าทั้งหมด เพ่ือความ
สะดวกในการเข้าใช้งานของผู้ป่วย ลดขั้นตอน ลดความสับซ้อนในการลงทะเบียน และมีหน้า Web
application ในการบริหารจัดการตัวระบบต่างๆส าหรับผู้ดูแลระบบ (Administrator)
ii
กิตติกรรมประกาศ
สารนิพนธ์ฉบับนี้ส าเร็จลุล่วงได้ทั้งนี้ ด้วยการได้รับความกรุณาช่วยเหลือให้ค าแนะน าการ ด าเนินงานโครงงาน และได้รับการสนับสนุนจากผู้มีพระคุณหลายท่านด้วยกัน โดยเฉพาะอย่างยิ่ง การได้รับความกรุณาและดารช่วยเหลือ จาก ดร.วรพล ลีลาเกียรติสกุล อาจารย์ที่ปรึกษาท่ีได้เสียสละเวลาให้ค าปรึกษาตรวจสอบข้อบกพร่องของระบบให้มีความสมบูรณ์
อีกท้ัง เพ่ือนๆที่คอยช่วยเหลือสนับสนุนการจัดท าสารนิพนธ์ฉบับนี้ ให้มีความสมบูรณ์ยิ่งขึ้น ขอกราบขอบพระคุณ คณาจารย์ทุกท่าน ที่ได้ช่วยประสิทธิป์ ประสาทวิชาความรู้จนสามารถ น าความรู้นั้นมาใช้ในการศึกษาครั้งนี้ จนได้จัดท าสารนิพนธ์ส าเร็จได้ด้วยดี ท้ายนี้ขอกราบ ขอบพระคุณบิดามารดาที่คอยสนับสนุนและให้ก าลังใจเสมอมาท าให้การศึกษาในครั้งนี้ส าเร็จ ลุล่วงไปได้ด้วยดี
ปฐมฤกษ วรวานิช
พฤศจิกายน 2560
iii
สารบัญ
หน้า
บทคัดย่อ ............................................................................................................................................. i
กิตติกรรมประกาศ.............................................................................................................................. ii
สารบัญ .............................................................................................................................................. iii
สารบัญรูป ..........................................................................................................................................v
สารบัญรูป (ต่อ) ................................................................................................................................. vi
สารบัญรูป (ต่อ) ................................................................................................................................ vii
สารบัญตาราง .................................................................................................................................. viii
บทที่ 1 .............................................................................................................................................. 1
1.1 ปัญหาและแรงจูงใจ .................................................................................................................... 1
1.2 แนวทางการแก้ปัญหา ................................................................................................................. 2
1.3 วัตถุประสงค์ ............................................................................................................................... 2
1.4 ภาพรวมของระบบที่จัดท า .......................................................................................................... 3
1.5 ขอบเขตของสารนิพนธ์ ............................................................................................................... 3
1.6 โครงสร้างของสารนิพนธ์ ............................................................................................................. 4
บทที่ 2 .............................................................................................................................................. 6
2.1 Shell Script .............................................................................................................................. 6
2.2 Linux Crontab ......................................................................................................................... 7
2.3 Firewall IPtables ..................................................................................................................... 9
2.4 Linux Traffic Control: tc ...................................................................................................... 18
2.5 ภาษา Structured Query Language (SQL) .......................................................................... 25
2.7 Log Rotate ............................................................................................................................. 27
บทที่ 3 ............................................................................................................................................ 29
3.1 ภาพรวมของระบบ .................................................................................................................... 29
iv
สารบัญ (ต่อ)
หน้า
3.2 ขั้นตอนในการด าเนินงาน …………………………………………………………………..…………………………..30
3.3 การออกแบบระบบการท างาน .................................................................................................. 31
3.4 การออกแบบระบบฐานข้อมูล ................................................................................................... 41
3.5 การออกแบบหน้า GUI ของระบบ ....................................................................................... 44
บทที่ 4 ............................................................................................................................................ 45
4.1 โครงสร้างของระบบ .................................................................................................................. 45
4.2 ทดสอบควบคุม Bandwidth สภาพแวดล้อมการทดลอง .......................................................... 46
4.3 ทดสอบการใช้งานหน้ายูเซอร์ล็อคอิน (User login) .................................................................. 48
4.4 ทดสอบเข้าใช้งานแอดมินล็อคอิน (Administrator login) ....................................................... 51
4.5 ทดสอบติดตั้งและต้ังค่า DHCP ................................................................................................. 57
บทที่ 5 ............................................................................................................................................ 59
5.1 สรุปผลการด าเนินงาน .............................................................................................................. 59
5.2 ข้อเสนอแนะในการพัฒนาโครงงานต่อไปในอนาคต .................................................................. 59
เอกสารอ้างอิง ................................................................................................................................. 60
ภาคผนวก ก ...................................................................................................................................... 0
การติดตั้งและตั้งค่าระบบเบื้องต้น .................................................................................................. ก-1
ภาคผนวก ข ...................................................................................................................................... 0
ซอร์สโค้ดของระบบ ........................................................................................................................ ข-1
v
สารบัญรูป
หน้า
รูปที่ 1.1 Network Diagram………………………………………………………………………………………………….3 รูปที่ 2.1 โครงสร้างระบบปฎัติการ linux/unix…………………………………………………………………………6 รูปที่ 2.2 แสดงตัวอย่างการใช้งาน crontab……………………………………………………………………………..8 รูปที่ 2.3 โครงสร้างการท างานของ iptables………………………………………………………………………….12 รูปที่ 2.4 โครงสร้างการท างานของ pfifo_fast queuing………………………………………………………….19 รูปที่ 2.5 โครงสร้างการท างานแบบ Token bucket filter ……………………………………..……………...20 รูปที่ 2.6 โครงสร้างการท างานแบบ Stochastic Fair ………………………………………………..……………21 รูปที่ 2.7 โครงสร้างการท างาน Classful qdisc ในการสร้างคลาสลูก ………………………………………23 รูปที่ 2.8 แสดงตัวอย่างการใช้งาน logrotate …………………………………………………………….………….28 รูปที่ 3.1 ภาพรวมการท างานของระบบ ………………………………………….………………………….………….29 รูปที่ 3.2 ขั้นตอนกระบวนการท างานของการเก็บและเพ่ิมข้อมูลอัตโนมัติ…………………………………..32 รูปที่ 3.3 ตัวอย่าง file Admit……………………………………………………………………………………………….33 รูปที่ 3.4 ตัวอย่าง file Register…………………………………………………………………………………………….33 รูปที่ 3.5 ตัวอย่าง file Discharge………………………………………………………………………………………….33 รูปที่ 3.6 แสดงขั้นตอนกระบวนการเพ่ิมกลุ่มผู้ใช้งานเข้าระบบ………………………………………………….34 รูปที่ 3.7 แสดงขั้นตอนกระบวนการเพ่ิมชื่อผู้ใช้งาน………………………………………………….............……35 รูปที่ 3.8 ขั้นตอนการท างานของระบบ Authentication เพ่ือเข้าใช้งาน…………………………………….37 รูปที่ 3.9 แสดงขั้นตอนกระบวนการท างาน Logout ของระบบ…………………………………………………38 รูปที่ 3.10 แสดงขั้นตอนกระบวนการท างาน auto logout………………………………………………………39 รูปที่ 3.11 แสดงขั้นตอนการควบคุม Bandwidth……………………………………………………………………40 รูปที่ 3.12 ภาพรวมโครงสร้างฐานข้อมูล…………………………………………………………………………………41 รูปที่ 3.13 แสดงหน้าจอการ login ระบบ……………………………………………………………………………….44 รูปที่ 3.14 ตัวอย่างหน้าจอหน้าเว็บการจัดการของระบบ………………………………………………………….44 รูปที่ 4.1 แสดงโครงสร้างการท างานของระบบ………………………………………………………………………..45 รูปที่ 4.2 แสดงตัวอย่าง // path file……………………………………………………………………………………..46 รูปที่ 4.3 สภาพแวดล้อมจ าลองเพ่ือท าการทดสอบระบบ………………………………………………………….46 รูปที่ 4.4 ผลการทดสอบควบคุมแบนด์วิธ……………………………………………………………………………….48 รูปที่ 4.5 แสดงหน้าจอ login ส าหรับผู้ใช้งาน………………………………………………………………………….49 รูปที่ 4.6 แสดงข้อมูลผู้ใช้งานเมื่อท าการ login เข้าระบบเรียนร้อยแล้ว.....…………………………………49
vi
สารบัญรูป (ต่อ)
หน้า
รูปที่ 4.7 แสดงผลการใช้งาน internet ..………………………………………………………………………………..50 รูปที่ 4.8 แสดงผลการทดสอบ ping ออก internet ..………………………………………………………………50 รูปที่ 4.9 แสดงหน้าจอส าหรับผู้ใช้งานทั่วไป ..…………………………………………………………………………51 รูปที่ 4.10 แสดงผลหน้าจอ System information .……………………………………………………………….52 รูปที่ 4.11 แสดงผลหน้าจอการตั้งค่า IP Interface ..……………………………………………………………….52 รูปที่ 4.12 แสดงผลหน้าจอการ maintenance server ..………………………………………………………..53 รูปที่ 4.13 แสดงผลหน้าจอการเพ่ิมผู้ใช้งานเข้าระบบ ..…………………………………………………………...53 รูปที่ 4.14 หน้าจอแสดงผลผู้ใช้งานทั้งหมดในระบบ ..………………………………………………….…….…….54 รูปที่ 4.15 หน้าจอแสดงผลการแก้ไขผู้ใช้งาน ..………………………………………………………….……….……54 รูปที่ 4.16 แสดงผลหน้าจอการเพ่ิมกลุ่มผู้ใช้งาน ..…………………………………………………………….…….55 รูปที่ 4.17 แสดงหน้าจอการตั้งค่า DHCP ของระบบ ..………………………………………………….….………56 รูปที่ 4.18 แสดงผลหน้าจอการตั้งค่า DNS ของระบบ ..………………………………………………..………….56 รูปที่ 4.19 ผลลัพธ์จากการติดตั้ง DHCP ……..…………………………………………………………….…………..57 รูปที่ 4.20 แสดงข้อมูลการก าหนดค่า DHCP ..………………………………………………………….…….………57 รูปที่ 4.21 แสดงการท างานของ DHCP ………….…………………………………………………….………..……..58 รูปที่ 4.22 แสดงผลการจ่ายไอพีของ DHCP server ………………….…..……………….…………………….. 58 รูปที่ ก.1 การตั้งค่า eth0 ................................................................................................................ก-1 รูปที่ ก.2 การตั้งค่า eth1 …..……………………………………………………………………………………………….ก-1 รูปที่ ก.3 แสดงค าสั่งการท างาน ifconfig ........................................................................................ก-2 รูปที่ ก.4 ผลลัพธ์จากการติดตั้ง DHCP ...........................................................................................ก-3 รูปที่ ก.5 แสดงข้อมูลการก าหนดค่า DHCP ....................................................................................ก-3 รูปที่ ก.6 แสดงการท างานของ DHCP .............................................................................................ก-4 รูปที่ ก.7 การเพ่ิมสิทธิ์ในการรัน apache .......................................................................................ก-4 รูปที่ ก.8 การใช้งาน startup config ..............................................................................................ก-5 รูปที่ ก.9 แสดง tc class ที่ถูกสร้างขึ้น ...........................................................................................ก-6 รูปที่ ก.10 แสดงการตั้งค่า SNMP ...................................................................................................ก-7 รูปที่ ก.11 แสดงการท างานของ Iptables ......................................................................................ก-8
vii
สารบัญรูป (ต่อ)
หน้า
รูปที่ ข.1 โค้ดท่ีใช้ในการเริ่มะบบ .....................................................................................................ข-1
รูปที่ ข.2 สคริปต์การตั้งค่า networkinterface ..............................................................................ข-2
รูปที่ ข.3 สคริปต์การตั้งค่า DHCP ...................................................................................................ข-2
รปูที่ ข.4 แสดงโค้ดการอ่านข้อมูล ...................................................................................................ข -3
รูปที่ ข.5 แสดงโค้ดการก าหนดแบนวิดท์ .........................................................................................ข-3
รูปที่ ข.6 แสดงโค้ดการเก็บข้อมูลเข้าระบบ .....................................................................................ข-4
รูปที่ ข.7 แสดงโค้ดการบันทึกข้อมูล ................................................................................................ข-5
รูปที่ ข.8 โค้ดการตั้งค่า DHCP ผ่านหน้าเว็บแอพพลิเคชั่น ..............................................................ข-5
รูปที่ ข.9 โค้ดแสดงการเรียกข้อมูลของระบบผ่าน SNMP ...............................................................ข-6
viii
สารบัญตาราง
หน้า
ตารางที่ 2.1 แสดงการก าหนดค่าภายใน fields เพ่ือการใช้งาน crontab ……………………………………7
ตารางที่ 2.2 แสดง Table และ Chain ของ iptables ..…………………………………………………………….9
ตารางที่ 2.3 แสดงความหมายของค าสั่งการใช้งาน iptables V1.4.21 .......……………………………….10
ตารางที่ 2.4 จากรูป 2.1 อธิบายขั้นตอนเมื่อได้รับ packet เข้ามา ..………………………………………….13
ตารางที่ 2.5 จากรูป 2.1 แสดงการท างานกรณีที่มี packet ปลายทางไม่ใช่เครื่องไฟร์วอล์ .….……..13
ตารางที่ 2.6 จากรูป 2.1 แสดงการท างานกรณีที่มี packet ปลายทางเป็นเครื่องไฟร์วอล์ ………..….14
ตารางที่ 3.1 Patient_Account ..…………………………………………………………………………………………41
ตารางที่ 3.2 Groups_Account ..…………………………………………………………………………………………42
ตารางที่ 3.3 Active_login ..………………………………………………………………………………………………..43
ตารางที่ 3.4 Login_Log ..……………………………………………………………………………………………………43
บทที่ 1
บทน า
1.1 ปัญหาและแรงจูงใจ
ปัญหาและแรงจูงใจ เนื่องจากโรงพยาบาลแห่งหนึ่งจะมีการให้บริการ Internet แบบ
Free WIFI ให้แก่ลูกค้าที่เข้ามารับการรักษาพยาบาลกับทางโรงพยาบาลเท่านั้น ซึ่งปัจจุบันทาง
โรงพยาบาลแห่งนี้ เปิดให้บริการ Free WIFI ส าหรับลูกค้าที่ เข้ามารับการรักษา โดยไม่มีการ (
Authentication ) ใดๆ ท าให้บุคคลอ่ืนๆที่ไม่เก่ียวข้องสามารถใช้งานได้เช่นกัน และเนื่องจากไม่มีการ
ยืนยันตัวตน ( Authentication ) ใดๆ ซึ่งยากต่อการตรวจสอบหากมีการกระท าความผิดใดๆ และ
ปัญหาการเก็บข้อมูลจราจรทางคอมพิวเตอร์ (พ.ร.บ.ว่าด้วยการกระท าความผิดเกี่ยวกับคอมพิวเตอร์
พ.ศ.2550) และอีกหนึ่งปัญหาที่ตามมาก็คือจ านวนปริมาณการใช้งานของระบบ free WIFI ที่ไม่
สามารถควบคุมปริมาณการใช้งานของแต่ละ User ได้ ท าให้เกิดการแย่งใช้งาน Bandwidth ท าให้
การใช้งานอินเตอร์เน็ตเป็นไปอย่างไม่มีประสิทธิ์ภาพ จนเกิดเสียงวิพากษ์วิจารณ์ตามมา ท าให้องค์กร
เสียภาพลักษณ์ในการให้บริการ
จากปัญหาที่กล่าวมาหากไม่ได้รับการแก้ไขปรับปรุงจะท าให้ภาพลักษณ์ขององค์กรเสียหาย
ในด้านการให้บริการ เป็นผลกระทบในเชิงลบต่อองค์กร ท าให้ความเชื่อมั่นด้านการให้บริการลดลง
การจัดท าระบบการควบคุมการใช้งานจึงมีความส าคัญเป็นอย่างมากในการให้บริการอิเตอร์เน็ต
ภายในโรงพยาบาลแห่งนี้ ทั้งยังสามารถป้องการการลักลอบใช้งานอินเตอร์เน็ตภายในโรงพยาบาล
สามารถตรวจสอบการใช้งานได้ตามกฎหมาย พรบ ลดปัญหาการแย่งใช้งาน Bandwidth และลดการ
ลงทะเบียนซ้ าบซ้อนของผู้ที่เข้ามารับการรักษากับทางโรงพยาบาลหรือลูกค้า ผู้จัดท าจะท าระบบเป็น
แบ บ Web Application ที่ ส ามารถอางอิ งข้ อมู ล จากทาง Data base ใน ระบ บ Hospital
Information System (HIS) ของคนไข้มาใช้งานและสร้างเป็น User ในการเข้าใช้งาน และสามารถ
ควบคุมการใช้งาน bandwidth ของแต่ละ User ได้
2
1.2 แนวทางการแก้ปัญหา
ผู้ จั ดท าจะท าระบบ เป็ นแบบ Web Application ที่ ส ามารถควบคุ มการใช้ งาน
bandwidth ของแต่ละ User ได้จาก Web Application เพ่ือส่งค าสั่งการท างานไปที่ Gateway
server ให้คอยบริหารจัดการการใช้งานต่างๆ โดยมีผู้ดูแลระบบเป็นคนจัดการ การยืนยันตัวตน
(authentication) เพ่ือเข้าใช้งานระบบ WIFI จะใช้ username password ที่อ้างอิงข้อมูลจาก Data
base ภายในระบบโรงพยาบาล (Hospital Information System) โดยใช้ข้อมูลคนไข้มาสร้างเป็น
Username password ในการเข้าใช้งาน เพ่ือเพ่ิมความสะดวกต่อลูกค้าในการเข้าใช้งานระบบ
(WIFI)
1.3 วัตถุประสงค์
1. เพ่ือแก้ไขปัญหาของการ authentication ให้สามารถระบุตัวตนของผู้ใช้ได้ 2. เพ่ือแก้ไขปัญหาการใช้งานแบนวิท Bandwidth 3. เพ่ือให้สามารถตรวจสอบการใช้งานตาม กฎหมาย พรบ ที่ก าหนด 4. เพ่ืออ านวยความสะดวกแก่ผู้ใช้งานที่เข้ามารับบริการให้ไม่ต้องลงทะเบียนการใช้งาน
ซ้ าซ้อน 5. ศึกษาและน าความรู้ทางด้านเทคโนโลยี (Open Source) ต่างๆมาประยุกชใช้ให้เกิด
ประโยชน์ 6. เพ่ือเพ่ิมความสะดวกต่อการบริหารจัดการ bandwidth
3
1.4 ภาพรวมของระบบท่ีจัดท า
รูปที ่1.1 Network Diagram
จากรูปที่ 1.1 แสดงภาพรวมของระบบที่จัดท า การท างานจะเริ่มจากระบบฐานข้อมูลของ
ทางโรงพยาบาล จะส่งข้อมูลเฉพาะของผู้ที่มารับบริการเข้ามาที่ share path \\ ที่ได้ก าหนดไว้
จากนั้นระบบจะท าการอ่านข้อมูลจาก .txt ที่ถูกส่งมายัง share path \\ เมื่ออ่านข้อมูลเรียบร้อยจะ
ท าการแยกประเภทของผู้รับบริการและท าการบันทึกข้อมูลเข้าระบบ และเมื่อผู้เข้ามารับบริการท า
การเชื่อต่ออินเตอร์เน็ตของโรงพยาบาล ระบบจ าท าการ redirect เข้าหน้า login เพ่ือตรวจสอบสิทธิ์
ในการเข้าใช้งานอินเตอร์เน็ต
1.5 ขอบเขตของสารนิพนธ์
1. ศึกษาทฤษฎีที่เกี่ยวข้อง
- การเขียนโปรแกรมด้วยภาษา PHP
- การใช้งาน MYSQL Database
- การท างานของ IP TABLES
4
- การจ ากัดแบนด์วิดท์
- การใช้งาน Samba
2. ศึกษาและออกแบบ
- องค์ประกอบของระบบ
- กระบวนการท างานของระบบ
- ออกแบบโครงสร้างฐานข้อมูล
3. สร้างระบบจัดการการใช้งาน internet gateway
- จ ากัดแบนวิธ bandwidth ในการแก้ไขเปลี่ยนแปลง
4. สร้างเว็บแอปพลิเคชั่น ส าหรับผู้ดูแลระบบ
- สามารถสร้าง Group Bandwidth ได ้
- สามารถตั้งค่า IP Address ผ่านหน้าเว็บได้
- สามารถดูสถานะของผู้ใช้งาน (Online, Offline)
5. สร้างหน้าเว็บ login ส าหรับผู้ใช้งานทั่วไป
6. สร้างระบบฐานข้อมูลโดยอ่านข้อมูลลูกค้าจากไฟล์ Hospital information
system (HIS) ที่ถูกส่งมาท่ี share path
7. สร้างระบบการยืนยันตัวตน Authentication ส าหรับการเข้าใช้ระบบอินเตอร์เน็ต
1.6 โครงสร้างของสารนิพนธ์
1.6.1 บทที่ 2 ทฤษฎีที่เกี่ยวข้อง
เป็นการอธิบายเกี่ยวกับทฤฏีที่เกียวข้องกับระบบ โดยจะมีทฤษฏีพื้นฐานหลักๆดังนี้
Linux IPtables
Linux traffic control tc
Shell script
Linux log
Mysql
5
1.6.2 บทที่ 3 การออกแบบและพัฒนาระบบ
การออกแบบระบบผู้นิพนธ์ ต้องการให้ระบบสามารถท างานได้โดยการใช้งานข้อมูลร่วมกับ
ระบบสารสนเทศของทางโรงพยาบาล ERP( erter prise resource planning ) ซึ่งข้อมูลผู้ ใช้งาน
จะส่งมาที่ระบบ จากนั้นระบบจะอ่านและบันทึกข้อมูลรวมถึงการจัดการสิทธิ์ ในการเข้าใช้งานอิน
เทอร์แน็ตแบบอัตโนมัต เพื่อให้ลดภาระของผู้ดูและระบบแบบเก่า โดยส่วนการท างานหลักๆจะมีอยู่ 2
ส่วน ส่วนที่หนึ่งคือการท างานภายในระบบที่มีระบบปฏิบัติการลินุกส์ (linux) เป็นตัวจัดการทราฟฟิก
(traffic) ภายในที่ต้องการใช้งานออกไปยังอินเทอร์เน็ต และส่วนที่สองคือ ส่วนของของผู้ใช้งานที่
สามารถสั่งการท างาน ปรับเปลี่ยนแก้ไขการท างานได้ผ่านทางหน้าเว็บ (user interface) และใช้ใน
การยืนยันตัวตนเพื่อเข้าใช้งานระบบ
1.6.3 บทที่ 4 ผลการทดลอง
แสดงผลของการท างานจากการออกแบบและติดตั้งเซอร์วิสต่างๆที่จ าเป็นต่อระบบ ซึ่งจะมี
รูปภาพประกอบการท างานของแต่ละฟังก์ชั่นงานที่ถูกออกแบบและจัดท าขึ้น เช่น การก าหนดแบนด์
วิดท,์ การตั้งค่าระบบผ่านหน้าเว็บ, การก าหนดสิทธิ์การใช้งาน เป็นต้น
1.6.4 บทที่ 5 สรุปผลการด าเนินงาน
เป็นการรวบรวมปัญหาที่เกิดขึ้นและแนวทางแก้ไขหรือพัฒนาต่อยอดในอนาคต
6
บทที่ 2
พื้นฐานและทฤษฎีที่เกี่ยวข้อง
2.1 Shell Script
Shell Script เปรียบเสมือนภาษาโปรแกรมชนิดหนึ่ง ส าหรับระบบปฎิบัตการ unix หรือ
linux โดยมีคุณสมบัติเป็น Programming Language การท างานแบบ command-line ท าหน้าที่
เป็น interface ติดต่อระหว่าง user กับระบบปฎิบัติการ unix, linux ซึ่งช่วยให้ผู้ดูแลระบบหรือ
ผู้ใช้งานสามารถท างานได้รวดเร็วมากยิ่งขึ้น ด้วยการรวมค าสั่งและเงื่อนไขต่างๆของระบบปฎิบัตการ
จากนั้นเขียนลงใน file ที่ท าเป็นไฟล์ shell script เมื่อผู้ใช้งานเขียนค าสั่งเสร็จแล้วท าการ execute
ผลลัพธ์ที่ได้จะออกมาในรูปแบบ text file โดยโครงสร้างการท างานของระบบปฎิบัติการ unix หรือ
linux จะมีอยู่ 4 ส่วนด้วยกันคือ Hardware, kernel, shell, application ดังรูปภาพ
รูปที ่2.1 โครงสร้างระบบปฎัติการ linux/unix
7
2.2 Linux Crontab
คือ การตั้งเวลาการท างานตามเวลาที่ก าหนด ซึ่งช่วยให้ผู้ใช้งานหรือผู้ดูแลระบบมีความ
สะดวกมากยิ่งขึ้น ในการที่จะต้องคอยสั่งงานบางอย่างซ้ าๆกันหลายๆครั้ง อาจจะเป็นทุกๆวัน ทุกๆ
เดือน
ค าสั่งและ option ของ crontab มีดงันี้
#crontab filename คือการน าเอาค าสั่ง crontab เข้ามาจาก ไฟล์อ่ืน
#crontab -e คือการเข้าไปแก้ไขไฟล์ crontab ปัจจุบัน
#crontab -l ใช้แสดงค าสั่งต่างๆที่อยู่ภายใน crontab ปัจจุบันทั้งหมด
#crontab -r ลบค าสั่งภายใน crontab ที่มีท้ังหมด
#crontab -u user เป็นค าสั่งของผู้ดูแลระบบเท่านั้น เพ่ือใช้ดู แก้ไข ลบ crontab ของ
user แต่ละคน
การก าหนดค่าเวลา รูแปบบค าสั่งเพ่ือให้ค าสั่งถูกสั่งท างานตามต้องการ จะมีอยู่ทั้งหมด 6 fields ดังนี้
* * * * * * command เรียงล าดับตามเครืองหมาย * หมายถึง minute hour day
month weekday command ตามล าดับ
ตารางท่ี 2.1 แสดงการก าหนดค่าภายใน fields เพ่ือการใช้งาน crontab
field ความหมาย
1 minute มีค่า 0 - 59 เวลาเป็นนาที จะสั่งให้ค าสั่งที่ก าหนดท างานทันท่ีเมื่อถึงนาทีที่ก าหนด และหากก าหนดด้วย * หมายถึงทุกๆนาที
2 hour มีค่า 0 - 23 เวลาเป็นชัว่โมง จะสั่งให้ค าสั่งที่ก าหนดท างานทันท่ีเมื่อถึงชั่วโมงท่ีก าหนด และหากก าหนดด้วย * หมายถึงทุกๆชั่วโมง
3 day มีค่า 1 - 31 เวลาเป็นวัน จะสั่งให้ค าสั่งที่ก าหนดท างานทันที่เมื่อถึงวันที่ก าหนด และหากก าหนดด้วย * หมายถึงทุกๆวัน
4 month มีค่า 1 - 12 เวลาเป็นเดือน จะสั่งให้ค าสั่งที่ก าหนดท างานทันที่เมื่อถึงเดือนที่ก าหนด และหากก าหนดด้วย * หมายถึงทุกๆเดือน
5
weekday มีค่า 0 - 6 วันขะงแต่ละสัปดาห์ มีค่าดังนี้ (อาทิตย์ = 0, จันทร์ = 1, อังคาร = 2, พุธ = 3, พฤหัส = 4, ศุกร์ = 5 ,เสาร์ = 6 ) และหากก าหนดด้วย * หมายถึงทุกๆ วันของสัปดาห์
8
6 command ค าสั่ง เราสามารถก าหนดค าสั่งได้มากมาย รวมทั้ง script ต่าง ๆ ตามที่เราต้องการ
ตัวอย่างการท างาน จากตารางที่ 2.1
1. ระบุเฉพาะเวลาที่ต้องการ
เช่น อยากให้รันค าสั่งทุกๆ 3:00 โมงของทุกวัน 0 3 * * * command
2. ระบวุันที่ต้องการ
เช่น อยากให้รันค าสั่งทุกๆวันจันทร์ถึงวันพุธ 0 0 * * 1-3 command
3. ระบุเป็นแบบวันที่
เช่น อยากให้รันค าสั่งทุกๆ วันที่ 1 5 และ 19 คือ 0 0 1,5,19 * * command
4. ระบุช่วงเวลาเป็นประจ า ทุกๆ กี่ x นาท ี
เช่น อยากให้รันค าสั่งทุกๆ 2 นาท ี ก็จะเป็น */2 * * * * command
ภาพตัวอย่างการใช้งาน crontab ดังรูปที่ 2.2
รูปที ่2.2 แสดงตัวอย่างการใช้งาน crontab
9
2.3 Firewall IPtables
ไฟร์วอลล์ (Firewall) คือ ซอฟต์แวร์หรือฮาร์ดแวร์ ที่ท าหน้าที่ เป็นตัวกรองแพ็กเก็ต
(packet) หรือข้อมูลการสื่อสารอิเล็กทรอนิกส์ และป้องกันการถูกบุกรุกจากผู้ที่ไม่หวังดีหรือผผู้ที่ไม่ได้รับอนุญาต เป็นเครื่องมือที่ใช้รักษาความปลอดภัยในระบบเครือข่าย โดยมีการก าหนดกฎระเบียบในการควบคุมการเข้า-ออก หรือการควบคุมการรับ-ส่งข้อมูล รวมถึงการเข้าถึงของข้อมูลนั้นๆด้วย ส าหรับระบบปฏิบัติงานลีนุกซ์ซึนั้นมี ไอพีเทเบิ้ลส์ (iptables) เป็นซอฟต์แวร์ซึ่งท าหน้าที่เป็นไฟร์วอลล์ โดยจะคัดกรองและตรวจสอบแพ็กเก็ตของข้อมูลต่างๆ ที่ถูกส่งเข้าและออก
ไอพีเทเบิลส์ (iptables) แยกฟังก์ชั่นในการกรองแพ็กเก็ตออกเป็น 3 ตาราง (Table) คือ
- Filter table ใช้ส าหรับการคัดกรองแพ็กเก็ต - Nat table ใช้ส าหรับแปลงไอพีแอดเดรส (Network Address Translation) - Mangle table ใช้ส าหรับเปลี่ยนแปลงแก้ไขข้อมูลของแพ็กเก็ต เช่นค่า MARK,
TOS, TTL
ตารางท่ี 2.2 แสดง Table และ Chain ของ iptables
Table Function Chain Description
Filter
Packet filtering
FORWARD ส าห รั บ ก รอกแ พ็ ก เก็ ตที่ มี ก ารส่ งต่ อ ไป ยั งอินเตอร์เฟสอื่น
INPUT
ส าหรับกรอกแพ็กเก็ตที่ส่งมายังเครื่องโลโคอลต์โอสต์(localhost) ไม่ว่าจะผ่านอินเตอร์ใดก็ตาม
OUTPUT ส าหรับกรองแพ็กเก็ตที่ส่งออกจากเครื่องโลคอลต์โฮสต์
Nat Network Address
Translation
PREROUTING ส าหรับแปลงไอพีแอดเดรส ก่อนการท า routing
POSTROUTING ส าหรับแปลงไอพีแอดเดรส หลังการท า routing OUTPUT ส าหรับแปลงไอพีแอดเดรส ที่ถูกสร้างจากไฟร์
วอลล์ Mangle TCP header
modification
PREROUTING POSTROUTING
OUTPUT FORWARD
ส าหรับแก้ไขเปลี่ยนแปลงข้อมูลของแพ็กเก็ต
10
ตารางท่ี 2.3 แสดงความหมายของค าสั่งการใช้งาน iptables V1.4.21
ค าสั่ง ความหมาย
-A --append การเพ่ิมกฎใหม่เข้าไปต่อท้าย chain เช่น iptables -A INPUT -p ALL -i eth0 -j ACCEPT
-D --delete การลบกฎออกจาก chain เช่น iptables -D INPUT –dport 80 -j DROP
-I --insert การแทรกกฎใหม่ของ chain เช่น iptables -I OUTPUT -p ALL -s 10.20.30.40/32 -j ACCEPT
-R --replace การแทนที่กฎใหม่ที่มีอยู่แล้วใน chain
-L --list
การแสดงรายการต่างๆของกฏ ของ Chain ที่ก าหนดไว้ เช่น iptables -L iptables -L -t nat iptables -L INPUT
-C, --check ตรวจสอบการมีอยู่ของกฎ iptables –C ตามด้วยกฎการใช้งานที่ต้องการ
-F, --flush การลบกฎต่างๆทั้งหมด ใน Chain เช่น iptables -F
-Z, --zero การตั้ง ค่า Counter ของแพ็กเก็ตและไบต์ให้เป็น “0” (Reset) เช่น iptables -Z INPUT
-N, --new-chain การสร้าง Chain ขึ้นมาใหม่ เช่น iptables -N mychain
-X, --delete-chain การลบ Chain ที่สร้างขึ้นมา ( ไม่สามารถลบ built in Chain ได้)เช่น iptables -X emptychain
-P, --policy การก าหนด Policy ของ Built in Chain (Default Policy เป็น ACCEPT) เช่น iptables -P FORWARD DROP
-E, --rename-chain การเปลี่ยนชื่อ Chain ใหม่ เช่น iptables -E myoldchain mynewchain
-x, --exact การใช้ร่วมกั[บ –L และ –V เพ่ือให้แสดงจ านวนแพ็กเก็ตและจ านวนของ byte ข้อมูลที่ match โดยไม่ให้แสดงหน่วยของ K,M,G เช่น iptables -L OUTPUT -v –x
11
-n, --numeric ใช้ร่วมกับ -L เพ่ือสั่งให้ iptables แสดงข้อมูลไอพีแอดเดรสและ port เป็นตัวเลขเท่านั้น เช่น iptables -L OUTPUT -n
--line-numbers การใช้ร่วมกับ -L เพ่ือแสดงเลขบรรทัดของ rule ซึ้งตัวเลขที่แสดงนี้ จะสามารถใช้ได้กับค าสั่ง insert rule ที่ระบุเป็นล าดับที่ของ rule เช่น iptables -L --line-number
-d, --destination การระบุ ip address ปลายทางในกฏที่ต้องการ match iptables -A INPUT -d 10.20.30.40/32 -p tcp -j ACCEPT
-s, --source การระบุ ip address ต้นทางในกฏที่ต้องการให้ match iptables -A INPUT -s 10.20.30.40/32 -p tcp -j ACCEPT
-p, --protocol การระบุ protocol ต่างๆที่ต้องการจะให้ match iptables -A INPUT -d 10.20.30.40/32 -p tcp --dport 80 -j ACCEPT
-I, --in-interface การระบุ interface ขาเข้า iptables -A INPUT -i eth1 -d 10.20.30.40/32 -p tcp --dport 80 -j ACCEPT
-o, --out-interface การระบุ interface ขาออก iptables -A INPUT -o eth0 -d 10.20.30.40/32 -p tcp --dport 80 -j ACCEPT
อธิบายแพ็กเก็ต (packet) เดินทางในระบบอย่างไร
เมื่อแพ็กเก็ต (packet) เข้ามาถึงไฟร์วอลล์ (Firewall) มันจะผ่านฮาร์ดแวร์เข้ามายังอุปกรณ์ในชั้นเคอร์เนล จากนั้นแพ็กเก็ต (packet) จะเดินทางต่อไปเป็นทอดๆ ก่อนที่จะถูกส่งไปยังปลายทางที่แท้จริง เช่น แอพลิเคชั่นในเครื่องไฟร์วอลล์ หรือ forward ต่อไปยังเครื่องอ่ืน ซึ่งจะยกตัวอย่างเพ่ือให้เห็นภาพอย่างชัดเจน ดังรูปที่ 2.3
12
ด้านล่างแสดงภาพรวมการท างานของ iptables แสดงลักษณะการไหลของข้อมูลที่วิ่งผ่าน iptables รูปที่ 2.3 ถือเป็นสิ่งส าคัญในการท าความเข้าใจการท างานของ iptables
รูปที ่2.3 โครงสร้างการท างานของ iptables
13
ตารางท่ี 2.4 จากรูป 2.3 อธิบายขั้นตอนเมื่อได้รับ packet เข้ามา
Step Table Chain Comment
1 ข้อมูลอยู่ในระหว่างการเดินทาง เช่น ก าลังมาจากอินเทอร์เน็ต
2 ข้อมูลเข้ามายังเครื่องไฟร์วอลล์ผ่านทาง incoming interface (เช่น eth0)
3 mangle PREROUTING ใช้ส าหรับการท า mangling packet เท่านั้น
4 nat PREROUTING
chain นี้ใช้ส าหรับท า Destination Network Address Translation ไม่ควรสร้าง rule เพ่ือกรอง packet ที ่chain นี้ เพราะอาจจะมีบาง packet ที่ไม่เข้าสู่ chain นี้ มีแค่ packet แรกเท่านั้นที่ผ่านเข้าสู่ chain ส่วน packet ถัดไปใน connection เดียวกนันั้น จะถูกกระท าเหมือนกับท่ี packet แรกได้รับ
5 เข้าสู่ Routing process เพ่ือตัดสินใจว่า packet จะถูกส่งไปที่ใด
จากตารางที่ 2.4 แสดงขั้นตอนเมื่อ packet เดินทางเข้ามายังเครื่องไฟร์วอลล์ ผ่านทาง
incoming interface ดังรูปที่ 2.3
ตารางที ่2.5 แสดงการท างานกรณีท่ีมี packet ปลายทางไม่ใช่เครื่องไฟร์วอล์
Step Table Chain Comment 1 หลังจากเข้าสู่ Routing process และตัดสินใจได้ว่า
packet จะถูกส่งไปที่ใด 2 mangle FORWARD ใช้ส าหรับการท า mangling packet
3 filter FORWARD
เนื่องจากในตัวอย่างนี้ packet จะถูกส่งไปยังเครื่องอ่ืนในเครือข่าย ดังนั้น packet จึงต้องผ่านเข้า FORWARD chain ของ filter table ซึ่งสามารถเขียน rule ส าหรับควบคุมการผ่านเข้าออกของ packet ส าหรับ forwarded packet ได้ที่นี่
4 mangle POSTROUTING ใช้ส าหรับการท า mangling packet
14
5
nat POSTROUTING
และก่อนที่ packet จะออกไปจากเครื่องไฟร์วอลล์ โดยส่วนใหญ่ จะผ่าน (ไม่ใช่ทั้ง หมด) chain นี้ ซึ่งใช้ท า Source Network Address Translation ไม่ควรสร้าง rule เพ่ือกรอง packet ที ่chain นี้ เพราะอาจจะมีบาง packet ที่ไม่เข้าสู่ chain นี้ มีแค่ packet แรกเท่านั้นที่ผ่านเข้าสู่ chain ส่วน packet ถัดไปใน connection เดียวกันนั้น จะถูกกระท าเหมือนกับที่ packet แรกได้รับ
6 packet ออกไปทาง outgoing interface
อย่างที่เห็นจากตาราง 2.5 คือ packet ที่มีปลายทางที่ไม่ใช่เครื่องไฟร์วอลล์ อาจจะเป็น
packet ที่มาจากอินเตอร์เน็ตหรืออาจจะเป็น packet ที่มาจากเครื่องลูกในเครือข่ายที่ต้องการส่งออกไปยังอินเตอร์เน็ตหรือที่ใดก็ตามที่ไม่ใช่เครื่องไฟร์วอลล์ ซึ่งไม่ว่าจะส่งไปในทิศทางใด packet ก็จะต้องผ่าน chain ในลักษณะด้านบนนี้เสมอ ตารางท่ี 2.6 แสดงการท างานกรณีท่ีมี packet ปลายทางเป็นเครื่องไฟร์วอล์
Step Table Chain Comment
1 หลังจากเข้าสู่ Routing process และตัดสินใจได้ว่า packet จะถูกส่งไปที่ใด
2 mangle INPUT ใช้ส าหรับการท า mangling packet
3 filter INPUT ทุก packet ที่มีเป้าหมายเป็นเครื่องไฟร์วอลล์จะต้องเข้าสู่ chain นี้เสมอ ไม่ว่าจะมาจากอินเตอร์เฟสใดก็ตาม
4 เข้าสู่ Local Routing process
5 mangle OUTPUT ใช้ส าหรับการท า mangling packet เท่านั้น กรอง packet ที่ chain นี้จะไม่มีผลใดๆต่อ packet
6 nat OUTPUT ไม่ได้ใช้งาน
7 filter OUTPUT ใช้ส าหรับกรอง packet ที่ออกมาจาก localhost หรือ เครื่องไฟร์วอลล์เอง
9 mangle POSTROUTING ใช้ส าหรับการท า mangling packet
15
7 nat POSTROUTING
และก่อนที่ packet จะออกไปจากเครื่องไฟร์วอลล์ โดยส่วนใหญ่ จะผ่าน (ไม่ใช่ทั้ง หมด) chain นี้ ซึ่งใช้ท า Source Network Address Translation ไม่ควรสร้าง rule เพ่ือกรอง packet ที ่chain นี้ เพราะอาจจะมีบาง packet ที่ไม่เข้าสู่ chain นี้ มีแค่ packet แรกเท่านั้นที่ผ่านเข้าสู่ chain ส่วน packet ถัดไปใน connection เดียวกันนั้น จะถูกกระท าเหมือนกับที่ packet แรกได้รับ
อย่างที่เห็นจากตาราง 2.6 คือเมื่อ packet ที่มีปลายทางที่เป็นเครื่องไฟร์วอลล์ อาจจะเป็น packet ที่มาจากอินเตอร์เน็ตหรืออาจจะเป็น packet ที่มาจากเครื่องลูกในเครือข่ายที่ต้องการส่งข้อมูลเข้าไปยังเครื่องไฟร์วอลล์ ก็จะต้องผ่าน chain ในลักษณะด้านบนนี้เสมอ
Filter Table เป็นตารางที่ใช้งานมากที่สุด เป็นจุดที่ใช้ในการตรวจสอบและควบคุมการผ่านเข้าออกของ packet โดยเมื่อ packet เข้ามาในระบบ มันจะเข้าไปยัง routing decision เพ่ือตัดสินใจว่า packet จะถูกส่งไปที่ใด ในกรณีที่ packet ถูกส่งผ่านไปยังเครื่องอ่ืน packet นั้นจะต้องถูกตรวจสอบโดย rule ใน FORWARD chain ถ้า packet นั้น มีเป้าหมายเป็นเครื่องปัจจุบัน (เครื่องที่รัน iptables อยู่นี้ เรียกอีกอย่างว่า (linux box) ตัว packet จะถูกตรวจสอบโดย rule ใน INPUT chain และในกรณีที่ packet ถูกสร้างจากเครื่องปัจจุบัน (linux box) ตัว packet จะถูกตรวจสอบจาก rule ใน OUTPUT chain ก่อนที่จะถูกส่งออกไป
Mangle Table เป็นตารางที่ใช้ส าหรับแก้ไขข้อมูล TOS, TTL, MASK ของ packet ซึ่งโดยปกติแล้วแทบจะไม่ได้ใช้งาน และไม่ควรท า packet filtering หรือกรอง packet ที่ตารางนี้ รวมทั้งไม่ควรท า DNAT, SNAT หรือ Masquerading ที่ตารางนี้อย่างเด็ดขาดด้วย
Nat Table เป็นตารางที่ใช้ส าหรับท า network address translation เช่น เปลี่ยนค่า source ip address, destination ip address จุดส าคัญอีกอย่างหนึ่งที่ต้องรู้ก็คือ มีเพียง packet แรกเท่านั้นที่เข้ามาที่ chain นี้ ส่วน packet ถัดไปนั้นจะถูกกระท าเหมือนที่ packet แรกได้รับ ดังนั้นจึงไม่ควรท า packet filtering ที ่chain เหล่านี้ การใช้งาน Nat table นั้นก็เพียงแต่ใช้ออปชัน -t nat เท่านั้น และ target ที่สามารถใช้งานได้ คือSNAT, DNAT, Masquerade, Redirect ซึ่งมีรายละเอียดดังนี้
16
SNAT การท า source NAT จะท าที่ POSTROUTING chain โดย หลักๆ คือท าการเปลี่ยน source address ก่อนที่จะส่ง packet นั้นออกไป ซึ่งสามารถใช้ออปชัน -o (outgoing interface) ร่วมด้วยได้ นอกจากนี้ยังใช้ -j SNAT และ --to--source หรือ –to-port เพ่ือเปลี่ยนไอพีแอดเดรสหรือ port ไปตามต้องการไดด้ังตัวอย่าง เช่น
ตัวอย่างการเปลี่ยน source ip address เป็น 1.2.3.4 # iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4 ตัวอย่างการเปลี่ยน source ip address เป็น 1.2.3.4, 1.2.3.5 หรือ 1.2.3.6 # iptables -t nat -A POSTROUING -o eth0 -j SNAT --to 1.2.3.4-1.2.3.6
DNAT การท า Destination NAT จะท าภายใต้ PREROUTING chain หลักๆ คือการเปลี่ยนแค่ destination ip address หรือ port ก่อนที่จะส่ง packet ไปยัง routing decision โดยปกติการใช้ งานจะระบุ -j DNAT และใช้ --to-destination หรือ --to และยั งสามารถใช้ -i (incoming interface) ร่วมด้วยไดด้ังตัวอย่าง เช่น
ตัววอย่างการเปลี่ยน destination address เป็น 192.168.1.20 # iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 192.168.1.20
Masquerading การท า masquerade นั้นเป็นหนึ่งในรูปแบบของการท า source NAT
แบบพิเศษ ซึ่งใช้ส าหรับ กรณีที่ได้รับไอพีแบบไม่ซ้ า (dynamically-assigned IP address) เช่น ผู้ที่ใช้โมเด็มล็อกอินเข้าไปยัง ISP (ส าหรับผู้ที่ใช้ static IP address ให้ใช้ SNAT ดังตัวอย่างด้านบน) ซึ่งข้อดีของการท า masquerading คือไม่จ าเป็นต้องระบุค่าของไอพีแอดเดรสที่จะใช้ในการเปลี่ยนเช่น
ตัวอย่างการท า masquerade ส าหรับทุก packet ที่วิ่งผ่านทาง eth0 # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Redirection การท า redirect นั้นเป็นอีกหนึ่งในรูปแบบของการท า Destination NAT แบบพิ เศษ เช่น เปลี่ ยน web traffic โปรโตคอล http ธรรมดาให้ ผ่ านไปยั ง squid proxy (transparent)
ตัวอย่างการใช้งาน iptables redirect # ip tables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to-port 3128
17
ตัวอย่าง การใช้งาน iptables แบบง่ายๆ ในการใช้งาน iptables ในระบบที่ใช้งานจริงนั้น โดยส่วนใหญ่แล้วจะเขียนเป็น script ขึ้นมา ซึ่งมีความซับซ้อนพอสมควร ซึ่งก่อนจะไปถึงขั้นนั้นเรามีวิธีทดลองใช้ค าสั่งง่ายๆ เพื่อท าความเข้าใจหลักการท างานเบื้องต้นของ iptables เช่น ต้องการ drop packet ที่เป็น ICMP ทั้งหมด ที่ออกจากเครื่องนี้ ซึ่งในกรณีนี้ไม่จ าเป็นต้องระบุ source ip address เพราะทุก packet ที่ออกจากเครื่องนี้จะต้องผ่านการตรวจสอบจาก OUTPUT chain
เริ่มการทดสอบโดยทดลอง ping ไปยัง www.nectec.or.th ซึ่งจะได้ผลลัพธ์คล้ายด้านล่างนี้ # ping -c 1 www.nectec.or.th PING google.com (49.231.55.52) 56(84) bytes of data. 64 bytes from 49.231.55.52: icmp_seq=1 ttl=57 time=26.6 ms --- google.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 26.694/26.694/26.694/0.000 ms
ซ่ึง option -c 1 ระบุให้ส่ง packet ออกไปแค่ packet เดียว จากนั้นให้ใช้ค าสั่งดังด้านล่างนี้ เพ่ือ block ICMP packet ที่จะออกจากเครื่องนี้
# iptables -A OUTPUT -p icmp -j DROP จากนั้นทดลอง ping อีกครั้ง เพ่ือตรวจสอบผลลัพธ์ที่ได้
# ping -c 1 google.com PING google.com (49.231.113.24) 56(84) bytes of data. ping: sendto: Operation not permitted — google.com ping statistics — 1 packets transmitted, 0 received, 100% packet loss, time 0ms
ผลลัพธ์แสดงให้เห็นว่า ICMP echo-request packet ดังกล่าวไม่ได้รับอนุญาตให้ผ่าน OUTPUT chain ไปได้ และถ้าหากต้องการลบ rule ดังกล่าวก็สามารถท าได้หลายวิธีคือ
# iptables -F OUTPUT (ซึ่งจะลบทุก rule ใน chain OUTPUT นี้) # iptables -D OUTPUT 1 (เนื่องจากรู้ว่ามี rule เดียวจึงสามารถสั่งลบ rule ล าดับที่ 1 ได้เลย) หรือ # iptables -D OUTPUT -p icmp -j DROP (ลบ rule โดยการระบุออปชันของ rule ที่ต้องการได้โดยตรง)
18
2.4 Linux Traffic Control: tc
ลินุกซ์ ทราฟฟิคคอนโทรล (traffic control) เป็นชุดค าสั่งที่ช้ในการบริหารจัดกานแบนวิธใน
เครือข่าย ซึ่งจะถูกติดตั้งมากับระบบปฏิบัติการลินุกซ์ ( linux ) linux tc จะคอยควบคุมปริมาณ
การใช้งานในระดับแพ็กเก็จ โดยท าหน้าที่ควบคุมกลุ่มและจัดการคิวต่างๆ เป็นระบบกลไกลควบคุม
การท างานในการรับส่งแพ็กเก็จ โดยที่ลินุกซ์ทีซี linux tc จะมีกระบวนการและกลไกลการท างาน
ด้วยกันหลายประเภท แตโ่ดยดีฟอลต์ของระบบปฎิบัติการลินุกซ์จะใช้การควบคุมแบนวิดท์แบบ FIFO
(First-In First-Out) เมื่อข้อมูลเข้ามาในคิวก็จะถูกส่งออกไปตามล าดับการเข้า คือ เข้าก่อนออกก่อน
เข้าทีหลังออกทีหลัง
ค าสั่งที่คอยจัดการคิวในระบบปฎิบัติการลีนุกซ์และจัดการส่งแพ็กเก็จผ่านเครือข่าย เราจะ
เรียกว่า คิวริ่งดิสคริปไลน์(Queuing discipline) หรือ qdisc โดยคิวที่ต่ออยู่กับการ์ดเครือข่ายเรียกว่า
รูทดิส (root disc)
qdisc จะแบ่งออกได้เป็น 2 ประเภท
- คลาสเลส คิวดิส (Classless qdisc)
- คลาสฟูล คิวดิส (Classful qdisc)
2.4.1 Classless Queuing Discipline
คลาสเลส คิวดิส (Classless qdisc) เป็นคลาสอย่างง่ายๆ เพราะท าหน้าที่เพียงแค่
accept, drop, delay or reschedule ข้อมูลในเครือข่าย ซึ่งมีคลาสเดียว ไม่สามารถสร้าง
คลาสย่อยภายใต้ รูทดิสได้ root disc ท าให้ ไม่สามารถควบคุมแบนวิดท์ ได้อย่างมี
ประสิทธิภ าพ คิ วประเภทนี้ จะได้ แก่ pfifo_fast, TBF (Token Bucket Filter) และ
SFQ(Stochastic Fairness Queuing) เป็นต้น
19
Pfifo_fast Qdisc
Classless qdisc ประเภท pfifo_fast qdisc เป็นคิวทีท่ าการส่งแพ็กเก็จเข้ามาแบบ
first in first out (fifo) โดยคิวจะถูกแบ่งออกเป็น 3 ช่องทาง(bands) (0,1,2) ซึ่งแพ็กเก็จที่
อยู่ในช่องที่ 0 จะต้องถูกส่งออกให้หมดก่อนจึงจะยอมให้ช่องที่ 2 ส่งออกไปได้ เช่นเดียวกับ
ช่องที่ 2 ก็ต้องรอ 1 ส่งให้หมดก่อนเช่นกัน โดยแพคเก็จที่เข้ามาจะถูกเข้าแบนด์ด้วยฟิลด์
Type of service ดังรูป 2.4
รูปที ่2.4 โครงสร้างการท างานของ pfifo_fast queuing
20
TBF (Token Bucket Filter)
เป็นคิวที่จะสร้างบัคเก็จ(buckets) แยกออกมาเพ่ือเก็บ Tokens ใช้ในการส่งข้อมูล
โดยแต่ละแพ็กเก็จจะต้องมีการดึง Token นั้นออกไปด้วย เพ่ือควบคุมไม่ให้แพ็กเก็จที่ถูก
ส่งออกไป เกินความเร็วที่ก าหนดไว้ กรณีที่ไม่มี Token เหลือแพคเกตในคิวจะต้องหยุดรอ
Token ที่จะถูกสร้างขึ้นมาเพ่ือให้การส่งแพคเกตออกไปเป็นไปตามความเร็วที่ก าหนด
ดังรูปที่ 2.5
รูปที่ 2.5 โครงสร้างการท างานแบบ Token bucket filter
21
SFQ (Stochastic Fairness Queuing)
กลไกลการท างานของ SFQ โดยหลักการท างานจะสร้างคิวย่อยแบบ fifo หลายๆคิว
เพ่ือที่จะท าให้เกิดการหมุนเวียนการส่งข้อมูล (Round Robin Algorithm) ท าให้เการส่ง
ข้อมูลเกิดความท่าเทียมกัน เพื่อป้องกันการชะงักของแพ็กเก็จในบาง session ช่วยให้การส่ง
ข้อมูลกระจายตัวอย่างสม่ าเสมอไม่กระจุกตัวอยู่ในคิวเดียว การกระจายแพคเกจจะแยกตาม
connection-flow ของการติดต่อระหว่างผู้ส่งและผู้รับแยกตาม TCP session หรือ UDP
stream ดังรูปที่ 2.6
รูปที่ 2.6 โครงสร้างการท างานแบบ Stochastic Fair
22
2.4.2 Classful Queuing Discipline
เป็นระบบคิวที่เพ่ิมความสับซ้อนของระบบการท างาน โดยสามารถสร้างคลาสย่อยๆได้ และ
ก าหนดเงื่อนไขต่างๆได้ เพ่ือจัดประเภทของแพ็กเก็จและก าหนดความเร็วในการจัดส่งได้ ท าให้
สามารถจัดการแบนด์วิธและจัดการควบคุมคิวต่างๆที่มีความซับซ้อนมากขึ้นได้ โดยมีประเภทคิวของ
คลาสฟูล ได้แก่ PRIO, CBQ, HTB เป็นต้น ดังรูปที ่2.7
CBQ Qdisc
CBQ (Class Based Queue) เป็นคิวที่ใช้ส าหรับการจัดการแบนด์วิดท์ส าหรับผู้ใช้
หลายคนที่ใช้สายร่วมกันโดยมีการรับประกันแบนด์วิทด์ส าหรับผู้ใช้งานแต่ละคน ในช่วงเวลา
ที่มีการใช้งานเป็นจ านวกมากเพ่ือที่ไม่ให้เกิเการชะงักของผู้ใช้งานรายใดรายหนึ่ง กล่าวคือ
CBQ นั้นสามารถรับประกันคุณภาพการให้บริการของแต่ละ user หรือผู้ใช้งานได้ การ
ท างานของ CBQ นั้นจะท าโดยสร้าง root disc เป็น CBQ ก่อนจากนั้นสร้างคลาสย่อยใน
ลักษณะที่เป็นล าดับชั้นจากนั้นสร้าง class filter มาเพ่ือคัดแยกแพ็กเกจให้ไปตามคลาส
ต่างๆซึ่งจะท าให้ได้ความเร็วในการส่งตามท่ีก าหนด
HTB Qdisc
HTB (Hierarchical Token bucket) ถึ ง แ ม้ ว่ า CBQ จ ะ เป็ น qdisc ที่ มี
ประสิทธิภาพสูงสุดซึ่งถูกสร้างมาก่อนลินุกซ์เคอร์เนล 2.2 แต่เนื่องจากการท างานของ CBQ
มีความซับซ้อนมากซึ่งในกรณีที่มีปัญหาทางด้านการบริหารจัดการแบนด์วิธ การแก้ไขท าได้
ยากและมีความผิดพลาดได้สูง จึงมีผู้สร้าง qdisc ที่มีลักษณะการท างานคล้ายกันและมี
ประสิทธิภาพใกล้เคียงกัน แต่ความซับซ้อนของการจัดการน้อยกว่า ซึ่งจะมีอยู่ลินุกซ์เวอร์ชั่น
2.4 ขึ้นไป
23
รูปที่ 2.7 โครงสร้างการท างาน Classful qdisc ในการสร้างคลาสลูก
ส่วนประกอบและกลไกลส าคัญในการควบคุมคิวมีดังนี้
- Tc qdisc - Tc class - Tc filters - Policer
จากรูป 2.7 จะแสดงโครงสร้างของคลาสย่อยแต่ละคลาสที่อยู่ภายใต้ root qdisc โดยมี
ลักษณะเป็นแบบล าดับชั้น (Hierachical) เพ่ือควบคุมกลุ่มผู้ใช้งานที่แตกต่างกัน รวมทั้งสามารถ
ก าหนดแบนด์วิดท์ข้ันต่ าหรือแบนด์วิดท์สูงสุดที่ให้บริการภายในคลาส และยังสามารถยืมแบนด์วิดท์ที่
เหลือใช้ภายใต้คลาสแม่เดียวกันได ้
24
Tc qdisc ใช้ส าหรับการจัดการ root qdisc โดยมีลักษณะเป็นแบบล าดับชั้น (Hierachical)
เพ่ือควบคุมกลุ่มผู้ใช้งานที่แตกต่างกัน
Tc class ใช้ส าหรับการจัดการ class ที่ถูกสร้างต่อมาจาก tc qdisc อีกทีเนื่องจากมีการ
ท างานเป็นแบบล าดับชั้น (hierachical) ซ่ึง tc class แต่ละ class จะท าการความคุมคิวต่างๆภายใน
class id ให้เป็นไปตาม bandwidth ที่ถูกก าหนดไว้ โดยถูกก าหนดไว้แต่ละคลาสย่อย
Tc Filter ใช้ส าหรับการคัดแยแพคเกตต่างๆเพ่ือส่งต่อไปยังคลาสต่างๆที่ถูกก าหนดไว้ โดย
คลาสหนึ่งคลาสอาจมีหลาย Filter ก็ได้ ลินุกซ์จะน าแพคเกตที่รับเข้ามาผ่านกระบวนการ Filter ที่ละ
Filter ตามล าดับเพ่ือคัดแยกแพคเกจให้เข้าไปใน qdisc ที่เป็นคลาสลูก ซึ่งจะเรียกกระบวนการนี้ว่า
enquene
Policer ใช้ในการจัดการแพคเกตขาเข้า (ingress traffic) โดยจะท างานร่วมกับ Filter เพ่ือ
ตรวจสอบเงื่อนไขเพ่ือตัดสินใจว่าจะน าแพคเกตเข้ามาเก็บไว้ในคิวหรือลบแพคเกจทิ้งไป
การยืมแบนด์วิธ (bandwidth) จากคลาสแม่ สามารถท าโดยการก าหนด ceil ในกรณีที่เรา
ก าหนดค่า ceil เท่ากับ rate หรือไม่ได้ก าหนด ceil ไว้ หมายถึง ไม่อนุญาติให้ยืมแบนด์วิธจากคลาส
แม่ และหากกรณีที่ก าหนดค่า ceil มากกว่าค่า rate จะหมายถึง อนุญาติให้สามารถยืมแบนด์วิธจาก
คลาสแม่ได้หากคลาสอ่ืนๆภายในคลาสแม่เดียวกันใช้งานไม่เต็ม แต่จะไม่เกินตามค่า ceil ที่ก าหนดไว้
ตัวอย่างการใช้งาน
Interface eth0 [upload]
ท าการสร้าง root qdisc ขึ้นมาก่อนจากนั้นจึงสร้าง class ลูกโดยการก าหนด class id และก าหนด
bandwidth ตามท่ีต้องการก าหนด
tc qdisc add dev eth0 root handle 1:0 htb default 10
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 10mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 2mbit
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 5mbit
25
จากนั้นท าการสร้าง tc filter เพ่ือคอยการจัดการ match package ให้เข้าสู่ class id ต่างๆที่ก าหนด
tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 10 fw flowid 1:10
ซึ่งหลักการ traffic control การท างานจ าเป็นที่จะต้องท าท้ังขาเข้าและขาออกของ package
interface eth1 [download]
ท าการสร้าง root qdisc ขึ้นมาก่อนจากนั้นจึงสร้าง class ลูกโดยการก าหนด class id และก าหนด
bandwidth ตามท่ีต้องการก าหนดและก าหนดให้สามารถยืมแบนด์วิธ (bandwidth) จากคลาสแม่ได้
tc qdisc add dev eth1 root handle 1:0 htb default 10
tc class add dev eth1 parent 1:0 classid 1:1 htb rate 10mbit
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 2mbit ceil 3mbit
tc class add dev eth1 parent 1:1 classid 1:20 htb rate 5mbit ceil 6mbit
tc filter add dev eth1 protocol ip parent 1:0 handle 10 fw flowid 1:20
2.5 ภาษา Structured Query Language (SQL)
เอสคิวเอล (SQL) เป็นโปรแกรมฐานข้อมูลที่ใช้จัดเก็บข้อมูล ท างานในลักษณะไคลเอนต์
เซิร์ฟเวอร์ (Client/Server) โดยจะท างานบนระบบยูนิกซ์ ซิสเต็ม (Unix System) หรือบน win32
ของระบบทั่วไปก็ได้ สามารถใช้งานได้ทั้งคอมมานไลน์ (Command line)หรือผ่านหน้าเว็บบราวเซอร์
(Web Browser)
เอสคิวเอล (SQL) ยังเป็นภาษามาตราฐานที่ใช้ในการเขียนโปรแกรม เพ่ือจัดการกับข้อมูล
โดยเฉพาะ เป็นภาษามาตราฐานบนระบบฐานข้อมูลเชิงสัมพันธ์และเป็นระบบเปิด (open system)
นั่นหมายถึงเราสามารถใช้งานค าสั่งของ SQL บนระบบฐานข้อมูลชนิดใดก็ได้โดยไม่จ าเป็นต้องไปยึด
ติดกับฐานข้อมูลใดข้อมูลหนึ่ง นอกจากนั้น ภาษา SQL เป็นภาษาที่อ่านแล้วท าความเข้าใจได้ง่ายไม่
ซับซ้อนอีกทั้งยังสามารถท างานกับระบบที่มีความซับซ้อนสูงได้ดี
ประเภทของค าสั่งภาษา SQL
1. ภาษานิยามข้อมูล(Data Definition Language : DDL) เป็นค าสั่งที่ใช้ในการสร้างฐานข้อมูล
26
ก าหนดโครงสร้างข้อมูลเช่น
- CREATE TABLE เป็นค าสั่ง ใช้ในการนิยามการสร้างฐานข้อมูลใหม่
- DROP TABLE เป็นค าสั่ง ใช้ในลบโครงสร้างตารางออกจากฐานข้อมูล
- ALTER DATABLE เป็นค าสั่ง ใช้ในการปรับเปลี่ยน แก้ไขปรับปรุงฐานข้อมูล
2. ภาษาจัดการข้อมูล (Data Manipulation Language :DML) เป็นค าสั่งที่ใช้ในการเรียกใช้ เพิ่ม
ลบ และเปลี่ยนแปลงข้อมูลในตาราง เช่น
- SELETE เป็นค าสั่ง ใช้ในการดึงข้อมูลออกมาจากฐานข้อมูล
- UPDATE เป็นค าสั่ง ใช้ในการแก้ไขเปลี่ยนแปลงข้อมูลในฐานข้อมูล
- INSERT เป็นค าสั่ง ใช้ในการเพ่ิมข้อมูลในฐานข้อมูล
- DELETE เป็นค าสั่ง ใช้ในการลบข้อมูลในฐานข้อมูล
3. ภาษาควบคุมข้อมูล (Data Control Language : DCL) เป็นค าสั่งที่ใช้ในการก าหนดสิทธิการ
อนุญาติ หรือ ยกเลิก การเข้าถึงฐานข้อมูล เป็นกการป้องกันความปลอดภัยของฐานข้อมูล เช่นค าสั่ง
- GRANT เป็นค าสั่งส า ใช้ในการให้สิทธิกับบุคคลต่าง ๆ เพ่ือเข้าถึงข้อมูลในระดับที่เรา
ก าหนด
- REVOKE เป็นค าสั่ง ที่มีไว้ส าหรับการยกเลิกสิทธิในการเข้าถึงข้อมูล ของบุคคลต่าง ๆ
ประโยชน์ของภาษา SQL
1. สร้างฐานข้อมูลและ ตาราง ได้อย่างอิสระ และง่าย
2. สนับสนุนการจัดการฐานข้อมูล โดยสามารถเพ่ิมข้อมูล ลบข้อมูลหรือ แก้ไขข้อมูลได้ง่าย
3. สนับสนุนการเรียกใช้หรือ ค้นหาข้อมูลได้สะดวกรวดเร็ว
4. สนับสนุนการใช้งานในระดับสิทธ์ของการเข้าถึงข้อมูลภายในฐานข้อมูล
27
2.6 SNMP
SNMP (Simple Network Management Protocol) คื อ Protocol ชนิ ดหนึ่ งส าห รับ
รวบรวมข้อมูลเกี่ยวกับอุปกรณ์ในระบบที่มีการเชื่อมต่อกันด้วยเน็ทเวิร์ก เพ่ือบอกข้อมูลการ
เปลี่ยนแปลงของอุปกรณ์ ซึ่งตัวจัดการการเก็บข้อมูลเกี่ยวกับอุปกรณ์ต่ างๆภายในระบบจะเรียกว่า
MIB (management information base) องค์ประกอบพื้นฐานของ SNMP จะประกอบด้วย
1. Network Management Station (NMS)
2. Managed Device
3. Agent
โครงสร้างของ SNMP เป็นโพรโตคอลที่ท างานในระดับ Application Layer ท างานผ่าน
โพรโตคอล UDP (User data protocol) ที่พอร์ท 161 ส าหรับค าสั่งจัดการและ 162 ส าหรับ Trap
รายงานข้อมูลจาก Agent
2.7 Log Rotate
Log Rotate คือ กลไกลการจัดการ log file ของระบบปฎิบัติการลีนุก linx หรือ unix ท า
หน้าที่คอยลบข้อมูล log file เก่าออกจากระบบ เพ่ือป้องกันปัญหาการกินทรัพยากรเนื้อที่บน Hard
disk ของเครื่อง server ที่ไม่มีการควบคุมขนาดและจ านวนของ log file ดังนั้นการ rotate log file
คือการสร้างไฟล์ใหม่ข้ึนมาแทนที่หรือทับไฟล์เดิม ซึ่งจะช่วยลดปัญหาการกินทรัพยากรฮาดดิสได้ โดย
สามารถเก็บเป็นไฟล์ลักษณ text file และยังสมารถท าการบีบอัดเป็น zip file ได้อีกด้วย
การใช้งาน log rotate ค าสั่ง option ที่ใช้งาน
- Daily, weekly, monthly หมายถึง การสั่งให้ท าการ rotate file (สร้างไฟล์ใหม่) ในทุกๆ
วัน (daily), ทุกๆสัปดาห์ (weekly) หรือ ของทุกๆเดือน (monthly)
- Rotate xx หมายถึง การสั่งให้ท าการ rotate file (สร้างไฟล์ใหม่) ตามจ านวนครั้งที่ก าหนด
เช่น ก าหนดเป็น daily rotate 90 หมายถึง ขึ้น log file ใหม่ทุก
วันจนครบ 90 ครั้งจากนั้นจะวนเขียนทับไฟล์เดิม
28
- Compress หมายถึง การสั่งให้ท าการบีบอัดข้อมูล log file โดยการ Zip
- Delay compress หมายถึง การสั่งให้เลือนการบีบอัดข้อมูลออกไปก่อน 1 รอบ rotate
โดยการงานจะมีผลก็ต่อเมื่อใช้คู่กับ compress
- Olddir /var/og หมายถึง การสั่งให้ย้าย path log file ไปยัง path ที่ก าหนด
- Notifemply หมายถึง การสั่งให้ไม่ต้องท าการ rotate หาก log file นั้นว่าง
- Size หมายถึง การสั่งให้ท าการ rotate เมื่อ log file มีขนาดใหญ่กว่าขนาดที่ก าหนด
- Postrotate / endscript หมายถึง การสั่งให้ท าการรันค าสั่งการท างานบางอย่างหลังจาก
rotate ไปแล้ว ตามด้วย endscript หากต้องการให้จบชุดค าสั่ง
- Mail หมายถึง การสั่งให้ระบบส่ง log file ออกไปยังอีเมล์ email ที่ก าหนด เช่น อีเมล์ของ
ผู้ดูแลระบบ
ตัวอย่าง # vi /etc/logrotate.conf ดังรูปที่ 2.8
รูปที ่2.8 แสดงตัวอย่างการใช้งาน logrotate
29
บทที่ 3
ระบบที่น าเสนอ
3.1 ภาพรวมของระบบ
ระบบควบคุมการใช้งานอินเตอร์เน็ตโรงพยาบาล ระบบต้องสามารถแสดงผลข้อมูล และส่ง
ค าสั่งการท างานต่างๆผ่านทาง web application โดยจะถูกออกแบบมาให้ง่ายต่อการบริหารจัดการ
แบนวิธที่มีอยู่ เพ่ือให้เกิดประสิทธิภาพสูงสุด และง่ายต่อการบริหารจัดการควบคุม และเพ่ิมฟังชั่นการ
ท างานร่วมกับระบบโรงพยาบาลในการยืนยันตัวตน เพ่ือลดภาระหน้าที่การท างานของเจ้าหน้าที่หรือ
ผู้ดูแลระบบ ดังรูปที่ 3.1
3.1.1 องค์ประกอบของระบบ
- Web application ท าหน้าที่แสดงผลข้อมูลในส่วนการท างานต่างๆของระบบ ช่วย
อ านวยความสะดวกในการบริหารจัดการแบนวิธ ก าหนดค่า download upload
ต่างๆผ่านทางหน้าเว็บแอพพลิเคชั่น แสดงผลเป็นหน้า management ภาพรวมการ
รูปที่ 3.1 ภาพรวมการท างานของระบบ
30
ใช้งานต่างๆ ท าการเรียกดูข้อมูลจากฐานข้อมูล เช่น จ านวนผู้ใช้งาน username
password เป็นต้น
- Database server ท าหน้าที่เก็บข้อมูลการใช้งานต่างๆ เช่นการตั้งค่าการ upload
download ข้อมูลผู้ใช้งาน จ านวนวันการใช้งาน ระยะเวลาการใช้งาน
- Traffic control ท าหน้าที่คอยบริหารจัดการ แบนทวิธที่มีทั้งหมดให้ คอย
ควบคุมอัตตราการใช้งานต่างๆ โดยค าสั่งจะถูกส่งผ่านทาง web application เป็น
ตัวสั่งการท างาน ควบคุมค่า upload dwonload ต่างๆของผู้ใช้งานภายในระบบ
3.2 ขั้นตอนในการด าเนินงาน
3.2.1 ท าการเตรียมเครื่อง server 1 เครื่อง โดยก าหนดให้ติดตั้งระบบปฎิบัติการ CentOS
จะท าหน้าที่เป็น linux internet gateway และท าหน้าที่เป็น web server
3.2.2 ท าการติดตั้งแอ๊พพลิเคชั่น (application) เพ่ือให้รองรับการท างานในระบบต่างๆ เช่น
DHCP, web service apache, database mysql, samba
3.2.3 ท าการออกแบบ database การจัดเก็บข้อมูล , ออบแบบการควบคุมแบนด์วิธ ,
ออกแบบการท างานของ web application และหน้าการใช้งานต่าง
3.2.4 กระบวนการติดตั้ง
เซิร์ฟเวอร์เสมือน (Virtual server) VMware Player7 ใช้เป็นตัวทดสอบการท างาน
3.2.4.1 รายละเอียดของเครื่องเซิฟเวอร์
1) หน่วยเก็บข้อมูลหลักขนาด 40 กิกะไบท์
2) หน่อยเก็บความจ าหลักขนาด 2048 เมกะไบท์
3) เน็ตเวิร์คอินเตอร์เฟสการ์ดแลนจ านวน 2ใบ
4) ระบบปฎิบัติการลินุกซ์ เซนโอเอส (centos7)
5) แอพพลิเคชั่น ดีเอสซีพีดี DHCPD
6) แอพพลิเคชั่น Samba
7) แอพพลิเคชั่น ไอพีเทเบิล iptables
8) แอพพลิเคชั่นมายเอสคิวเอล mysql
9) แอพพลิเคชั่นอาปาเช่ apache
31
3.2.4.3 รายละเอียดของเครื่องไคลเอน
1) หน่วยเก็บข้อมูลหลักขนาด 40 กิกะไบท์
2) หน่อยเก็บความจ าหลักขนาด 1048 เมกะไบท์
3) เน็ตเวิร์คอินเตอร์เฟสการ์ดแลนจ านวน 1ใบ
4) ระบบปฎิบัติการ windows 8
3.3 การออกแบบระบบการท างาน
3.3.1 Flow Chart
3.3.1.1 แสดงขั้นตอนกระบวนการท างานของการเก็บและเพ่ิมข้อมูลอัตโนมัต ดังรูป
ที ่3.2
1) ระบบจะท าการวนอ่านข้อมูลที่ //share parth ทุกๆ 2 นาท ี
2) ระบบจะท าการตรวจสอบชื่อไฟล์ register, admit, discharge
3) ถ้าระบบตรวจสอบชื่อไฟล์พบไฟล์ discharge ระบบจะท าการ
disable user นั้นโดยส่งค าสั่ง Sql update status = 0
4) End
5) ถ้าระบบตรวจสอบชื่อไฟล์พบไฟล์ register, admit
6) ระบบจะท าการตรวจสอบหมายเลขประจ าตัวของผู้ป่วย ถ้ามีอยู่
แล้วจะส่งค าสั่ง Sql update ข้อมูลผู้ป่าวย แต่ถ้ายังไม่มีในระบบ
จะท าการส่งค าสั่ง Sql insert ข้อมูลผู้ป่วยใหม่ พร้อมกับ set
username password field
7) ก าหนดให้ username ผู้ใช้งานกรณีผู้ป่วยใน = เลขห้องผู้ป่วย
และใช้ uername ผู้ใช้งานกรณผีู้ป่วยนอก = เลขคิว 6 หลัก
8) ก าหนดให้ password = วัน/เดือน/ปี เกิดผู้ป่วย
32
รูปที ่3.2 ขั้นตอนกระบวนการท างานของการเก็บและเพ่ิมข้อมูลอัตโนมัต
33
ข้อมูลภายใน text file จะประกอบไปด้วยข้อมูลต่อไปนี้ ดังรูปที่ 3.3, 3.4, 3.5
HN EN ล าดับคิวในการรักษา หรือเลขห้องกรณีผู้ป่วย IPD (
ก าหนดให้เป็น username 6ตัวท้าย ) Patient Name Date of Birth ( ก าหนดให้เป็น password ) Episode Type
รูปที ่3.3 ตัวอย่าง file Admit
รูปที่ 3.4 ตัวอย่าง file Register
รูปที่ 3.5 ตัวอย่าง file Discharge
34
3.3.1.2 แสดงขั้นตอนกระบวนการเพ่ิมกลุ่มผู้ใช้งานเข้าระบบ ดังรูปที่ 3.6
1. ผู้ดูแลระบบท าการกรอกข้อมูลชื่อกลุ่ม
2. ผู้ดูแลท าการเลือกข้อมูล upload และ download
3. กด save เพ่ือให้ระบบท าการติดต่อฐานข้อมูลในการ insert
ข้อมูลใหม่ลงระบบ
รูปที่ 3.6 แสดงขั้นตอนกระบวนการเพ่ิมกลุ่มผู้ใช้งานเข้าระบบ
35
3.3.1.3 แสดงขั้นตอนกระบวนการเพ่ิมชื่อผู้ใช้งาน (account) เข้าระบบด้วยตัวเอง
ดังรูปที่ 3.7
1) ผู้ดูแลระบบท าการเพ่ิมชื่อผู้ใช้งาน (account) โดยการกรอก
ข้อมูลชื่อ นามสกุล และ username password ให้ครบถ้วน เพ่ือ
การขอเข้าใช้งานระบบ
2) เลือกกลุ่มของผู้ใช้งาน
3) เมื่อระบบตรวจสอบข้อมูลทั้งหมดถูกต้อง ระบบจะท าการติดต่อ
กับฐานข้อมูล (Sql) เพ่ือ insert ข้อมูลผู้ใช้งานเข้าระบบฐานข้อูล
รูปที ่3.7 แสดงขั้นตอนกระบวนการเพ่ิมชื่อผู้ใช้งาน
36
3.3.1.4 แสดงขั้นตอนกระบวนการท างานของระบบยืนยันตัวตน
(Authentication) เพ่ือเข้าใช้อินเตอร์เน็ต ดังรูปที่ 3.8
1) ผู้ใช้งานเชื่อมต่อระบบ และได้รับไอพีแอดเดรสจากระบบ
2) ระบบจะท าการ redirect traffic ไปยัง web service เพ่ือเข้าสู่
กระบวนการ login เพ่ือเข้าใช้งานระบบอินเตอร์เน็ต
3) ขั้นต้อนการ login ผู้ใช้งานจะต้องกรอกข้อมูล username
password ตามฟอร์แมตที่ก าหนดไว้ โดย username = เลขคิว 6
หลักสุดท้ายหรือเลขห้องพัก password = วัน/เดือน/ปีเกิด ของ
คนไข้
4) จากนั้นระบบจะท าการตรวจสอบ username และ password
5) ตรวจสอบสถานะการใช้งาน โดยก าหนดให้
Status = 0 คือระงับการใช้งาน
Status = 1 คือสามารถใช้งานได้
และตรวจสอบจ านวน max_address ต้องไม่มากกว่า ค่า
max_device
6) ระบบจะท าการ update ประวัติการใช้เข้างาน
7) เพ่ิมกฎของไอพีเทเบิลเพ่ืออนุญาติให้สามารถใช้งานอิเตอร์เน็ต
8) แสดงหน้ารายละเอียดของผู้ใช้งาน
37
รูปที่ 3.8 ขั้นตอนการท างานของระบบ Authentication เพ่ือเข้าใช้งาน
38
3.3.1.5 แสดงขั้นตอนกระบวนการท างาน Logout ของระบบ ดังรูปที่ 3.9
1) เมื่อผู้ใช้งาน กดปุ่ม Logout ระบบจะท าการตรวจสอบข้อมูล
Mac_address & ip
2) ระบบจะท าการลบกฎ rlue และ mac_address ออกจากระบบ
3) SQL update status login = 0
4) ระบบท าการ redirect ไปยังหน้า login
รูปที่ 3.9 แสดงขั้นตอนกระบวนการท างาน Logout ของระบบ
39
3.3.1.6 แสดงขั้นตอนกระบวนการท างาน auto logout ของระบบ ดังรูปที ่3.10
- Script จะเริ่มท างานทุกๆ 3 ชั่วโมง โดยจะตรวจสอบผู้ใช้งานใน
ระบบที่ไม่มีการอัพเดทข้อมูลนานเกินจากเวลาที่ก าหนด
รูปที ่3.10 แสดงขั้นตอนกระบวนการท างาน auto logout
40
3.3.1.7 แสดงขั้นตอนการควบคุม Bandwidth ดังรูปที่ 3.11
- สร้าง root qdisc ของระบบขึ้นมาโดยผูกับ interface eth1
- สร้าง class qdisc ขึ้นมา ก าหนด class id และก าหนด
bandwidth ให้กับคลาส
- ก าหนด filter เพ่ือให้ package ถูกจัดการเข้า class id ที่ก าหนด
ไว้
รูปที ่3.11 แสดงขั้นตอนการควบคุม Bandwidth
41
3.4 การออกแบบระบบฐานข้อมูล
รูปที ่3.12 ภาพรวมโครงสร้างฐานข้อมูล
จากรูปที่ 3.12 คือการออกแบบโครงสร้างฐานข้อมูลโดยจะมีรายละเอียดตารางทั้งหมด 4 ตารางดังนี้
Patient_Account Table ดังตาราง 3.1
Groups_Account Table ดังตาราง 3.2
Active_login Table ดังตาราง 3.3
Login_log Table ดังตาราง 3.4
ตารางท่ี 3.1 Patient_Account
Attribute Type Length Description Key Null
patient_id Integer 11 ล าดับผู้ใช้งาน PK No
first_name Varchar 15 ชื่อผู้ป่วย No
last_name Varchar 15 นามสกุลผู้ป่วย No
username Varchar 15 ชื่อผู้ใช้งาน No
42
password Varchar 10 รหัสผู้ใช้งาน No
hospital_number Varchar 12 หมายเลขประจ าตัวคนไข้ No
episode_number Varchar 14 เลขล าดับในการมาหาหมอ Yes
episode_type Char 1 ประเภทของผู้ป่วย Yes
room Varchar 10 หมายเลขห้องผู้ป่วย Yes
date_of_birth Varchar 10 วันเดือนปีเกิด No
gender Char 1 ประเภทของผู้ป่วย No
max_device Tinyint 0-255 จ านวนอุปกรณ์ที่ใช้ได้ No
level Varchar 10 สิทธิ์การเข้าถึงหน้า admin No
g_id Tinyint 0-255 หมายเลขกลุ่มผู้ใช้งาน FK No
status Tinyint 0-255 สถานะการใช้งาน
0 = ระงับการใช้งาน
1 = ใช้งานได้
No
date_create Datetime แสดงวันเวลาที่เริ่มเข้าระบบ No
date_modify Datetime แสดงวันเวลาที่มีการแก้ไข No
ตารางท่ี 3.2 Groups_Account
Attribute Type Length Description Key Null
g_Id Tinyint 0-255 ล าดับกลุ่มผู้ใช้งาน PK No
g_name Varchar 30 ชื่อกลุ่มผู้ใช้งาน No
g_dlspeed Tinyint 0-255 ค่าก าหนดในการ
Download
No
g_ulspeed Tinyint 0-255 ค่าก าหนดในการ Upload No
g_timelimit DateTime ก าหนดระยะเวลาใช้งาน No
g_status Tinyint 0-255 สถานะกลุ่ม
0 = ระงับการใช้งาน
1 = สามารถใช้งานได้
No
43
ตารางท่ี 3.3 Active_login
Attribute Type Length Description Key Null
active_id Integer 11 ล าดับผู้ใช้งาน PK No
patient_Id Integer 11 ล าดับผู้ใช้งาน FK No
mac_address Varchar 19 หมายเลขเครื่องผู้ใช้งาน No
ip_address varchar 15 หมายเลข IP ผู้ใช้งาน No
start_time Datetime วันที่เริ่มใช้งาน No
login_status Tinyint 4 สถานะการใช้งาน No
last_update Datetime ระยะเวลาที่ใช้งาน No
g_id tinyint 0-255 ล าดับกลุ่มผู้ใช้งาน No
ตารางท่ี 3.4 Login_Log
Attribute Type Length Description Key Null
id Integer 11 ล าดับผู้ใช้งาน PK No
patient_id Integer 11 ล าดับผู้ใช้งาน No
mac_address Varchar 19 หมายเลขเครื่องผู้ใช้งาน No
ip_address varchar 15 หมายเลข IP ผู้ใช้งาน No
start_time Datetime วันที่เริ่มใช้งาน No
44
3.5 การออกแบบหน้า GUI ของระบบ
3.5.1 แสดงหน้าจอการออกแบบระบบการเข้าใช้งาน Login ของผู้ดูแลระบบ ดังรูปที่ 3.13
รูปที่ 3.13 แสดงหน้าจอการ login ระบบ
3.5.2 แสดงหน้าจอภาพรวมการท างานของระบบ เมื่อผู้ดูแลระบบ login เสร็จแล้ว โดยจะแสดง
สถานะการท างานของระบบเช่น ชื่อเครื่อง, system uptime, memory, disk usage ดังรูปที่ 3.14
รปูท่ี 3.14 ตัวอย่างหน้าจอหน้าเว็บการจัดการของระบบ
45
บทที่ 4
ผลการทดลอง
4.1 โครงสร้างของระบบ
ท าการทดลองโดยใช้งาน Vmware ซึ่งประกอบไปด้วย Vmware 2 เครื่อง1 โดยมีหนึ่งเครื่อง
ท าหน้ าที่ เป็ น internet gateway (CentOS7) และอีกเครื่องเป็ น client (Windows8) โดยมี
สภาพแวดล้อมโดยรวม ดังรูปที ่4.1
รูปที ่4.1 แสดงโครงสร้างการท างานของระบบ
ทดสอบการท างานของ php script โดยน าไฟล์ที่เตรียมไว้ copy ไปวางไว้ใน share path ที่
เราก าหนดไว้และรอจนกว่า server จะอ่านข้อมูลจากไฟล์เมื่ออ่านเสร็จก็จะท าการติดต่อกับ
ฐานข้อมูลเพื่อเพ่ิมข้อมูลผู้ใช้งานเข้าระบบแบบอัตโนมัต ดังรูป 4.2
46
รูปที ่4.2 แสดงตัวอย่าง // path file
4.2 ทดสอบควบคุม Bandwidth สภาพแวดล้อมการทดลอง
รูปที ่4.3 สภาพแวดล้อมจ าลองเพ่ือท าการทดสอบระบบ
เพ่ือให้การทดลองเกี่ยวกับการควบคุมแบนด์วิธให้ เป็นไปตามที่ ก าหนด จึง จ าลอง
สภาพแวดล้อมโดยท าการสร้างเครื่อง gateway และก าหนดให้ gateway server ให้มี 2 การ์ดแลน
และก าหนดให้ interface eth0 เชื่อมต่อกับอินเตอร์เน็ตภายนอกดังรูปที่ 4.3 และก าหนดให้
interface eth1 ให้แจก IP เป็นแบบ DHCP ไปยังเครื่อง client
47
ท าการควบคุม แบนด์วิธของ interfacet eth0 และ eth1
Interface eth0 [upload]
ท าการสร้าง root qdisc ขึ้นมาก่อนจากนั้นจึงสร้าง class ลูกก าหนด class id และก าหนด
bandwidth ตามท่ีต้องการก าหนด
tc qdisc add dev eth0 root handle 1:0 htb default 10
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 10mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 2mbit
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 5mbit
จากนั้นท าการสร้าง tc filter เพ่ือเป็นการจัดการ match package ให้เข้าสู่ class id ที่ก าหนด
tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 10 fw flowid 1:10
interface eth1 [download]
iptables -t mangle -A FORWARD -d 172.16.0.114 -j MARK --set-mark 10
tc qdisc add dev eth1 root handle 1:0 htb default 10
tc class add dev eth1 parent 1:0 classid 1:1 htb rate 10mbit
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 2mbit
tc class add dev eth1 parent 1:1 classid 1:20 htb rate 5mbit
tc filter add dev eth1 protocol ip parent 1:0 handle 10 fw flowid 1:20
48
แสดงผลการทดสอบควบคุม Bandwidth เมื่อก าหนด linux tc เรียบร้อยแล้วได้ผล ดังรูปที่ 4.4
รูปที ่4.4 ผลการทดสอบควบคุมแบนด์วิธ
4.3 ทดสอบการใช้งานหน้ายูเซอร์ล็อคอิน (User login)
ล าดับแรกให้ user ท าการเชื่อต่อเข้ามาในระบบ ซึ่งจะได้รับ IP Address จาก DHCP
server ของระบบ เมื่อผู้ใช้งาน (user) ท าการเปิดเว็บ web browser ระบบ mark package และท า
การ redirect traffic เข้าไปสู่หน้าเว็บ login ก่อนโดยผู้ใช้งานต้องกรอก username password ให้
ถูกต้องก่อนเพ่ือเข้าสู่การใช้งาน internet ดังรูปที่ 4.5
49
รูปที ่4.5 แสดงหน้าจอ login ส าหรับผู้ใช้งาน
เมื่อท าการ login ผ่านระบบ Authentication เรียบร้อยแล้ว ระบบจะแสดงข้อมูลเบื้องต้น
ของผู้ใช้งานเช่น ข้อมูล IP address, upload/download และแสดงข้อความเตือนไม่ให้ปิดหน้าจอ
ดังรูป 4.6
รูปที ่4.6 แสดงข้อมูลผู้ใช้งานเมื่อท าการ login เข้าระบบเรียนร้อยแล้ว
50
เมื่อผู้ใช้งานทั่วไปท าการ login เสร็จเรียบร้อย ระบบจะท าการเปลี่ยนการ mark package
และเพ่ิมกฎของ iptables เพ่ือนอนุญาติให้สามารถเข้าใช้งาน internet ดังรูป 4.7
รูปที ่4.7 แสดงผลการใช้งาน internet
แสดงทดสอบโดยการท างาน ping google.com ดังรูปที่ 4.8
รูปที ่4.8 แสดงผลการทดสอบ ping ออก internet
51
4.4 ทดสอบเข้าใช้งานแอดมินล็อคอิน (Administrator login)
ล าดับแรกให้ผู้ดูแลระบบ (administrator) ท าการเชื่อต่อเข้ามาในระบบ ซึ่งจะได้รับ IP
Address จาก DHCP server ของระบบ จากนั้นเมื่อผู้ดูแลระบบ (administrator) ท าการเปิดเว็บ
web browser ระบบจะท าการ redirect เข้าไปสู่หน้าเว็บ login และจากนั้นผู้ดูแลระบบต้องเข้าที่
path /admin โดยพิมพ์ https://172.16.0.1/admin/ ระบบจะแสดงหน้าล็อคอินส าหรับผู้ดูแล
ระบบขึ้นมา ดังรูป 4.9
รูปที ่4.9 แสดงหน้าจอส าหรับผู้ดูแลระบบ
เมื่อผู้ดูแลระบบเข้า login ส าเร็จ ระบบจะแสดงหน้า System information ที่สามารถบอก
สถานะและข้อมูลพ้ืนฐานของตัวระบบ เช่นบอกการใช้งานของ cpu , memory, hard disk,
network, hostname, system uptime เป็นต้น ดังรูปที่ 4.10
52
รูปที ่4.10 แสดงผลหน้าจอ System information
การแก้ไขค่าไอพีแอดเดรส (IP Address) ของระบบ สามารถท าได้ผ่านหน้าเว็บแอพพลิเคชั่น
โดยผู้ดูแลรับสามารถตั้งค่าได้เลยผ่านหน้านี้ สามารถปรับเปลี่ยนไอพีแอดเดรส ( IP Address) ตาม
การใช้งานที่เปลี่ยนไปจากหน้าเว็บแอพพลิเคชั่นได้เลย ดังรูป 4.11
รูปที ่4.11 แสดงผลหน้าจอการตั้งค่า IP Interface
53
หน้าจอ Maintenace จะมีเมนูให้ผู้ดูแลระบบใช้งานอยู่ 2 เมนูคือ Reboot system,
Shutdown ดังรูปที่ 4.12
รูปที ่4.12 แสดงผลหน้าจอการ maintenance server
หน้าจอการเพ่ิมผู้ใช้งานเข้าระบบ (Add user) หน้านี้สามารถเพ่ิมผู้ใช้งานใหม่ได้ครั้งละคน
โดยผู้ดูแลระบบต้องกรอกข้อมูลชื่อจริง นามสกุลจริง เลือกกรุ๊ป และกรอก username password
ส าหรับเข้าใช้งาน internet ดังรูปที่ 4.13
รูปที ่4.13 แสดงผลหน้าจอการเพิ่มผู้ใช้งานเข้าระบบ
54
หน้าจอแสดงรายละเอียดข้อมูลผู้ใช้งานทั้งหมดของระบบ ผู้ดูแลระบบสามารถบริหารจัดการ
ข้อมูลผู้ใช้งานผ่านหน้านี้ และสามารถคลิกปุ่นตรงช่อง edit เพ่ือแก้ไข้ข้อมูลและเปลี่ยนแปลงค่าต่างๆ
ของผู้ใช้งานได้ ดังรูปที่ 4.14
รูปที ่4.14 หน้าจอแสดงผลผู้ใช้งานทั้งหมดในระบบ
หน้าจอ edit user จากรูป 4.12 เมื่อผู้ดูแลระบบ(Administrator) เข้าสู่หน้า edit user
ผู้ดูแลระบบจะสามารถแก้ไขข้อมูลผู้ใช้งานได้ผ่านหน้านี้ ดังรูป 4.15
รูปที ่4.15 หน้าจอแสดงผลการแก้ไขผู้ใช้งาน
55
หน้าจอ Group user ผู้ดูแลระบบสามารถ เพ่ิม, ลด กลุ่มผู้ใช้งานโดยผู้ดูแลระบบต้องกรอก
ข้อมูลชื่อกลุ่มและก าหนดค่า upload, download ตามความเหมาะสมของการใช้งาน จากนั้นกด
save ระบบจะท าการติดต่อกับฐานข้อมูลเพ่ือบันทึกหรือสั่งลบข้อมูลของระบบจากฐานข้อมูล ดังรูป
4.16
รูปที ่4.16 แสดงผลหน้าจอการเพิ่มกลุ่มผู้ใช้งาน
หน้าจอการตั้งค่า DHCP ผู้ดูแลระบบสามารถตั้งค่า Start IP Address, End IP Address,
Subnet Mask และ Lease Time ได้ตามต้องการ และเมื่อกรอกข้อมูลเสร็จแล้วกด Save ระบบจะ
ท าการส่งค าสั่งไปทึกข้อมูลลงเซิฟเวอร์ทันที ดังรูป 4.17
56
รูปที ่4.17 แสดงหน้าจอการตั้งค่า DHCP ของระบบ
หน้าจอการตั้งค่า DNS ผู้ดูแลระบบสามารถตั้งค่า DNS ของระบบได้ตามต้องการ เมื่อใส่
ข้อมูลเสร็จแล้วกด Save ระบบจะท าการส่งค าสั่งไปทึกข้อมูลลงเซิฟเวอร์ทันที ดังรูป 4.18
รูปที ่4.18 แสดงผลหน้าจอการตั้งค่า DNS ของระบบ
57
4.5 ทดสอบติดตั้งและตั้งค่า DHCP
ตัวอย่างการติดตั้ง DHCP
ตัวอย่างค าสั่ง [root@localhost]# yum –y install dhcp จากนั้นจะได้ผลลัพธ์ดังรูปที่ 4.19
รูปที่ 4.19 ผลลัพธ์จากการติดตั้ง DHCP
เมื่อท าการติดตั้งเสร็จเรียบร้อยให้ใช้ค าสั่ง [root@localhost]# vi
/etc/dhcp/dhcpd.conf เพ่ือท าการตั้งค่า DHCP ดังรูปที่ 4.20
รูปที ่4.20 แสดงข้อมูลการก าหนดค่า DHCP
58
ท าการเปิดการใช้งาน DHCP ดังค าสั่งด้านล่างจะได้ผลลัพธ์ดังรูปที่ 4.21
[root@hospital ~]# service dhcpd start
[root@hospital ~]# systemctl enable dhcpd
[root@hospital ~]# service dhcpd status
รูปที ่4.21 แสดงการท างานของ DHCP
IP Address ของเครื่อง Vmware client windows 8 ที่ได้ข้อมูลจาก DHCP Server ดังรูป 4.22
รูปที่ 4.22 แสดงผลการจ่ายไอพีของ DHCP server
59
บทที่ 5
สรุปผลการด าเนินงาน
5.1 สรุปผลการด าเนินงาน
เมื่อเริ่มศึกษาและทดสอบทฤษฎีที่เกี่ยวข้องกับระบบที่จัดท าขึ้น และท าการทดสอบระบบ
แล้ว ระบบที่จัดท าสามารถท าตามวัตถุประสงค์ที่ตั้งไว้และยังสามารถอ านวยความสะดวกให้กับ
ผู้ใช้งานและผู้ที่ดูแลระบบได้เป็นอย่างดี โดยผู้ดูแลระบบจัดท าเอกสารเพ่ือแจกให้ผู้ใช้งานทั่วไป ท า
ให้ช่วยประหยัดการใช้กระดาษ และช่วยลดปัญหาการสื่อการกับเจ้าหน้าที่ ผู้ดูแลระบบสามารถ
ตรวจสอบดูสถานะการท างานของระบบผ่านเว็บแอพพลิเคชั่น และสามารถจัดสรรแบนด์วิดท์ให้กับ
ผู้ใช้งานได้ตามความเหมาะสมของขนาดแบนด์วิดท์
5.2 ข้อเสนอแนะในการพัฒนาโครงงานต่อไปในอนาคต
พัฒนาให้ ให้ ระบบมีหน้ าตาสวยงามและน่ าใช้ งานมากยิ่ งขึ้น , พัฒนาเรื่องการท า
loadbalance, และพัฒนาต่อยอดให้สามารถท างานร่วมกับระบบอ่ืน ๆ ได้มากขึ้น
60
เอกสารอ้างอิง
[1] Martin A. Brown, Traffic Control HOWTO, Oct 2006
[2] Tony Hill, IP TABLES A Beginner’s Tutorial, Mar 2013
[3] Lucian Gheorgh, Linux Firewalls and QoS using netfilter, iproute2, NAT, and L7-
filter, UK:packt publishing, Oct 2006
[4] Shell Script [Online].http://ftp.psu.ac.th/pub/bash-howto/Shell%20Script.pdf, 2006
ภาคผนวก ก
การติดตั้งและตั้งค่าระบบเบื้องต้น
ก-1
ภาคผนวก ก
การติดตั้งและตั้งค่าระบบเบื้องต้น
การตั้งค่า IP Address
การตั้งค่า IP Address Interface eth0 สามารถใช้ค าสั่ง vi /etc/sysconfig/network-
script/ifconfig-eth0 ดังรูปที่ ก.1
รูปที ่ก.1 การตั้งค่า eth0
การตั้งค่า IP Address Interface eth1 สามารถใช้ค าสั่ง vi /etc/sysconfig/network-
script/ifconfig-eth1 ดังรูปที่ ก.2
รูปที ่ก.2 การตั้งค่า eth1
ก-2
วิธีการตรวจสอบข้อมูลของ network interface ต่างๆ ด้วยค าสั่ง ifconfig ดังรูปที่ ก.3
รูปที่ ก.3 แสดงค าสั่งการท างาน ifconfig
การตั้งค่า DHCP
ตัวอย่างการติดตั้ง DHCP
โดยการใช้ค าสั่ง [root@localhost]# yum –y install dhcp จะได้ดังรูปที่ ก.4
ก-3
รูปที่ ก.4 ผลลัพธ์จากการติดตั้ง DHCP
ตัวอย่างการตั้งค่า DHCP
โดยใช้งานค าสั่ง [root@localhost]# vi /etc/dhcp/dhcpd.conf ดังรูปที ่ก.5
รูปที่ ก.5 แสดงข้อมูลการก าหนดค่า DHCP
เปิดการใช้งาน DHCP
[root@hospital ~]# service dhcpd start
[root@hospital ~]# systemctl enable dhcpd
ก-4
วิธีการตรวจสอบการท างานของ service ของ DHCP โดยใช้งานค าสั่ง [root@hospital ~]#
service dhcpd status จะได้ดังรูปที่ ก.6
รูปที ่ก.6 แสดงการท างานของ DHCP
การแก้เรื่องสิทธิ์การรันค าสั่งผ่าน apache
สามารถท าได้โดยการใช้ค าสั่ ง vi /etc/sudoers และเพ่ิมค าสั่ ง apache ALL=(root)
NOPASSWD: /sbin/iptables ดังรูปที่ ก.7
รูปที ่ก.7 การเพ่ิมสิทธิ์ในการรัน apache
ก-5
วิธีการใช้งาน startup config
สามารถเข้าไปเพ่ิมค าสั่งการท างาน startup config ได้ที่ vi /etc/rc.d/rc.local ดังรูปที่ ก.8
รูปที ่ก. 8 การใช้งาน startup config
ก-6
ตรวจสอบการท างานของ tc class จากถูกสั่งรันค าสั่งที่ startup config โดยสามารถใช้
ค าสั่ง tc class show dev eth0 ดังรูปที่ ก.9
รูปที ่ก.9 แสดง tc class ที่ถูกสร้างขึ้น
การติดตั้ง Service ต่างๆ ที่จ าเป็นต่อการใช้งานของระบบ
การติดตั้ง Apache HTTP Server
[root@hospital ~]# yum install httpd –y
[root@hospital ~]# service httpd start
[root@hospital ~]# systemctl enable httpd
การติดตั้ง HTTPS
[root@hospital ~]# yum install mod_ssl –y
การติดตั้งภาษา PHP
[root@hospital ~]# yum install php php-mysql -y
[root@hospital ~]# systemctl enable httpd
ก-7
การติดตั้ง Mysql Server
[root@hospital ~]# yum install mysql-server -y
[root@hospital ~]# service mysqld start
[root@hospital ~]# systemctl enable mysqld
การติดตั้ง ntp
[root@hospital ~]# yum install ntpdate
เมื่อท าการติดตั้งเรียบร้อยแล้ว จากนั้นรันค าสั่ง ntpdate เผื่อ sync เวลา
[root@hospital ~]# ntpdate time1.nimt.or.th time2.nimt.or.th time3.nimt.or.th
[root@hospital ~]# crontab -e
0 */3 * * * /usr/sbin/ntpdate time1.nimt.or.th time2.nimt.or.th time3.nimt.or.th
การติดตั้ง SNMP
[root@hospital ~]# yum install net-snmp net-snmp-utils –y
[root@hospital ~]# service snmpd start
[root@hospital ~]# systemctl enable snmpd
การตั้งค่า SNMP โดยใช้ค าสั่ง vi /etc/snmp/snmpd.conf ดังรูปที่ ก.10
รูปที ่ก.10 แสดงการตั้งค่า SNMP
ก-8
แสดงการท างานของ Iptables ดังรูปที่ ก.11
รูปที ่ก.11 แสดงการท างานของ Iptables
ภาคผนวก ข
ซอร์สโค้ดของระบบ
ข-1
ภาคผนวก ข
ซอร์สโค้ดของระบบ
ในภาคผนวกนี้จะกล่าวถึงการเขียนโค้ดต่างๆ ที่ใช้ในหน้าเว็บของระบบ รวมถึงสคริปท์การ
ท างาน ซึ่งสามารถแบ่งเป็นหัวข้อหลักๆ ที่ส าคัญต่างๆได้ดังนี้
สคริปต์การท างานเมื่อระบบเริ่มต้นการท างาน โดยจะรันค าสั่งเริ่มต้นการท างานที่เก็บอยู่ใน
/etc/rc.d/rc.local
รูปที ่ข.1 โค้ดท่ีใช้ในการเริ่มะบบ
จากรูปที่ ข.1 แสดงค าสั่งการท างานของ tc ที่ใช้ในการสร้าง root class ของระบบ และ
ก าหนดการควบคุมแบนด์วิดท์ของแต่ละ parent ทั้งในฝั่ง upload และ download
ข-2
สคริปต์การตั้งค่า networkinterface โดยจะรันค าสั่งเริ่มต้นการท างานที่เก็บอยู่ใน
/home/networkinteface.sh ดังรูปที่ ข.2
รูปที ่ข.2 สคริปต์การตั้งค่า networkinterface
สคริปต์การตั้งค่า DHCP โดยจะรันค าสั่งเริ่มต้นการท างานที่เก็บอยู่ใน /home/dhcp.sh ดัง
รูปที่ ข.3
รูปที ่ข.3 สคริปต์การตั้งค่า DHCP
ข-3
โค้ดแสดงการท างานของการอ่านข้อมูลจาก text file โดยแบ่งแยกประเภทข้อมูลทั้งหมด 3
ปรเภทได้แก่ ADMIT, REGIS, DISCHARGE ดังรูปที่ ข.4
รูปที ่ข.4 แสดงโค้ดการอ่านข้อมูล
โค้ดแสดงการก าหนดแบนด์วิดท์ของแต่ละผู้ใช้งานที่เข้าใช้งานระบบ เมื่อผู้ใช้งานท าการล๊อ
คอินเข้าใช้งานระบบ จากนั้นระบบจะก าหนดข้อมูลการ upload และ download ดังรูปที่ ข.5
รูปที ่ข.5 แสดงโค้ดการก าหนดแบนวิดท์
ข-4
แสดงโค้ดการเก็บข้อมูล โดยการตัดข้อมูลและแยกประเภทเก็บข้อมูล ดังรูปที่ ข.6
รูปที ่ข.6 แสดงโค้ดการเก็บข้อมูลเข้าระบบ
ข-5
โค้ดแสดงการบันทึกข้อมูลเข้าระบบ ดังรูปที่ ข.7
รูปที ่ข.7 แสดงโค้ดการบันทึกข้อมูล
โค้ดการตั้งค่า DHCP ผ่านหน้าเว็บแอพพลิเคชั่น ดังรูปที่ ข.8
รูปที่ ข.8 โค้ดการตั้งค่า DHCP ผ่านหน้าเว็บแอพพลิเคชั่น
ข-6
โค้ดแสดงการเรียกข้อมูลของระบบผ่าน SNMP จากเว็บแอพพลิเคชั่น ดังรูปที่ ข.9
รูปที่ ข.9 โค้ดแสดงการเรียกข้อมูลของระบบผ่าน SNMP