Debian - ติดตั้ง dhcp เซิร์ฟเวอร์
www.tanabutr.co.th/photobook
วันนี้ต้องย้าย dhcp เซิร์ฟเวอร์ที่แต่ก่อนเคยสร้างไว้ด้วย Red Hat ให้มารันบนเครื่องใหม่ที่เป็น Debian. ตอนแรกก็ไม่รู้ชื่อแพ็กเกจว่าเป็นชื่ออะไรแต่เดาว่าชื่อแพ็กเกจต้องมาคำว่า dhcp แน่เลยใช้ apt-cache หาแพ็กเกจก่อน.
# apt-cache search dhcp ... dhcp - DHCP server for automatic IP address assignment dhcp-client - DHCP Client dhcp-dns - Dynamic DNS updates for DHCP dhcp-relay - DHCP Relay dhcp3-client - DHCP Client dhcp3-common - Common files used by all the dhcp3* packages. dhcp3-dev - API for accessing and modifying the DHCP server and client state dhcp3-relay - DHCP Relay dhcp3-server - DHCP server for automatic IP address assignment ...
ดูเหมือนว่ามีหลายตัวแต่เราต้องการสร้างเซิร์ฟเวอร์เลยมีตัวเลือกอยู่สองแพ็กเกจคือ dhcp กับ dhcp3-server. ตอนแรกลง dhcp ปรากฏว่าเป็นเวอร์ชัน 2.x ไม่สามารถใช้คุณสมบัติใหม่ๆเช่นสร้างพูล (pool) แยกช่วงของ IP แอ็ดเดรสก็เลยต้องเอา dhcp ออก, แล้วลง dhcp3-server แทน. ก่อนอื่นรัน apt-get แบบลองดูด้วยตัวเลือก -s (simulate) ก่อนว่าจะติดตั้งอะไรบ้างแล้วค่อยติดตั้งจริงโดยไม่ใช้ตัวเลือกนี้.
# apt-get -s install dhcp3-server # apt-get install dhcp3-server
ระหว่างที่ติดตั้งจะมีการรัน post-installation script ถามคำถามว่าจะใช้อินเทอร์เฟสตัวไหน. ในกรณีทีมีแลนการ์ดใบเดียวก็ตอบ eth0. ถ้ามีแลนการ์ดหลายใบก็กำหนดใบที่ต้องการแจกจ่าย IP ด้วย dhcp เซิร์ฟเวอร์.

ต่อจากนั้นจะมีคำเตือนต่อว่าให้สร้างไฟล์ตั้งค่าเริ่มต้นเอง. โดยที่ไฟล์ตั้งค่าเริ่มต้นคือไฟล์ /etc/dhcp3/dhcpd.conf. ไฟล์นี้จะสร้างโดยตัวโปรแกรมติดตั้งไว้ให้แล้ว. แก้ไขไฟล์นี้ตามที่ต้องการแล้วก็จะใช้ได้.

หลังจากนั้นจะมีคำเตือนอีกว่าค่าเซิร์ฟเวอร์นี้จะใช้ค่า non-authoritative โดยปริยาย. มีผลทำให้เซิร์ฟเวอร์ไม่ส่งค่า DHCPNAK ให้ไคลเอ็นท์และไคลเอ็นท์จะไม่ปล่อย IP ที่ได้รับ. เวลาใช้จริงต้องเปลี่ยนค่านี้ให้เป็น authoritative.

จบ apt-get แล้วระบบพยายามสตาร์ท dhcp เซิร์ฟเวอร์เลยแต่ล้มเหลวเพราะเรายังไม่ปรับแต่งอะไร.
ไฟล์ dhcpd.conf
เราต้องเขียนไฟล์ /etc/dhcp3/dhcpd.conf ก่อนที่จะใช้ dhcp เซิร์ฟเวอร์ได้. ไฟล์นี้มีคอมเมนต์อยู่แล้ว, เราสามารถดูตัวอย่างและเขียนตามได้ง่ายๆ.
1 ddns-update-style none; # ไม่ใช้ dynamic DNS
2 option domain-name "example.org"; # ชื่อโดเมนของระบบเครือข่าย
3 option domain-name-servers ns1.example.org, ns2.example.org; # ชื่อหรือ IP ของ DNS เซิร์ฟเวอร์
4 default-lease-time 600; # จำนวนวินาทีที่ให้ใช้ IP ที่แจกจ่าย
5 max-lease-time 7200; # จำนวนวินาที (maximum) ที่ให้ใช้ IP ที่แจกจ่าย
6 authoritative; # บอกว่าเครื่องเซิร์ฟเวอร์นี้เป็น authoritative
7 log-facility local7; # เก็บล็อกแบบ local7
8
9 host comp1 { # ลงทะเบียนเครื่องที่รู้จัก
10 hardware ethernet 08:00:07:26:c0:a5; # MAC แอ็ดเดรสของเครื่อง
11 fixed-address 192.168.0.200; # ให้ IP แบบคงที่ไม่เปลี่ยนแปลง
# IP นี้ต้องไม่อยู่ในพูล
12 }
13
14 host comp2 { # เป็นเครื่องที่ลงทะเบียนไว้อีกเครื่องหนึ่งแต่ได้ IP ไม่เจาะจง
15 hardware ethernet 00:50:56:C0:00:08;
16 }
17
18 subnet 192.168.0.0 netmask 255.255.255.0 { # ซับเน็ตเวิร์ก
19 option routers 192.168.0.254; # เกตเวย์โดยปริยายของเครือข่าย
20 pool {
21 range 192.168.0.1 192.168.0.100; # กำหนดช่วง IP หลายบรรทัดก็ได้
22 deny unknown clients; # ให้ IP เฉพาะเครื่องที่ลงทะเบียนข้างบนไว้เท่านั้น.
23 }
24 pool {
25 range 192.168.0.101 192.168.0.110;
26 allow unknown clients;
# เครื่องที่ไม่ลงทะเบียนก็จะได้ IP จากพูลนี้
27 }
28 }
เสร็จแล้วก็สตาร์ท dhcp เซิร์ฟเวอร์ด้วยคำสั่ง
# /etc/init.d/dhcp3-server start
ล็อกของโปรแกรมจะอยู่ในไฟล์ /var/log/syslog เปิดดูตามก็ได้. ส่วนไฟล์ dhcpd.leases ซึ่งเป็นไฟล์ที่เก็บข้อมูลเช่น IP, เครื่องที่รับ IP ไปอยู่ใต้ไดเรกทอรี /var/lib/dhcp3 ครับ.