ACME 85network-share 85network-share logo Average rating: 4.4, based on 89 reviews from $1 to $100

85Network

85network-share

Cập nhật

CÁCH CẤU HÌNH DỊCH VỤ DHCP TRONG LINUX || 85NETWORK-SHARE

1. Giới thiệu DHCP

dịch vụ dhcp trong linux

DHCP(Dynamic Host Configuration Protocol) là một giao thức mạng cho phép server tự động cấp phát IP và các tham số cấu hình mạng liên quan cho các client. Các IP được cấp cho Client sẽ nằm trong nhóm IP đã được chúng ta xác định trước. Khi một client khởi động thì nó sẽ nhận được một địa chỉ IP động. Địa chỉ IP được DHCP server gán cho DHCP client, thời gian được thay đổi IP có thể tùy thuộc vào thời gian hiệu lực cấp phát (hay leasetime) tùy theo cấu hình ở máy chủ DHCP.

Cách hoạt động của DHCP:

Khi client (được cấu hình để sử dụng DHCP) và được kết nối với mạng, nó sẽ chuyển tiếp thông báo DHCPDISCOVER đến máy chủ DHCP server. Và sau khi DHCP server nhận được thông báo yêu cầu DHCPDISCOVER, nó sẽ trả lời bằng DHCPOFFER.
Sau đó, client nhận được thông báo DHCPOFFER và nó sẽ gửi một thông điệp DHCPREQUEST đến cho server biết, nó đã được chuẩn bị để nhận cấu hình mạng được cung cấp trong tin nhắn DHCPOFFE.
Cuối cùng DHCP server nhận thông báo DHCPREQUEST từ client và gửi tin nhắn DHCPACK cho client hiện phép sử dụng địa chỉ IP được gán.

Trong bài viết này, chúng ta sẽ tìm hiểu cách cài đặt và định cấu hình DHCP server trong bản phân phối CentOS 8.

Có 2 công cụ hổ trợ cấu hình DHCP server trên CentOS 8:
  1. Công cụ isc dhcp server.
  2. Công cụ dnsmasq.
Chúng ta sẽ lần lượt tìm hiểu cách cấu hình DHCP server của mỗi công cụ trên.

2. Cấu hình DHCP server sử dụng isc dhcp server

2.1. Cấu hình DHCP server phía server

Bước 1: Để có thể cài đặt DHCP chúng ta chỉ cần chạy lệnh sau:
dnf -y install dhcp-server
Mở file cấu hình chính của DHCP.
cat /etc/dhcp/dhcpd.conf
Khi mở file cấu hình dhcpd.conf thì nội dung của file này chưa có gì. Trong file này hướng dẫn là mở file /usr/share/doc/dhcp*/dhcpd.conf.sample để xem cấu hình mẫu. Trong những trường hợp như thế này thì không nên soạn 1 file mới bằng "vi trình soạn thảo trong linux" mà nên copy lại và sửa cấu hình cho hợp với mô hình đang sử dụng.
cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite '/etc/dhcp/dhcpd.conf'? y

Bước 2: Thực hiện mở file /etc/dhcp/dhcpd.conf bằng trình soạn thảo văn bản vi:
Chạy lệnh : vi /etc/dhcp/dhcpd.conf
Bắt đầu thực hiện thêm các tham số áp dụng cho tất cả các mạng con như sau:
option domain-name "lab85network.net";
option domain-name-servers ns1.lab85network.net, ns2.lab85network.net;

Bây giờ, chúng ta xác định một mạng con, trong ví dụ này, chúng ta sẽ định cấu hình DHCP cho mạng LAN là 10.0.0.0:

subnet 10.0.0.0 netmask 255.0.0.0 {

range 10.0.0.100 10.0.0.200;

option domain-name-servers 10.0.0.1;

option domain-name "lab85network.net";

option routers 10.0.0.1;

option broadcast-address 10.255.255.255;

default-lease-time 600;

max-lease-time 7200;

}


Bước 3: Tiếp theo chúng ta khởi động dịch vụ DHCP và cho phép nó tự động khởi động cùng với hệ thống các lần tiếp theo, sử dụng các lệnh sau:
  • systemctl start dhcpd
  • systemctl enable dhcpd
Bước 4: Sau đó chúng ta cho phép dịch vụ DHCP (DHCPD daemon listen trên cổng 67/UDP) như sau:
  • firewall-cmd --add-service=dhcp --permanent
  • firewall-cmd --reload
Nếu muốn cấp IP động và cố định cho theo một địa chỉ MAC thì cần phải chỉnh sửa thêm file cấu hình. Ví dụ: cấu hình cấp IP động 10.0.0.111 cho máy tính Client (địa chỉ MAC là 00:0C:29:10:37:0A). Tiếp tục mở file cấu hình và chỉnh sửa bằng trình soạn thảo vi như sau:

vi /etc/dhcp/dhcpd.conf

host testclient {

hardware ethernet 00:0c:29:0b:61:6f;

fixed-address 10.0.0.111;

}

3. Cấu hình DHCP server sử dụng dnsmasq

dnsmasq là một công cụ chuyển tiếp DNS, dễ cấu hình, phần mềm DHCP server và hệ thống con quảng cáo bộ định tuyến cho các mạng nhỏ.

Công cụ dnsmasq hỗ trợ Linux, *BSD, MacOS, Android.

Nó có một hệ thống DNS cung cấp một máy chủ DNS cục bộ cho mạng, với việc chuyển tiếp tất cả các loại truy vấn đến các máy chủ DNS đệ quy ngược dòng và lưu trữ các bản ghi. Hệ thống DHCP subsystem hỗ trợ DHCPv4, DHCPv6, BOOTP, PXE, và TFTP server.
Trong phần này, chúng ta sẽ tìm hiểu cách cài đặt và thiết lập DNS/DHCP server bằng dnsmasq trên các bản phân phối CentOS 8.

3.1. Cấu hình DHCP server

Bước 1: Để có thể cài đặt dnsmasp chúng ta sử dụng lệnh sau để cài đặt:

isc dhcp server
Bước 2: Sau khi cài đặt gói dnsmasq thành công chúng ta cần khởi động dịch vụ dnsmasq:
systemctl start dnsmasq
Tiếp theo chúng ta cần phép nó tự động khởi động cùng với hệ thống:
systemctl enable dnsmasq
Kiểm tra trạng thái của nó để đảm bảo rằng nó hoạt động và chạy lệnh sau:
Bước 3: Kích hoạt máy chủ DHCP bằng dnsmasq
Chúng ta có thể kích hoạt máy chủ DHCP bằng cách bỏ tùy chọn dhcp-range và cung cấp dải địa chỉ có sẵn để cho thuê và tùy chọn thời gian thuê:
dhcp-range=10.0.0.50,10.0.0.200,12h

Thực hiện thêm dòng sau để xác định default gateway:
dhcp-option=option:router,10.0.0.1

Tiếp theo chúng ta thêm vào NTP, DNS, server và subnetmask: 
dhcp-option=option:ntp-server,10.0.0.1 
dhcp-option=option:dns-server,10.0.0.1 
dhcp-option=option:netmask,255.0.0.0
Tùy chọn xác định DHCP server sẽ giữ cơ sở dữ liệu cho thuê của nó, điều này sẽ giúp bạn dễ dàng kiểm tra địa chỉ IP mà nó đã gán.dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases
Để làm cho DHCP server ở chế độ có thẩm quyền, hãy bỏ dấu # trước tùy chọn sau: dhcp-authoritative
Lưu tệp và khởi động lại dịch vụ dnsmasq để áp dụng các thay đổi gần đây. systemctl restart dnsmasq
Nếu Firewalld đang chạy, chúng ta cần cho phép chạy dịch vụ DHCP. DHCP server sử dụng port 67/UDP: firewall-cmd --add-service=dhcp --permanent
firewall-cmd --reload

3.2. Sử dụng dnsmasq cấu hình DNS server

Bước 1: Cấu hình dnsmasp server:
dnsmasq server được cấu hình thông qua tệp /etc/dnsmasq.conf và các tệp cấu hình do người dùng xác định cũng có thể được thêm vào trong thư mục /etc/dnsmasq.d.
DNS được bật theo mặc định, vì vậy trước khi thực hiện bất kỳ thay đổi nào, chúng ta cần tạo bản sao lưu của tập tin etc/dnsmasq.conf.cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
Bây giờ chúng ta thực hiện mở file cấu hình /etc/dnsmasq.conf bằng trình soạn thảo văn bản vi:
vi /etc/dnsmasq.conf
Tùy chọn listen-address được sử dụng để thiết lập các địa chỉ IP, nơi dnsmasq sẽ lắng nghe. Để CentOS server của chúng ta lắng nghe các yêu cầu DHCP và DNS trên mạng LAN, đặt tùy chọn listen-address thành các địa chỉ IP LAN (bao gồm 127.0.0.1) như sau:
listen-address=::1,127.0.0.1,10.0.0.1
Lưu ý: Địa chỉ IP máy chủ phải là IP tĩnh.
Chúng ta có thể hạn chế interface dnsmasq lắng nghe bằng cách sử dụng tùy chọn interface (thêm nhiều dòng cho nhiều interface):
interface=ens37
Khi chúng ta cần có một tên miền hãy bỏ dấu # trước tùy chọn expand-hosts:
expand-hosts
Để đặt tên miền cho dnsmasq. Các DHCP client sẽ có các tên miền đủ điều kiện miễn là tên miền đã đặt được khớp:
domain=lab85network.net
Tiếp theo, xác định DNS server ngược dòng cho các non-local domain bằng tùy chọn server (server=dns_server_ip) như sau:
# Google's nameservers server=8.8.8.8 server=8.8.4.4
Cuối cùng chúng ta có thể buộc tên miền cục bộ của mình thành một địa chỉ IP bằng cách sử dụng tùy chọn address như được hiển thị:
address=/lab85network.net/127.0.0.1
address=/lab85network.net/10.0.0.1
Lưu file cấu hình và thực hiện kiểm tra file cấu hình xem có lỗi không: dnsmasq --test
Bước 2: Định cấu hình dnsmasq với tệp /etc/resolv.conf
Thực hiện tất cả các truy vấn được gửi đến dnsmasq bằng cách thêm địa chỉ localhost làm máy chủ tên duy nhất trong tệp /etc/resolv.conf.
vi /etc/resolv.conf
Cú pháp như sau: nameserver 127.0.0.1
Tệp /etc/resolv.conf được duy trì bởi một trình nền cục bộ, đặc biệt là trình quản lý mạng, do đó mọi thay đổi do người dùng thực hiện sẽ bị ghi đè. Để ngăn chặn điều này, chúng ta bảo vệ ghi bằng cách đặt thuộc tính tệp không thay đổi (vô hiệu hóa quyền truy cập ghi vào tệp) bằng lệnh chattr như được hiển thị:
chattr +i /etc/resolv.conf
lsattr /etc/resolv.conf

Bước 3: Xác định tên máy chủ và tên DNS
dnsmasq đọc tất cả các máy chủ DNS và tên từ file /etc hosts, do đó thêm DNS server của chúng và IP như sau: cat /etc/hosts
Lưu ý: Tên DNS cục bộ cũng có thể được xác định bằng cách nhập tên từ hệ thống con DHCP hoặc bằng cấu hình của một loạt các loại bản ghi hữu ích.
Để áp dụng các thay đổi trên, hãy khởi động lại dịch vụ dnsmasq như sau:
systemctl restart dnsmasq
Nếu máy chủ của chúng ta có firewall thì chúng ta cần mở dịch dụ DNS và DHCP để cho phép các yêu cầu từ máy client đến server:
firewall-cmd --add-service=dns --permanent
firewall-cmd --add-service=dhcp --permanent
firewall-cmd --reload

Bước 4: Thực hiện kiểm tra Local DNS
Để kiểm tra xem máy chủ DNS cục bộ hoặc chuyển tiếp có hoạt động tốt không, chúng ta sử dụng các công cụ dig hoặc nslookup để thực hiện các truy vấn DNS. Chúng ta có thể cài đặt như sau:
yum install bind-utils
Sau khi cài đặt chúng ta có thể kiểm tra tên miền cục bộ như sau:
dig lab85network.net hoặc nslookup labblogd.net

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

4.1: Thiết lập với client là Centos

Chúng ta định cấu hình cho client của chúng ta để tự động nhận địa chỉ IP từ máy chủ DHCP. Đăng nhập vào client và sửa đổi tệp cấu hình giao diện Ethernet như sau: cat /etc/sysconfig/network-scripts/ifcfg-ens37
Chúng ta cần cài đặt DHCP client trong máy để tự động nhận địa chỉ IP.
dnf -y install dhcp-client
Chúng ta có thể sử dụng lệnh dhclient để yêu cầu địa chỉ IP:
dhclient ens37
Kiểm tra địa chỉ IP của mấy client sau khi thực thi lệnh trên: ip add
Thực hiện ping giữa client và server thành công không.

4.2. Thiếp lập với client là Windows

Chúng ta định cấu hình cho client của chúng ta để tự động nhận địa chỉ IP từ máy chủ DHCP. Đăng nhập vào client và thiết lập kết nối của card mạng về chế độ Obtain an IP address automatically như hình sau:

dhcp cl
Sau khi thiết lập nhận IP tự động từ DHCP server chúng ta thực hiện mở cmd chạy lệnh 
ipconfig /renew và kiểm tra xem client đã được cấp IP với đầy đủ các thông số theo cấu hình.
Sau đó chúng ta thực hiện dùng client ping cho server để kiểm tra kết nối xem thành công không: ping 10.0.0.1
Bài lab này 85network thực hiện trên máy ảo nên khuyên mọi người cũng thực hiện trên máy ảo vmware hoặc virtualbox nhé.
85network-share chúc các bạn thành công. Kiến thức như ngọn lửa càng chia sẻ càng bùng cháy!

Bài viết có tham khảo nguồn blogd.net

1 nhận xét:

  1. Xin chào! Mình là Nguyễn Hoài, mình tạo blog này như một nơi lưu trữ tài liệu của mình đang tìm hiểu nghiên cứu để tiện cho việc tìm lại sau này và chia sẻ chúng cho những ai cần đến.
    - Tất cả các bài trên blog một số mình tự viết và một số là copy từ nhiều nguồn trên internet (sẽ ghi rõ nguồn ở cuối bài đăng).
    - Thế nên: - 85network-share được xây dựng trên tinh thần chia sẻ và học hỏi. Mong các bạn khi xem blog cũng trên tinh thần này và có thái độ văn minh lịch sự.
    85network-share xin chân thành cảm ơn!

    Trả lờiXóa

Bài đăng phổ biến