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 ครับ.