DHCP Server
DHCP (Dynamic Host Configuration Protocol (ไดนามิก โฮส คอนฟิคกูเรชั่น โปรโตคอล)) เป็นโปรโตคอลที่ใช้สำหรับการกำหนดค่าต่างๆ ให้กับเครื่องลูกข่ายในระบบเครื่อข่าย เช่น การกำหนดค่า IP Address (ไอพีแอดเดรส) ให้กับเครื่องลูกข่ายแบบไม่มีการซ้ำกัน, การกำหนดค่า Gateway DNS (เกตเวย์ ดีเอ็นเอส) ให้กับเครื่องลูกข่ายแบบอัตโนมัติ เป็นต้น DHCP Server นิยมใช้กับห้องปฏิบัติการคอมพิวเตอร์ที่มีเครื่องลูกข่ายจำนวนมากๆ ทำให้ไม่ต้องเสียเวลาในการกำหนดค่าต่างๆ ให้กับเครื่องลูกข่าย หรือความหมายง่ายๆ คือ การตั้งค่าระบบเครือข่ายแบบอัตโนมัติ สำหรับบทความนี้จะขอกล่าวถึงการทำงานของ DHCP Server ว่ามีการทำงานอย่างไรบ้าง
DHCP Server
DHCP Server คือโปรโตคอลที่ใช้ในการกำหนด IP Address อัตโนมัติแก่เครื่องลูกข่ายบนระบบ ที่ติดตั้ง TCP/IP สำหรับ DHCP server มีหน้าที่แจก IP ในเครือข่ายไม่ให้ซ้ำ เป็นการลดความซ้ำซ้อน เมื่อเครื่องลูกเริ่ม boot ก็จะขอ IP address, Subnet mark, หมายเลข DNS และ Default gateway หลักการทำงานเมื่อมีการเสียบสายเน็ตเวอร์คแล้วเครื่อง PC ก็จะได้เลข IP ในทันทีเพื่อใช้ในการ Logon เข้าระบบคอมพิวเตอร์ต่อไป
DHCP Server นิยมใช้กับห้องปฏิบัติการคอมพิวเตอร์ที่มีเครื่องลูกข่ายจำนวนมากๆ ทำให้ไม่ต้องเสียเวลาในการกำหนดค่าต่างๆ ให้กับเครื่องลูกข่าย หรือความหมายง่ายๆ คือ การตั้งค่าระบบเครือข่ายแบบอัตโนมัตินั่นเอง ซึ่งในปัจจุบันมีโปรแกรมทำสามารถใช้ทำเป็น DHCP Server สำหรับบทความนี้จะขอกล่าวถึงการทำงานของ DHCP Server ว่ามีการทำงานอย่างไรบ้าง
หลักการทำงานของ DHCP Server
โปรโตคอลที่ใช้ในการทำงานของ DHCP ส่วนใหญ่เป็นลักษณะบรอดคาสต์ ซึ่งกระบวนการจ่าย IP Address นี้ประกอบไปด้วย 4 ขั้นตอน ที่ไคลเอนต์กับเซิร์ฟเวอร์จะติดต่อกันจนกระทั่งสุดท้าย ไคลเอนต์ DHCP ได้รับไอพีแอดเดรสที่ไม่ซ้ำกับ Host อื่นๆ ตลอดจนค่าคอนฟิกกูเรชั่นอื่นมาใช้งาน มีดังต่อไปนี้
- DHCP Discover เริ่มจากเมื่อเปิดเครื่องไคลเอนต์ขึ้นมา ก็จะถูกกำหนดให้ Obtain an IP address automatically ในหน้าจอ TCP/IP Properties ก็จะบรอดคาสต์เมสเสจ DHCPDISCOVER ออกไป ซึ่งจะไปถึงยังคอมพิวเตอร์ทุกเครื่องในเน็ตเวิร์กเซกเมนต์ และยังส่งหมายเลขแอดเดรส MAC ของการ์ดเน็ตเวิร์ก และชื่อแบบNetBIOS ของเครื่องคอมพิวเตอร์อีกด้วย
- DHCP Offer เครื่อง DHCP Server บอกไคลเอนต์ว่าตัวเองสามารถจัดสรร IP Address ให้ได้ เมจเสจของเซิร์ฟเวอร์เครื่องใดไปถึงยังไคลเอนต์ก่อนก็จะถูกเลือกใช้งานโดยไคลเอนต์ (First-Come-First Serve)
- DHCP Request เป็นการตอบรับไปยังเซิร์ฟเวอร์ ตอนนี้ไคลเอนต์เองก็ยังไม่ได้รับไอพีแอดเดรส ดังนั้นการตอบกลับนี้ก็ยังจำเป็นต้องเป็นแบบ “บรอดคาสต์”
- DHCP Acknowledgement เมื่อได้รับข้อมูลยืนยันเรียบร้อยแล้ว เซิร์ฟเวอร์จะตอบกลับไปยังไคลเอนต์ประกอบด้วยข้อมูล IP Address ที่จัดสรรให้ไคลเอนต์ ตลอดจนค่าคอนฟิกูเรชั่นอื่น ๆ การต่ออายุการใช้สิทธิ IP Address ของไคลเอนต์ (Lease Renewal Process) เนื่องจากมีข้อกำหนดเรื่องเวลาการใช้ IP Address ที่จัดให้ไคลเอนต์แต่ละเครื่องอาจมีการเปลี่ยนแปลงได้ นอกจากจะมี IP Address มากพอจนสามารถกำหนดระยะเวลาอนุญาตให้ใช้ IP Address ได้ไม่จำกัด ดังนั้นโดยปกติทุกๆช่วงเวลา ไคลเอนต์ต้องตรวจสอบกลับไปยังเครื่องเซิร์ฟเวอร์ DHCP ที่จัดไอพีแอดเดรสมาให้เพื่อขอต่ออายุเวลาการใช้งาน อีกทั้งยังได้รับค่าคอนฟิกกูเรชั่นต่างๆ ที่เปลี่ยนแปลงอีกด้วย เราเรียกกระบวนการนี้ว่า Lease Renewal ซึ่งสามารถทำงานได้หลายวิธีคือ กระบวนการแบบอัตโนมัติ กระบวนการ Lease Renewal แบบอัตโนมัตินั้นจะเกิดขึ้นอย่างสม่ำเสมอที่ไคลเอนต์ เมื่อระยะเวลาที่อนุญาตให้ใช้ผ่านไปแล้ว 50% ดังนั้นไคลเอนต์จะเริ่มพยายามขอต่ออายุสิทธินี้หลังจากผ่านไปแล้ว 4 วัน ถ้าเวลาทั้งหมดเป็น 8 วัน การต่ออายุนี้จะเริ่มในขั้นตอนที่ 3 ของ DHCP Lease Generation Process คือเริ่มตั้งแต่ DHCPREQUEST เป็นต้นไป วิธีคอนฟิก DHCP Server
กระบวนการแบบแมนนวล กระบวนการนี้จะทำโดยผู้ใช้งานเองผ่านการพิมพ์คำสั่งที่ Command Line ซึ่งจำเป็นในบางสถานการณ์ เช่นจำเป็นต้องให้ไคลเอนต์ได้รับคอนฟิกกูเรชั่นใหม่จากเซิร์ฟเวอร์ DHCP ในทันทีกระบวนการแบบไดนามิค วิธีนี้เป็นวิธีเดียวที่สามารถนำหมายเลขไอพีมาใช้ซ้ำได้ เมื่อคอมพิวเตอร์ถูกเปิดเครื่องและเริ่มทำงาน เครื่องลูกข่ายจะขอหมายเลขไอพีจากเซิร์ฟเวอร์โดยอัตโนมัติ วิธีนี้ต่างกับแบบอัตโนมัติตรงที่ IP Address ในการทำงานแต่ละครั้ง ไม่จำเป็นต้องเป็นเลขเดิม
วิธีคอนฟิก DHCP Server
1.ติดตั้ง Ubuntu server 20.0.4 LTS โดยการดาวน์โหลดจากลิงค์ด้านล่าง
https://ubuntu.com/download/server
2.ทำการอัพเดท Ubuntu โดยใช้คำสั่ง ดังภาพ
$ sudo apt-get update
3.ติดตั้ง DHCP server ใน Ubuntu server ของเรา
$ sudo apt install isc-dhcp-server
4.เข้าไปแก้ไขไฟล์ config
$ sudo nano /etc/dhcp/dhcpd.conf
– ขั้นแรกเปลี่ยนชื่อโดเมน จากชื่อ example.org เป็น เป็นชื่อของตัวเอง เช่น เพิ่มค่าต่างๆของ DHCP ดังนี้
subnet 10.10.10.0 netmask 255.255.255.0 {
range 10.10.10.20 10.10.10.30;
option domain-name-servers 8.8.8.8, 10.10.10.1 ns1.internal.tanakrit.net;
option domain-name “internal.tanakrit.net”;
option subnet-mask 255.255.255.0;
option routers 10.10.10.1;
option broadcast-address 10.10.10.255;
}
subnet : วงที่เราต้องการแจก IP
netmask : Subnet mask ของ IP ที่เราจะแจก
range : ช่วงของ IP ที่แจก
option routers : IP routers
option domain-name-servers : IP ของ domain-name server
option domain-name: ชื่อของ domain
หลังบรรทัดนี้
default-lease-time 600;
max-lease-time 7200;
จะได้ดังภาพ
5.ทำการ Restart service ของ DHCP และทำการเปิด DHCP Server อีกครั้ง
$ sudo systemctl restart isc-dhcp-server.service
$ sudo systemctl enable isc-dhcp-server.service
6.หากต้องการตรวจสอบการทำงานของ DHCP server พิมพ์คำสั่งดังนี้
$ sudo systemctl status isc-dhcp-server.service
ผลลัพธ์ที่ได้
ดูคลิปการสอนได้ที่ คลิกที่นี่