Hướng dẫn cài đặt dhcp trên centos 6

Cuongquach.com – Hướng dẫn cài đặt và cấu hình DHCP Server trên CentOS 7. Như các bạn biết thì trong một hệ thống mạng doanh nghiệp hay dịch vụ, các thiết bị client như laptop, server, điện thoại,… đều cần có địa chỉ IP để hoạt động kết nối Internet. Nhưng chẳng lẽ chúng ta lại phải đi cấu hình IP cho từng thiết bị sao ?! Ôi thôi thật kinh khủng.

Chính vì lẽ đó mà dịch vụ/giao thức DHCP được ra đời với nhiệm vụ cấp phát IP động cho các thiết bị, giảm tải khối lượng công việc cho quản trị viên,… Vậy DHCP là gì ? DHCP Server là chi ? Rồi làm sao để cài đặt một DHCP Server trên CentOS 7 đây ?! Qua bài viết này, chúng ta sẽ cùng tìm hiểu các nội dung cơ bản trên (không tìm hiểu nâng cao).

Hướng dẫn cài đặt dhcp trên centos 6

Contents

DHCP là gì – DHCP Server là gì ?

DHCP (viết tắt của Dynamic Host Configuration Protocol) là một giao thức mạng đã được định nghĩa tiêu chuẩn trong IETF-RFC 2131 . Mục đích chính của giao thức này chính là cung cấp các thông tin như địa chỉ IP, subnet mask, gateway, dns server,… cho các máy tính thiết bị đang kết nối qua thiết bị mạng (có dây và không dây – wifi). Máy chủ dịch vụ đảm nhiệm hoạt động kiểm tra thông tin IP,… và thực hiện trao đổi cấp phát IP động thông qua giao thức DHCP chính là máy chủ dịch vụ DHCP Server.

Một DHCP server bao gồm bốn mục chính sau:

  • Options: các thông tin như địa chỉ IP, địa chỉ Subnet Mask, địa chỉ Gateway, địa chỉ DNS,… sẽ được DHCP Server cung cấp đầy đủ thông tin.
  • Scope: một dãy hay một đoạn địa chỉ IP đã được quy hoạch và chỉ định rõ ràng cho DHCP Server được phép cấp phát IP động thông qua DHCP cho máy tính client.
  • Reservation: là những thông tin địa chỉ IP đã được “để dành”, tức cấu hình sẵn địa chỉ IP đó cho một số loại máy tính client.
  • Lease: Thời gian “cho thuê” hoặc tồn tại của địa chỉ IP động đối với mỗi máy client.

Giao thức DHCP hoạt động ra sao ?

Quá trình của DHCP sẽ diễn ra với bốn bước cơ bản (hình minh hoạ dưới) như sau:

Hướng dẫn cài đặt dhcp trên centos 6

  • Khi máy tính/server client được khởi động và xác định cần xin cấp IP động từ DHCP Server. Thì client sẽ gửi gói tin DHCPDISCOVER dưới dạng broadcast trên lớp mạng thiết bị mà client đang kết nối tới. Mục đích của DHCPDISCOVER là tìm được DHCP Server cấp IP.
  • Nếu có tồn tại DHCP Server, thì DHCP Server sẽ nhận được gói tin DHCPDISCOVER của client. Lúc này DHCP Server tiến hành rà soát Cơ Sở Dữ Liêu IP đã cấp cho các client khác, xem còn trống IP nào không. Nếu có sẽ tiến hành gởi thông tin địa chỉ IP đính kèm cùng các thông tin khác trong gói tin Unicast DHCPOFFER gửi trả về máy tính client.
  • Máy tính client khi nhận được gói tin DHCPOFFER phản hồi từ DHCP Server sẽ tiến hành đánh giá thông tin IP động được cấp phát. Sau đó sẽ gửi trả lời DHCP Server bằng gói tin DHCPREQUEST với nội dung gói tin là thông tin địa chỉ IP trong gói tin DHCPOFFER trước đó. DHCPREQUEST chính là yêu cầu DHCP Server hãy cấp IP mà bạn đã đề nghị cho tôi đi.
  • DHCP server đồng ý cấp IP cho client thông qua gói Unicast DHCPACK.

Đây là mô hình bài lab DHCP Server mà mình hỗ trợ bạn thực hiện với các thông tin như hình dưới.

Hướng dẫn cài đặt dhcp trên centos 6

– Vậy ta cần thực hiện cấu hình IP tĩnh cho DHCP Server CentOS 7 trước. Theo như hình cung cấp thì DHCP Server sẽ có giá trị IP là “192.168.100.250” và Subnet Mask là “255.255.255.0” cùng Gateway “192.168.100.1“.

Xem thêm: – Cấu hình IP tĩnh trên CentOS 7

1. Cài đặt chương trình dịch vụ DHCP Server trên CentOS 7

– Chúng ta sẽ cài đặt gói chương trình DHCP với lệnh “yum“.

yum install -y dhcp

– Kiểm tra xem gói chương trình “dhcp” đã được cài đặt hay chưa ? Nếu ra các gói “dhcp-*” như dưới đây, tức là đã cài đặt rồi.

rpm -qa | grep dhcp

dhcp-4.2.5-58.el7.centos.x86_64 dhcp-libs-4.2.5-58.el7.centos.x86_64 dhcp-common-4.2.5-58.el7.centos.x86_64

– Chúng ta sẽ cấu hình cho dịch vụ DHCP khởi động cùng hệ thống (startup service). Tên chương dịch vụ DHCP trên CentOS lúc này sẽ là “dhcpd” (dhcp daemon – dịch vụ DHCP).

systemctl enable dhcpd

Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service

– Cấu trúc các file/thư mục của dịch vụ DHCP Server mà bạn cần biết:

  • /etc/dhcp/dhcpd.conf : file cấu hình dịch vụ DHCP.
  • /var/lib/dhcpd/dhcpd.leases : file chứa thông tin các IP động đang cấp qua DHCP.
  • /var/log/message : log mặc định chứa quá trình DHCP 4 bước.

2. Cấu hình dịch vụ DHCP

– Đầu tiên bạn có thể copy file cấu hình config mẫu sẵn có để sử dụng cho cấu hình dịch vụ DHCP.

cp -f /usr/share/doc/dhcp-*/dhcpd.conf.example /etc/dhcp/dhcpd.conf

– Bạn lưu ý là file cấu hình DHCP Server trên CentOS nằm ở đường dẫn :

vi /etc/dhcp/dhcpd.conf

– Giờ thì chúng ta cùng tiến hành cấu hình DHCP nào. File cấu hình dịch vụ DHCP sẽ gồm 2 phần cơ bản (không tìm hiểu nâng cao):

  • Cấu hình toàn cục (global) : quy định những thông tin giá trị mặc định cho các khai báo lớp mạng (subnet) cấp phát ip động DHCP.
  • Cấu hình lớp mạng cấp phát IP động DHCP : quy định những giá trị thông tin cho việc cấp phát IP động thông qua DHCP.

Nội dung cấu hình mẫu của DHCP Server (trước khi vào phân tích sâu hơn)

cat /etc/dhcp/dhcpd.conf

option domain-name "cuongquach.com"; option domain-name-servers ns1.cuongquach.com, ns2.cuongquach.com; default-lease-time 600; max-lease-time 7200; lease-file-name "/var/lib/dhcpd/dhcpd.leases"; authoritative; log-facility local7; subnet 192.168.100.0 netmask 255.255.255.0 {

    range 192.168.100.10 192.168.100.100;  
    default-lease-time 3600;  
    max-lease-time 7200;  
    option subnet-mask 255.255.255.0;  
    option routers 192.168.100.1;  
    option broadcast-address 192.168.100.255;  
    option domain-name-servers 8.8.8.8;  
}

2.1 Cấu hình toàn cục (global) DHCP Server

option domain-name "cuongquach.com"; option domain-name-servers ns1.cuongquach.com, ns2.cuongquach.com; default-lease-time 600; max-lease-time 7200; lease-file-name "/var/lib/dhcpd/dhcpd.leases"; authoritative;

Chú thích 1 :

  • option domain-name : khai báo tên miền lớp mạng chung.
  • option domain-name-server : khai báo Name Server của domain bạn đã cung cấp ở trên.
  • default-lease-time : thời gian mặc định một IP DHCP tồn tại được cấp phát cho người dùng.
  • max-lease-time : thời gian tối đa một IP DHCP tồn tại được cấp phát cho người dùng.
  • lease-file-name : chỉ định file chứa thông tin về địa chỉ IP đã được cấp phát qua DHCP.
  • authoritative : nếu máy chủ dịch vụ DHCP này là máy chủ DHCP Server chính thức cho các mạng nội bộ, config này sẽ set đây là master DHCP server giúp tránh các server giả mạo.

Một số config khác dành cho khai báo cấu hình toàn cục DHCP Server.

allow bootp; ignore client-updates; deny leasequery;

Chú thích 2:

  • allow [ bootp ] : cho phép phản hồi với các gói tin query BOOTP.
  • deny [ leasequery ] : không trả lời các gói tin DHCPLEASEQUERY, gói tin này nhằm gia hạn thời gian sử dụng IP DHCP cấp khi sắp hết hạn sử dụng.
  • ignore [ client-updates ] : từ chối các request cập nhật Dynamic DNS.

Các cấu hình khác : https://linux.die.net/man/5/dhcpd.conf

2.2 Cấu hình DHCP – Khai báo mạng cấp phát DHCP

– Cấu hình lớp mạng và dãi IP được sử dụng để cấp phát IP DHCP. Giả sử mình cho phép sử dụng mạng nội bộ là 192.168.100/24 và dải IP mình sử dụng để cấp phát là từ 192.168.100.10 đến 192.168.100.100 .

subnet 192.168.100.0 netmask 255.255.255.0 {

    range 192.168.100.10 192.168.100.100;  
    default-lease-time 3600;  
    max-lease-time 7200;  
    option subnet-mask 255.255.255.0;  
    option routers 192.168.100.1;  
    option broadcast-address 192.168.100.255;  
    option domain-name-servers 8.8.8.8;  
}

Chú thích 3:

  • range <ip_1> <ip_2> : ip_1 là điểm bắt đầu và ip_2 là điểm kết thúc
  • option subnet-mask : thông tin subnet mask của mạng IP được cấp phát.
  • option routers : cung cấp thông tin địa chỉ IP của router gateway mà client sẽ sử dụng khi nhận IP DHCP.
  • option broadcast-address : cung cấp thông tin broadcast của lớp mạng mà client sẽ nhận IP sử dụng.
  • option domain-name-servers : cung cấp thông tin DNS Server cho client.
  • default-lease-time : thời gian mặc định một IP DHCP tồn tại được cấp phát cho người dùng. Giá trị này khi nằm trong cấu hình “subnet” sẽ được áp dụng riêng với giá trị cấu hình “global“.
  • max-lease-time : thời gian tối đa một IP DHCP tồn tại được cấp phát cho người dùng. Giá trị này khi nằm trong cấu hình “subnet” sẽ được áp dụng riêng với giá trị cấu hình “global“.

– Bạn hoàn toàn có thể cấu hình nhiều “subnet” trong file cấu hình DHCP.

2.3 Cấp IP DHCP cho 1 host cụ thể

– Trường hợp này là bạn đang muốn dành riêng 1 địa chỉ IP trong range IP DHCP cho một máy tính cụ thể trong hệ thống mạng. Máy tính đó có thể là của sếp, của trưởng phòng,..

– Vậy để làm được điều đó, thì DHCP Server trên CentOS cần có được thông tin địa chỉ MAC Address của máy tính của sếp hoặc trưởng phòng. Để khi mà máy tính client đi xin DHCP IP thì DHCP Server sẽ dựa vào địa chỉ MAC trong file cấu hình mẫu như dưới và cấp địa chỉ IP nằm trong giá trị khai báo “fixed-address“.

– Phần khai báo cấu hình này nằm trong nội dung cấu hình “subnet” của DHCP Server nhé.

subnet 192.168.100.0 netmask 255.255.255.0 {

...  
host giam-doc {  
    hardware  ethernet 00:f0:m4:6y:89:0g;  
    fixed-address 192.168.100.10;  
}
host truong-phong {  
    hardware  ethernet 00:4g:8h:13:8h:3a;  
    fixed-address 192.168.100.11;  
}  
}

2.4 Cơ Sở Dữ Liệu IP đã cấp bởi DHCP Server

Trên máy chủ dịch vụ DHCP Server trên CentOS, thì file ‘/var/lib/dhcpd/dhcpd.leases‘ sẽ lưu trữ toàn bộ thông tin về IP đang được cấp phát cho máy tính client. Nếu không có file này thì DHCP Server sẽ không hoạt động. Vì vậy hãy kiểm tra xem có file này trên máy chủ DHCP chưa ?! Nếu chưa thì hãy tạo nó như sau :

rpm -qa | grep dhcp

dhcp-4.2.5-58.el7.centos.x86_64 dhcp-libs-4.2.5-58.el7.centos.x86_64 dhcp-common-4.2.5-58.el7.centos.x86_64

0

3. Khởi động DHCP Server và set rule firewall

– Giờ chúng ta sẽ khởi động dịch vụ DHCP trên CentOS.

rpm -qa | grep dhcp

dhcp-4.2.5-58.el7.centos.x86_64 dhcp-libs-4.2.5-58.el7.centos.x86_64 dhcp-common-4.2.5-58.el7.centos.x86_64

1

– Tiếp đến chúng ta cần lưu ý firewall rule mở cho port 67 của dịch vụ DHCP. Nếu bạn sử dụng các dịch vụ tường lửa khác thì cần linh động tìm cách mở rule firewall cho port 67 UDP nhé. Ở bài này mình sử dụng iptables firewall làm mẫu.

Xem thêm: – Danh sách lệnh IPTABLES quản lý firewall iptables trên Linux

rpm -qa | grep dhcp

dhcp-4.2.5-58.el7.centos.x86_64 dhcp-libs-4.2.5-58.el7.centos.x86_64 dhcp-common-4.2.5-58.el7.centos.x86_64

2

hoặc dịch vụ tường lửa “firewalld” .

rpm -qa | grep dhcp

dhcp-4.2.5-58.el7.centos.x86_64 dhcp-libs-4.2.5-58.el7.centos.x86_64 dhcp-common-4.2.5-58.el7.centos.x86_64

3

– Kiểm tra xem có dịch vụ DHCPd đã được listen socket port 67 udp chưa nhé.

rpm -qa | grep dhcp

dhcp-4.2.5-58.el7.centos.x86_64 dhcp-libs-4.2.5-58.el7.centos.x86_64 dhcp-common-4.2.5-58.el7.centos.x86_64

4

– Kiểm tra xem có tiến trình dịch vụ DHCPd đang được chạy trên hệ thống hay không với lệnh “ps“.

rpm -qa | grep dhcp

dhcp-4.2.5-58.el7.centos.x86_64 dhcp-libs-4.2.5-58.el7.centos.x86_64 dhcp-common-4.2.5-58.el7.centos.x86_64

5

4. Cấu hình DHCP phía Client

4.1 DHCP Client trên CentOS/RHEL/Fedora

– Bây giờ bạn chỉ cần cấu hình card mạng trên CentOS sử dụng chức năng DHCP để xin cấp địa chỉ IP sử dụng. Trước tiên bạn cần xác định chính xác card mạng interface nào đang nằm cùng lớp mạng thiết bị hoặc VLAN với server DHCP nhé. Giả sử mình xác định là card mạng “eth0“.

rpm -qa | grep dhcp

dhcp-4.2.5-58.el7.centos.x86_64 dhcp-libs-4.2.5-58.el7.centos.x86_64 dhcp-common-4.2.5-58.el7.centos.x86_64

6

Chú thích: + BOOTPROTO : đặt giá trị là “dhcp” thì khi khởi động card mạng sẽ quy ước cho card mạng sử dụng giao thức DHCP broadcast đi xin cấp địa chỉ DHCP mới.

– Giờ thì bạn khởi động lại dịch vụ mạng và chờ kết quả nào.

rpm -qa | grep dhcp

dhcp-4.2.5-58.el7.centos.x86_64 dhcp-libs-4.2.5-58.el7.centos.x86_64 dhcp-common-4.2.5-58.el7.centos.x86_64

7

– Kiểm tra địa chỉ IP đã được cấp chưa.

rpm -qa | grep dhcp

dhcp-4.2.5-58.el7.centos.x86_64 dhcp-libs-4.2.5-58.el7.centos.x86_64 dhcp-common-4.2.5-58.el7.centos.x86_64

8

4.2 DHCP Client trên Ubuntu/Debian

– Kế tiếp chúng ta sẽ cấu hình card mạng trên Ubuntu/Debian xin cấp địa chỉ IP từ DHCP Server nhé. Giống như trên, thì bạn cần xác định đúng card mạng mà bạn muốn chạy DHCP.

rpm -qa | grep dhcp

dhcp-4.2.5-58.el7.centos.x86_64 dhcp-libs-4.2.5-58.el7.centos.x86_64 dhcp-common-4.2.5-58.el7.centos.x86_64

9

– Khởi động lại card mạng eth0 trên Ubuntu/Debian nào.

systemctl enable dhcpd

Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service

0

– Kiểm tra địa chỉ IP đã được cấp chưa.

rpm -qa | grep dhcp

dhcp-4.2.5-58.el7.centos.x86_64 dhcp-libs-4.2.5-58.el7.centos.x86_64 dhcp-common-4.2.5-58.el7.centos.x86_64

8

4.3 DHCP Client trên Windows

– Vào “Control Panel > Network and Ethernet > Network and Sharing Center > Change Adapter Settings“.

Hướng dẫn cài đặt dhcp trên centos 6

– Chuột phải vào biểu tượng card mạng bạn muốn cấp DHCP IP, chọn “Properties“. Chọn “Internet Protocol Version 4 (TCP/IP) > Properties“.

Hướng dẫn cài đặt dhcp trên centos 6

– Chọn “Obtain an IP Address automatically“. Lúc này máy tính Windows sẽ tự động DHCP Broadcast để xin cấp địa chỉ IP.

Hướng dẫn cài đặt dhcp trên centos 6

hoặc gõ các lệnh sau trên Terminal Command Prompt – Windows.

systemctl enable dhcpd

Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service

2

5. Troubleshooting dịch vụ DHCP – Xử lý sự cố dịch vụ DHCP

– Để xem những địa chỉ IP đã được cấp phát bởi DHCP Server trên CentOS ta sẽ xem ở file ‘dhcpd.leases‘.

systemctl enable dhcpd

Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service

3

– Xem log quá trình cấp phát của dịch vụ DHCP (DHCP Discovery, DHCP ACK,…) thì xem lại file log “messages“.

systemctl enable dhcpd

Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service

4

– Kiểm tra xem DHCP Discovery từ máy tính client có chạy vào được DHCP Server CentOS hay không ?! Ta sử dụng chương trình bắt gói tin “tcpdump” và capture port udp 67 trên interface mà DHCP Server Listen nhé.

systemctl enable dhcpd

Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service

5

Vậy là thông qua bài viết này, bạn hoàn toàn có thể làm chủ dịch vụ DHCP Server trên CentOS rồi. Còn chờ gì nữa mà không thực hành cài đặt và cấu hình DHCP Server trên CentOS 7 nào. Nếu có bất kì thắc mắc gì, đừng ngại comment ngay bên dưới cùng “Cuongquach.com” nhé.