Giới thiệu.

bài trước chúng ta đã cài đặt và cấu hình thành công DNS server cho mô hình doanh nghiệp nhỏ. Trong bài này mình sẽ hướng dẫn cách cấu hình DHCP server để cấp phát địa chỉ IP tự động cho các máy client trong mạng doanh nghiệp nhé.

Xem lại mô hình cũ bao gồm các máy như:

  • Primary DNS server (Máy chủ DNS chính):
    • Operating system : Ubuntu 16.04 LTS 64 bit server
    • Hostname : dns1.echip.local
    • IP address : 192.168.1.101/24
  • Secondary DNS server (Máy chủ DNS dự phòng):
    • Operating system : Ubuntu 16.04 LTS 64 bit server
    • Hostname : dns2.echip.local
    • IP address : 192.168.1.102/24
  • DNS Client (Máy trạm của nhân viên):
    • Operating system : Windows XP
    • Hostname : echip-xpclient
    • IP address : 192.168.1.103/24

Trong bài này chúng ta sẽ sử dụng lại các máy ảo trong bài lab cấu hình DNS và sẽ cài DHCP server trên máy Primary DNS. DHCP server sẽ cấp địa chỉ IP từ 192.168.1.105 đến 192.168.1.110 cho các máy trạm và tự động cập nhật thông tin cho DNS server luôn (Chức năng DDNS).

Hướng dẫn thực hiện.

Cài đặt DHCP Server bằng lệnh:

sudo apt-get install isc-dhcp-server

Cấu hình lại DNS server.

Đầu tiên chúng ta sẽ cấu hình lại chút xíu trên DNS server cũ để làm việc với DHCP server.

Bước 1: Thao tác với rndc-key. File key này đã có từ lúc chúng ta cài DNS server rồi, tác dụng của nó là để xác thực khi DHCP server cập nhật thông tin cho DNS server. Chúng ta cần copy file rndc.key từ thư mục /etc/bind đến thư mục /etc/dhcp/ddns-keys. Sau đó chown cho nó thuộc quyền root và phân quyền 640.

sudo cp /etc/bind/rndc.key /etc/dhcp/ddns-keys
sudo chown root:root /etc/dhcp/ddns-keys/rndc.key
sudo chmod 640 /etc/dhcp/ddns-keys/rndc.key

[box type=”info” align=”” class=”” width=””]Nếu bạn muốn, bạn có thể tạo mới file rndc.key này bằng lệnh: sudo /usr/sbin/rndc-confgen -a -b 512 (option -b 512 nghĩa là mã hóa 512 bits). Nếu bạn có tạo mới file rndc.key này thì nhớ copy sao cho giống nhau nhé.[/box]

File rndc.key của mình có nội dung như sau:

hoang@dns1:~$ sudo cat /etc/bind/rndc.key
key "rndc-key" {
        algorithm hmac-md5;
        secret "Q0CfxacLzP1DbQHcRg2AQA==";
};

Bước 2: Chỉnh sửa file /etc/bind/named.conf.options. Bằng lệnh sudo nano /etc/bind/named.conf.options và chỉnh nội dung file như bên dưới. Mình có thêm 1 số option các bạn so sánh và sửa đổi nhé.

acl internals {
        //lo adapter
        127.0.0.1;
        //local network
        192.168.1.0/24;
};

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        forwarders {
        8.8.8.8;
        8.8.4.4;
        208.67.220.220;
        };
        allow-query {
                internals;
        };
        allow-query-cache {
                internals;
        };
        recursion yes;
        allow-recursion {
        internals;
        };
        allow-transfer {
        internals;
        };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-enable no;
        // dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { none; };
};

Bước 3: Sửa file /etc/bind/named.conf.local. Các bạn xem kỹ ở đây mình có Include file rndc.key để sử dụng ở option allow-update. Ngoài ra mình cần đổi mấy cái file zone từ lưu trữ ở /etc/bind đến thư mục /var/lib/bind/ vì lý do AppArmor Firewall nó không cho tự động ghi vào thư mục /etc.

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
include "/etc/bind/rndc.key";
zone "echip.local" {
        type master;
        file "/var/lib/bind/for.echip.local";
        allow-transfer { 192.168.1.102; };
        also-notify { 192.168.1.102; };
        allow-update { key rndc-key; };
 };
zone "1.168.192.in-addr.arpa" {
        type master;
        file "/var/lib/bind/rev.echip.local";
        allow-transfer { 192.168.1.102; };
        also-notify { 192.168.1.102; };
        allow-update { key rndc-key; };
 };

Bước 4: Copy zone file từ thư mục /etc/bind đến thư mục /var/lib/bind. Bằng lệnh:

sudo cp /etc/bind/*.echip.local /var/lib/bind/

Bạn sẽ copy được 2 zone file là for.echip.localrev.echip.local mà mình đã làm trong bài lab trước đó.

Bước 5: Phân quyền cho zone file.

sudo chown bind:bind /var/lib/bind/*.echip.local
sudo chmod 664 /var/lib/bind/*.echip.local

Bước 6: Tắt IPv6 bằng cách sửa file /etc/default/bind9. Thêm cái -4 vào OPTIONS.

# run resolvconf?
RESOLVCONF=no

# startup options for the server
OPTIONS="-4 -u bind"

Bước 7: Kiểm tra toàn bộ các thiết lập về DNS đã đúng hay chưa.

sudo named-checkconf
sudo named-checkzone echip.local /var/lib/bind/for.echip.local
sudo named-checkzone echip.local /var/lib/bind/rev.echip.local

Bước 8: Nếu không xảy ra lỗi gì thì chúng ta restart dịch vụ bind9.

sudo systemctl restart bind9

Cấu hình DHCP server.

Bước 9: Chỉnh sửa file /etc/dhcp/dhcp.conf. Thêm nội dung sau:

sudo nano /etc/dhcp/dhcpd.conf

nội dung:

ddns-updates on;
ddns-update-style standard;
authoritative;

# This option points to the copy rndc.key we created for bind9.
include "/etc/dhcp/ddns-keys/rndc.key";

allow unknown-clients;
use-host-decl-names on;
default-lease-time 86400; #24  hours
max-lease-time 86400;
log-facility local7;

# echip.local DNS zones
zone echip.local. {
  primary 192.168.1.101; # This server is the primary DNS server for the zone
  key rndc-key;
}
zone 1.168.192.in-addr.arpa. {
  primary 192.168.1.101; # This server is the primary reverse DNS for the zone
  key rndc-key;
}

# echip.local LAN range
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.105 192.168.1.110;
  option subnet-mask 255.255.255.0;
  option routers 192.168.1.1;
  option domain-name-servers 192.168.1.101, 192.168.1.102;
  option domain-name "echip.local";
  ddns-domainname "echip.local.";
  ddns-rev-domainname "in-addr.arpa.";

  ## To PXE Boot from another server ##
#  filename "pxelinux.0";
#  next-server 10.1200.5;
}

# Static hosts give an IP addr by MAC address
#group {
#  # Fist static host
#  host static1.echip.local {
#      hardware ethernet 01:23:45:67:89:ab;
#      fixed-address 10.1.200.120;
#      ddns-hostname "static1";
#  }
#}

Bước 10: Reboot lại máy.

Bước 11: Mở máy XP client lên test xem có xin được IP không 😀

Video hướng dẫn.

Sẽ cập nhật sau nhé các bạn.

Bài viết khác trong cùng Series:

<< Bài 13: Cấu hình DNS server đơn giản
10 Bình luận
  1. Nam Tran 1 năm trước

    ad oi em da cau hinh thanh cong dns va dhcp roi ad co the dang bai huong dan cac dich vu khac khong a.
    Em cam on a.

    • Tác giả
      Hoàng Nguyễn 1 năm trước

      Mình đang dự định viết về FTP, WEB, DATABASE nữa là gần đủ bộ cho series này, nhưng cuối năm bận quá 😀 bạn thông cảm

  2. Trương Hoài Ân 1 năm trước

    AD, có thể làm bài viết về startup scrip được không, mình đang cài noip nhưng máy ubuntu khởi động lại thì không có tự start được. Mình đọc nhiều tài liệu rồi nhưng không chạy. Cảm ơn Ad

  3. Trương Hoài Ân 1 năm trước

    Ad oi khong duoc ad

  4. Nguyễn Khoa 1 năm trước

    Ad cho e hỏi DHCP server có 2 NIC , nối với 2 LAN và dãy địa chỉ 192.168.10.10 –> 192.168.10.50 cho LAN thứ 1 và vd; 172.16.1.10 —> 172.16.1.50 thì mình cấp cho bên LAN thứ 2 thì cho e hỏi cấu hình trên máy Ubuntu làm sao để cho nó cấp được 2 dãy ip như vậy .

    • Tác giả
      Nguyễn Minh Hoàng 1 năm trước

      Bạn cứ cấu hình file /etc/dhcp/dhcp.conf như bài trên hướng dẫn, có bao nhiêu range thì cứ làm đúng bấy nhiêu range. Như cái đoạn bắt đầu từ # echip.local LAN range đó bạn có thể viết tiếp sau nó # echip.local LAN02 range. Khi card mạng thuộc range nào nhận được DHCP request thì nó sẽ tự động giải quyết theo range đó thôi.

Gửi phản hồi

Đăng nhập bằng tài khoản của bạn

hoặc    

Quên thông tin của bạn?

Create Account

%d bloggers like this: