Cấu hình DHCP trên Centos 7
Bài đăng này đã không được cập nhật trong 3 năm
Cấu hình DHCP trên Centos 7
I. Cấu hình căn bản DHCP
Dynamic Host Configuration Protocol (DHCP) là một network protocol có chức năng tự động cung cấp các thông số TCP/IP (Địa chỉ IP, gateway, DNS Server,...) cho các máy client
Điểm mạnh của DHCP là giúp ta cấu hình địa chỉ IP của hàng loạt các máy client chỉ bằng việc thay đổi cấu hình file config. Thay đổi sẽ có hiệu lực khi restart mạng hoặc reboot các máy client
1. Cài đặt DHCP
Kiểm tra xem DHCP đã được cài đặt trên server hay chưa:
# rpm -q dhcp
Cài đặt DHCP:
# yum install dhcp
2. File cấu hình
File cấu hình dhcp nằm tại:
/etc/dhcp/dhcpd.conf
File cấu hình ban đầu sẽ không có thông số cấu hình nên ta copy file mẫu và chỉnh sửa theo nhu cầu:
# cp /usr/share/doc/dhcp-<version>/dhcpd.conf.example /etc/dhcp/dhcpd.conf
Chỉnh sửa file cấu hình DHCP:
# vi /etc/dhcp/dhcpd.conf
Sau khi chỉnh sửa, restart DHCP để các thay đổi có hiệu lực:
# systemctl restart dhcpd
Khởi động/kết thúc dịch vụ DHCP:
# systemctl [start] [stop] dhcpd
Xem trạng thái dịch vụ và thông báo lỗi của DHCP:
# systemctl status dhcpd
2.1. Khai báo subnet
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.254; # địa chỉ gateway
option subnet-mask 255.255.255.0; # subnet mask gateway
option domain-name "yourhost.com"; # tên domain
option domain-name-servers 192.168.1.1; # địa chỉ DNS Server
option time-offset -18000; # Eastern Standard Time
range 192.168.1.10 192.168.1.100; # miền IP được gán tự động cho client
}
2.2. Khai báo shared-network
Các subnet có chung một mạng vật lý nên được cấu hình nằm trong một shared-network. Các tham số nằm trong shared-network nhưng nằm ngoài subnet gọi là các tham số global (tức tham số global được gán cho các subnet này)
shared-network name {
# các tham số chung cho cả hai subnet
option domain-name "test.redhat.com";
option domain-name-servers ns1.redhat.com, ns2.redhat.com;
option routers 192.168.0.254;
# hai subnet có chung mạng vật lý
subnet 192.168.1.0 netmask 255.255.252.0 {
# tham số riêng cho subnet 1.0
range 192.168.1.1 192.168.1.254}
subnet 192.168.2.0 netmask 255.255.252.0 {
# tham số riêng cho subnet 2.0
range 192.168.2.1 192.168.2.254;}
}
2.3. Khai báo range
Gán một miền địa chỉ IP cho các client một cách tự động. Có hai tham số về thời gian cần phải phân biệt:
-
max-lease-time: là thời gian tối đa mà một địa chỉ IP được lưu tại client trước khi bị DHCP thu hồi và gán cho client khác. VD: client yêu cầu lưu IP trong 2 ngày nhưng max-lease-time là 1 ngày thì IP gán cho client đó sẽ bị lấy lại sau 1 ngày.
-
default-lease-time: là thời hạn mặc định nếu các client không có yêu cầu về thời hạn IP được thu hồi.
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "example.com";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
}
2.4. Gán IP tĩnh cho hosts
Là thao tác gán địa chỉ IP nhất định cho 1 host thông qua địa chỉ MAC Address từ host đó.
host apex {
option host-name "apex.example.com"; # tên host mà ta muốn gán cho host
hardware ethernet 00:A0:78:8E:9E:AA; #Địa chỉ MAC của host
fixed-address 192.168.1.4; # địa chỉ IP tĩnh cho host
}
Lưu ý chọn địa chỉ IP nằm ngoài miền IP đã khai báo.
2.5. Khai báo group
Khai báo group khi ta muốn áp các tham số global cho các nhóm đặc biệt như: shared-network, subnets, hoặc hosts. VD dưới đây áp các tham số global cho 2 host.
group {
option routers 192.168.1.254;
option subnet-mask 255.255.255.0;
option domain-name "example.com";
option domain-name-servers 192.168.1.1;
option time-offset -18000; # Eastern Standard Time
host apex {
option host-name "apex.example.com";
hardware ethernet 00:A0:78:8E:9E:AA;
fixed-address 192.168.1.4;
}
host raleigh {
option host-name "raleigh.example.com";
hardware ethernet 00:A1:DD:74:C3:F2;
fixed-address 192.168.1.6;
}
}
3. Lease Database
Khi DHCP gán IP cho 1 client nào đó DHCP Server sẽ ghi nhận lại các IP mà nó đã gán cho các host vào lease database file, ta có thể xem chi tiết tại:
cat /var/lib/dhcpd/dhcpd.lease
** Lưu ý chung:**
- Lease database sẽ được tái tạo lại thường xuyên để kích thước file không quá lớn.
- Không tự ý xóa và tạo file mới. trước khi thay đổi nên tạo backup
- Nếu khởi động dịch vụ DHCP thất bại, nguyên nhân có thể do file dhcpd.lease không tồn tại. Tạo file này bằng lệnh sau:
# touch /var/lib/dhcpd/dhcpd.lease
- Trường hợp Server có nhiều network interfaces, một interface được cấu hình làm dhcp client nhận Public IP address để ra Internet, interface còn lại ta cấu hình (cho mạng nội bộ đứng sau firewall) nhận request từ local client bằng cách thêm dòng sau vào file dhcpd.conf:
DHCPDARGS=enp3s0 # enp3s0 là tên interface nhận request từ local client
II. DHCP Relay Agent
DHCP Relay Agent có nhiệm vụ nhận các DHCP request từ các client (nơi không có DHCP Server hay nằm cách xa DHCP Server) và chuyển tiếp các gói tin này cho DHCP Server để xử lý và sẽ reply bằng broadcast hay unicast đến subnet đã gửi các gói request. Mặc định DHCP Relay Agent sẽ lắng nghe trên tất cả các interface của nó trừ phi ta cấu hình lắng nghe trên một số interface nhất định như sau:
1. Cấu hình DHCPv4 Relay Agent
Copy file dhcrelay mẫu và chỉnh sửa theo nhu cầu:
# cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/
# vi /etc/systemd/system/dhcrelay.service
Nhập địa chỉ IP của DHCP Server:
ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.1.1
Khai báo interface mà DHCP Relay sẽ lắng nghe:
ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.1.1 -i enp3s0
Khởi động lại DHCPv4 Relay:
# systemctl restart dhcrelay
2. Cấu hình DHCPv6 Relay Agent
Copy dhcrelay.service thành dhcrelay6 . service và chỉnh sữa =dưới quyền root:
cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/dhcrelay6.service
vi /etc/systemd/system/dhcrelay6.service
Cấu hình lower interface (interface lắng nghe client) và upper interface (interface chuyển tiếp request cho DHCP Server)
ExecStart=/usr/sbin/dhcrelay - d - -no-pid -6 -l enp2s0 - u enp3s0
Restart DHCPv6 Relay:
# systemctl restart dhcrelay6
III. Multihomed DHCP
Cấu hình multi subnet trên DHCP. Sau đây là file cấu hình mẫu với 2 subnet:
default-lease-time 600;
max-lease-time 7200;
subnet 10.0.0.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option routers 10.0.0.1;
range 10.0.0.5 10.0.0.15;
}
subnet 172.16.0.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option routers 172.16.0.1;
range 172.16.0.5 172.16.0.15;
}
1. Cấu hình 1 host vào nhiều mạng
Đây là trường hợp DHCP có 2 subnet nhưng chỉ có 1 host. Host này được cấu hình địa chỉ IP nằm trong miền IP của cả 2 subnet. Host mang IP của subnet nào tùy thuộc vào việc nó được kết nối vật lý tới mạng nào. Cấu hình này hữu ích trong trường hợp ta muốn thay đổi nhanh địa chỉ của 1 host về 1 subnet dự phòng.
default-lease-time 600;
max-lease-time 7200;
subnet 10.0.0.0 netmask 255.255.255.0
option subnet- mask 255.255.255.0
option routers 10.0.0.1;
range 10.0.0.5 10.0.0.15;
}
subnet 172.16.0.0 netmask 255.255.255.0
option subnet-mask 255.255.255.0
option routers 172.16.0.1;
range 172.16.0.5 172.16.0.15;
}
host example0 {
hardware ethernet 00: 1A: 6B: 6A: 2E: 0B;
fixed- address 10. 0. 0. 20;
}
host example1 {
hardware ethernet 00: 1A: 6B: 6A: 2E: 0B;
fixed- address 172. 16. 0. 20;
}
2. Cấu hình nhiều host vào 1 mạng
Trong một trường hợp khác. Ta có 2 network interface khác nhau của 2 host và được gán cùng 1 địa chỉ IP. Lưu ý là cấu hình sau không hiệu quả nếu cả 2 host cùng kết nối tới cùng một network. Cấu hình này ứng dụng trong trường hợp 1 host bị down thì ta chỉ việc kết nối host dự phòng vào mạng là host dự phòng sẽ mang địa chỉ IP của host bị down và thay thế nó.
host interface0 {
hardware ethernet 00: 1a: 6b: 6a: 2e: 0b;
fixed- address 10. 0. 0.18;
}
host interface1 {
hardware ethernet 00: 1A: 6B: 6A: 27: 3A;
fixed- address 10. 0. 0.18;
}
IV. DHCP for IPv6
DHCP hỗ trợ IPv6 kể từ khi version 4.x ra đời bao gồm DHCPv6 Server, Client và Relay Agent. Agent hỗ trợ IPv4 lẫn IPv6 nhưng chỉ có thể quản lý 1 giao thức tại 1 thời điểm nên ta cần khởi động 2 dhcp của 2 phiên bản 1 cách riêng biệt như sau:
# systemctl start dhcpd
# systemctl start dhcpd6
File cấu hình mẫu của DHCPv6 nằm tại
/usr/share/doc/dhcp-<version>/dhcpd6.conf.example
Copy file mẫu và tiến hành chỉnh sửa:
# cp /usr/share/doc/dhcp-<version>/dhcpd6.conf.example /etc/dhcp/dhcpd6.conf
File mẫu cấu hình DHCPv6 như sau:
subnet6 2001: db8: 0: 1: : /64 {
range6 2001: db8: 0: 1: : 129 2001: db8: 0: 1: : 254;
option dhcp6. name- servers fec0: 0: 0: 1: : 1;
option dhcp6. domain- search " domain. example" ;
}
All rights reserved