Trong bài viết tuần này, chúng ta cùng trao đổi về một giao thức cơ bản được sử dụng thường xuyên trong các mạng doanh nghiệp: DHCP.
DHCP – Dynamic Host Configuration Protocol là một giao thức cho phép cấp phát tự động cấu hình IP cho các host trên một mạng Ethernet LAN. DHCP hoạt động theo mô hình client – server: các host xin cấp phát IP đóng vai trò là các DHCP client và thiết bị thực hiện cấp phát IP cho các host đóng vai trò là DHCP server. DHCP server có thể là một server chuyên dụng trên nền Linux hoặc Window hoặc một thiết bị mạng router, switch hay firewall.
Chúng ta cùng điểm qua hoạt động cơ bản của DHCP theo sơ đồ trên hình
Hình 1 – Hoạt động cơ bản của DHCP.
1. Đầu tiên, khi client kết nối vào mạng và chưa có IP, nó sẽ gửi broadcast gói tin DHCP DISCOVER để tìm kiếm DHCP server trên mạng nội bộ. Gói tin DHCP này được bọc trong một gói UDP với source port là 68 và destination port là 67. Gói UDP đến lượt nó được đóng gói vào một gói IP với source IP là 0.0.0.0 và destination IP là 255.255.255.255.
2. Tiếp theo, khi DHCP Server nhận được thông điệp DISCOVER từ client, nó hồi đáp broadcast về một gói DHCP OFFER. Gói OFFER sẽ đưa ra một cấu hình IP mà server muốn gán xuống cho client.
Gói tin OFFER này được bọc trong một gói UDP với source port là 67 và destination port là 68. Gói UDP đến lượt nó được đóng gói vào một gói IP với source IP là địa chỉ IP của server và destination IP là 255.255.255.255.
3. Đến lượt nó, client gửi lên cho DHCP server gói DHCP REQUEST. Thông điệp REQUEST của client sẽ cho biết yêu cầu của nó với những thông tin đã được server offer ở bước trước.
Gói REQUEST này sẽ được đóng vào một gói UDP với source port là 68 và destination port là 67. Gói UDP sẽ được truyền tải trong một gói IP với source IP là 0.0.0.0 và destination IP là 255.255.255.255.
4. Cuối cùng, server hồi đáp lại cho client gói DHCP ACK để xác nhận cấu hình IP mà client đã request.
DHCP ACK được đóng vào gói UDP với source port là 67 và destination port là 68, được truyền tải trong gói IP có source IP là IP của server và destination IP là 255.255.255.255.
Đến đây, client chính thức có cấu hình IP và có thể sử dụng địa chỉ IP được cấp phát để trao đổi dữ liệu. Mỗi cấu hình IP được cấp phát sẽ chỉ có thời hạn trong một khoảng thời gian nhất định, sau khoảng thời gian này, client phải yêu cầu server cấp phát gia hạn lại cấu hình IP của mình. Trong những lần sau, các thông điệp DHCP được gửi unicast thay vì broadcast như lần cấp phát đầu tiên.
Như thông lệ, chúng ta sẽ cùng thực hiện một bài lab ví dụ để nắm rõ vấn đề.
Sơ đồ
Hình 2 – Sơ đồ bài lab ví dụ.
Mô tả
- Sơ đồ gồm hai router và một PC. PC đấu nối vào một mạng LAN và sẽ được cấp phát IP một cách tự động từ một DHCP server.
- Ta sẽ khảo sát hai trường hợp: DHCP server là router R1 – kết nối trực tiếp với PC và DHCP server là router R2 – không kết nối trực tiếp với PC.
- Trong bài lab này, ta thực hiện cấu hình router Cisco thành một DHCP server hoặc một DHCP Relay Agent.
Thực hiện
Bước 1: Cấu hình cơ bản trên các router
- Thực hiện đặt địa chỉ IP trên các cổng đấu nối của các router theo quy hoạch IP được chỉ ra trên hình 2.
- Đảm bảo rằng các subnet trên hình 2 có thể đi đến được nhau.
Cấu hình
Trong bước này, chúng ta sẽ thực hiện đặt các IP cố định trên các cổng giao tiếp của các router trên sơ đồ hình 2.
Trên R1:
R1(config)#interface f0/0
R1(config-if)#no shutdown
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#exit
R1(config)#interface f0/1
R1(config-if)#no shutdown
R1(config-if)#ip address 192.168.12.1 255.255.255.252
R1(config-if)#exit
Trên R2:
R2(config)#interface f0/0
R2(config-if)#no shutdown
R2(config-if)#ip address 192.168.12.2 255.255.255.252
R2(config-if)#exit
R2(config)#ip route 192.168.1.0 255.255.255.0 192.168.12.1
Kiểm tra
Ta kiểm tra rằng các địa chỉ đã đi đến được nhau:
Bước 2: Cấu hình R1 làm DHCP server
- Thực hiện cấu hình R1 thành DHCP server cấp phát địa chỉ IP cho các host thuộc mạng 192.168.1.0/24.
- Các host trên mạng này sẽ chỉ nhận IP trong dải từ 192.168.1.11 trở đi, 10 địa chỉ đầu không cấp phát mà sẽ được sử dụng cho gateway và các server sau này của subnet 192.168.1.0/24.
- DHCP server cũng cấp phát cho các host của mạng 192.168.1.0/24 các địa chỉ default – gateway và DNS – server lần lượt là 192.168.1.1 và 8.8.8.8.
Cấu hình
Trên R1:
R1(config)#service dhcp
R1(config)#ip dhcp excluded-address 192.168.1.1 192.168.1.10
R1(config)#ip dhcp pool NET1
R1(dhcp-config)#network 192.168.1.0 255.255.255.0
R1(dhcp-config)#default-router 192.168.1.1
R1(dhcp-config)#dns-server 8.8.8.8
R1(dhcp-config)#exit
Ghi chú
Để cấu hình một router Cisco thành một DHCP server, trước hết ta thực hiện bật dịch vụ DHCP trên router bằng lệnh:
R1(config)#service dhcp
Thông thường, dịch vụ này được bật lên một cách mặc định trên các router Cisco nên ta có thể không cần phải cấu hình.
Tiếp theo, để router đóng vai trò một DHCP server cấp xuống cho các host cấu hình IP theo yêu cầu, chúng ta cấu hình một pool DHCP mô tả những yêu cầu đã đặt ra:
R1(config)#ip dhcp pool NET1
R1(dhcp-config)#network 192.168.1.0 255.255.255.0
R1(dhcp-config)#default-router 192.168.1.1
R1(dhcp-config)#dns-server 8.8.8.8
R1(dhcp-config)#exit
Khi chúng ta sử dụng lệnh “network” trong pool, toàn bộ subnet được khai báo trong câu lệnh sẽ được lần lượt cấp xuống cho các host. Để loại trừ ra các địa chỉ không cấp phát, chúng ta sử dụng lệnh:
Vì việc cấp phát các địa chỉ trong pool sẽ được tiến hành từ địa chỉ đầu tiên nên ngay sau khi khai báo pool nên để tránh hiện tượng cấp phát xong rồi ta mới loại trừ dải địa chỉ để dành, ta nên cấu hình lệnh loại trừ trước khi khai báo pool cấp phát.
Sau khi cấu hình xong, chúng ta thực hiện kiểm tra.
Kiểm tra
Ta có thể để PC tự động thực hiện quá trình xin IP rồi kiểm tra thông số trên card mạng của PC. Tuy nhiên, trong bước này, ta sẽ cấu hình để PC xóa bỏ cấu hình IP cũ hiện có và thực hiện xin lại IP mới. Ta thực hiện điều này bằng cách truy nhập vào cửa sổ CMD của PC và thực hiện các lệnh:
C:\>ipconfig /release
C:\>ipconfig /renew
Kết quả cấp phát IP trên card mạng của PC (hình 3):
Hình 3 – IP nhận được trên PC.
Ta thấy PC đã nhận được cấu hình IP từ hoạt động DHCP đúng như yêu cầu.
Ta kiểm tra trên DHCP server R1 để thấy rằng một địa chỉ IP trong pool đã được cấp phát:
Kết quả show chỉ rõ: địa chỉ 192.168.1.11 đã được cấp phát cho host có Client – ID là “0130.F9ED.AE0E.A0”. Client – ID là một giá trị dùng để định danh cho Client được cấp phát IP từ hoạt động DHCP và có thể có nhiều định dạng khác nhau tùy thuộc vào hệ điều hành được chạy trên client. Với hệ điều hành Microsoft, Client – ID sẽ được xây dựng từ địa chỉ MAC của card mạng PC bằng cách thêm vào prefix “01”. Trong ví dụ ở trên, địa chỉ MAC trên card mạng của PC là 30F9.EDAE.0EA0.
Bước 3: Cấu hình DHCP Relay Agent
- Gỡ bỏ cấu hình DHCP đã thực hiện trên R1.
- Thực hiện cấu hình DHCP theo yêu cầu đã đặt ra ở bước 2 nhưng lần này R2 sẽ đóng vai trò là DHCP server.
Cấu hình
Gỡ bỏ cấu hình DHCP đã thực hiện trên R1:
R1(config)#no ip dhcp excluded-address 192.168.1.1 192.168.1.10
R1(config)#no ip dhcp pool NET1
Cấu hình DHCP server trên R2:
R2(config)#ip dhcp excluded-address 192.168.1.1 192.168.1.10
R2(config)#ip dhcp pool NET1
R2(dhcp-config)#network 192.168.1.0 255.255.255.0
R2(dhcp-config)#default-router 192.168.1.1
R2(dhcp-config)#dns-server 8.8.8.8
R2(dhcp-config)#exit
Cấu hình DHCP Relay Agent trên R1:
R1(config)#interface f0/0
R1(config-if)#ip helper-address 192.168.12.2
R1(config-if)#exit
Ghi chú
Bước này xem xét đến tình huống DHCP server không nằm cùng subnet với các host xin cấp phát IP mà nằm ở một vị trí khác trong hệ thống mạng. Như đã trình bày ở trên, vì hoạt động DHCP là một hoạt động broadcast nội bộ (sử dụng local broadcast 255.255.255.255) và router mặc định chặn broadcast nên nếu DHCP server đặt ở một vị trí khác bên ngoài, các host sẽ không thể xin được IP. Giải pháp cho tình huống này là chúng ta sẽ cấu hình router R1 thành DHCP Relay Agent. Khi R1 nhận được gói tin DHCP broadcast xin cấp phát IP từ các host, R1 sẽ chuyển gói này thành dạng unicast và gửi đến DHCP server R2 để xin cấu hình IP. DHCP server R2 đến lượt nó sẽ gửi unicast cấu hình IP định cấp phát về cho Agent R1 và R1 sẽ chuyển lại thành dạng broadcast rồi rót xuống cho host trong mạng cần cấp phát IP.
Để cấu hình R1 thành DHCP Relay Agent, chúng ta vào cổng giao tiếp của R1 với mạng đang đi xin IP và sử dụng lệnh:
R1(config-if)#ip helper-address 192.168.12.2
Điều kiện đặt ra cho giải pháp này là subnet 192.168.1.0/24 cần cấp phát cấu hình IP và DHCP server R2 phải đi đến được nhau. Điều này đã được giải quyết trong bước đầu tiên của bài lab.
Kiểm tra
Tương tự như bước 2, chúng ta xóa cấu hình IP hiện có trên PC và thực hiện xin lại IP:
C:\>ipconfig /release
C:\>ipconfig /renew
Ta kiểm tra rằng IP đã được rót lại xuống cho PC (hình 4):
Hình 4 – PC đã nhận được IP từ R2.
Kết quả hoàn toàn tương tự như ở bước 2, tuy nhiên địa chỉ IP của DHCP server đã được đổi thành địa chỉ của R2 (192.168.12.2).
Ta kiểm tra bảng binding DHCP trên R2:
Ta thấy R2 đã thực hiện vai trò DHCP server của mình.
Trên đây, chúng ta đã cùng nhau trao đổi về hoạt động cơ bản của giao thức DHCP – một giao thức nền tảng được sử dụng rất phổ biến trong các hệ thống mạng. Trong các bài viết tới, chúng ta sẽ cùng tiếp tục trao đổi về chủ đề này.
Cảm ơn các bạn!
Hẹn gặp lại các bạn trong các bài viết tiếp theo!