Sửa lỗi "DHCP lease acquisition failed. No IP address could be obtained."

beginner🌐 Networking2026-03-22| Windows 10/11, Linux (Ubuntu/Debian/CentOS/RHEL), macOS 12+, máy tính bất kỳ trên mạng dùng DHCP

Error Message

DHCP lease acquisition failed. No IP address could be obtained.
#networking#dhcp#ip-address#lease

Chuyện gì đang xảy ra

Máy của bạn đã gửi broadcast DHCP discover nhưng không nhận được phản hồi hữu ích — do đó nó tự gán địa chỉ 169.254.x.x (APIPA), hoặc không có địa chỉ nào cả. Lỗi đầy đủ trông như sau:

DHCP lease acquisition failed. No IP address could be obtained.

Không có IP hợp lệ, không gì trên mạng LAN có thể định tuyến lưu lượng đến máy của bạn. Truy cập Internet tê liệt hoàn toàn. Nguyên nhân gốc rễ nằm đâu đó trong một chuỗi khả năng: adapter mạng, dịch vụ DHCP client, hoặc tường lửa cục bộ — hay bản thân DHCP server đã cạn kiệt địa chỉ, cấu hình sai, hoặc không thể truy cập từ phía mạng.

Quy trình debug

Bước 1 — Xác nhận bạn không có IP hợp lệ

Trước khi thay đổi bất kỳ cài đặt nào, hãy kiểm tra xem interface của bạn thực sự đang có địa chỉ gì.

Windows:

ipconfig /all

Dòng hiển thị Autoconfiguration IPv4 Address . . : 169.254.x.x xác nhận DHCP đã thất bại — Windows tự gán địa chỉ APIPA như một phương án dự phòng.

Linux:

ip addr show
# or older systems:
ifconfig -a

Không có dòng inet trên interface của bạn (ví dụ: eth0, ens33) nghĩa là không nhận được lease nào.

macOS:

ipconfig getifaddr en0

Không có đầu ra, hoặc địa chỉ 169.254.x.x, nghĩa là DHCP đã thất bại.

Bước 2 — Kiểm tra xem DHCP server có truy cập được không

Trên Linux, kích hoạt thủ công một yêu cầu DHCP với đầu ra chi tiết:

# Replace eth0 with your interface name
sudo dhclient -v eth0

Quan sát đầu ra cẩn thận. Nếu DHCPDISCOVER được gửi nhưng không nhận được DHCPOFFER nào, vấn đề nằm ở phía mạng — DHCP server đang bị tắt, không có server trên VLAN này, hoặc tường lửa đang chặn cổng UDP 67/68.

Nhận được DHCPOFFER rồi theo sau là DHCPNAK là câu chuyện khác: server đã từ chối yêu cầu của bạn. Điều đó thường chỉ ra việc IP pool đã cạn kiệt hoặc xung đột địa chỉ.

Bước 3 — Kiểm tra event log / system journal

Windows Event Viewer:

# Run in PowerShell
Get-WinEvent -LogName System | Where-Object { $_.ProviderName -eq 'Dhcp-Client' } | Select-Object -First 20 | Format-List TimeCreated, Message

Linux systemd journal:

journalctl -u NetworkManager --since '10 minutes ago'
# or for dhclient directly:
journalctl -u dhclient -n 50

Giải pháp

Fix 1 — Release và renew lease (thử cách này trước)

Windows:

ipconfig /release
ipconfig /renew

Nếu ipconfig /renew bị treo hoặc báo lỗi, hãy chuyển sang Fix 2.

Linux:

# Kill any existing dhclient, then re-request
sudo dhclient -r eth0
sudo dhclient eth0

macOS:

sudo ipconfig set en0 DHCP

Hoặc vào System Settings → Network → [Interface] → Renew DHCP Lease.

Fix 2 — Khởi động lại dịch vụ DHCP client

DHCP daemon có thể bị kẹt ở trạng thái lỗi, đặc biệt sau các chu kỳ ngủ/thức hoặc khi mạng bị gián đoạn. Khởi động lại nó buộc hệ thống thực hiện lại quá trình bắt tay từ đầu.

Windows:

# In PowerShell (Run as Administrator)
Restart-Service -Name Dhcp
ipconfig /renew

Linux (NetworkManager):

sudo systemctl restart NetworkManager
# Check status after
systemctl status NetworkManager

Linux (systemd-networkd):

sudo systemctl restart systemd-networkd

Fix 3 — Reset network adapter / xóa trạng thái cũ

Bộ nhớ cache lease bị hỏng hoặc trạng thái adapter lỗi thời sẽ khiến DHCP thất bại mỗi lần thử cho đến khi bạn xóa sạch. Trên Windows, trình tự reset đầy đủ là:

# Run as Administrator
netsh winsock reset
netsh int ip reset
ipconfig /flushdns
ipconfig /release
ipconfig /renew

Khởi động lại máy sau khi chạy các lệnh này. Các lệnh winsock resetint ip reset không có hiệu lực đầy đủ cho đến lần khởi động tiếp theo.

Linux — xóa file lease cũ:

# Location varies by distro
sudo rm /var/lib/dhclient/dhclient.leases
sudo rm /var/lib/NetworkManager/*.lease
sudo systemctl restart NetworkManager

Fix 4 — Tắt và bật lại network adapter

Windows (PowerShell):

$adapter = Get-NetAdapter | Where-Object { $_.Status -eq 'Up' } | Select-Object -First 1
Disable-NetAdapter -Name $adapter.Name -Confirm:$false
Start-Sleep -Seconds 3
Enable-NetAdapter -Name $adapter.Name

Linux:

sudo ip link set eth0 down
sleep 3
sudo ip link set eth0 up
sudo dhclient eth0

Fix 5 — DHCP pool cạn kiệt (sửa từ phía server)

Nhiều thiết bị cùng không lấy được IP một lúc? Pool có thể đã cạn kiệt. Một router gia đình thông thường đi kèm dải địa chỉ như 192.168.1.100–192.168.1.150 — chỉ có 51 địa chỉ. Một văn phòng vừa với 60+ thiết bị sẽ vượt quá giới hạn đó ngay lập tức.

Đăng nhập vào trang quản trị router và thực hiện một hoặc nhiều bước sau:

  • Mở rộng dải DHCP pool (ví dụ: 192.168.1.100–200 thay vì 100–150)
  • Giảm thời gian lease từ 24 giờ xuống 4–8 giờ để các lease cũ hết hạn nhanh hơn
  • Xóa toàn bộ lease đang hoạt động và để các thiết bị yêu cầu lại từ đầu

Trên các Linux server chạy dnsmasq hoặc isc-dhcp-server, kiểm tra số lượng lease đang hoạt động:

# Check current leases
cat /var/lib/misc/dnsmasq.leases
# or
cat /var/lib/dhcpd/dhcpd.leases | grep -c 'binding state active'

Fix 6 — Kiểm tra tường lửa chặn UDP 67/68

Lưu lượng DHCP chạy qua UDP: cổng 67 cho server, cổng 68 cho client. Một quy tắc tường lửa nghiêm ngặt có thể âm thầm loại bỏ các gói này — không có thông báo lỗi, chỉ là im lặng từ phía server.

# Linux — check if iptables is dropping DHCP traffic
sudo iptables -L INPUT -n -v | grep -E '67|68'

# Temporarily allow (test only)
sudo iptables -I INPUT -p udp --dport 68 -j ACCEPT
sudo iptables -I OUTPUT -p udp --dport 67 -j ACCEPT

Xác nhận đã khắc phục thành công

# Windows
ipconfig /all
# Look for: IPv4 Address = 192.168.x.x (not 169.254.x.x)
# Look for: DHCP Enabled = Yes
# Look for: Lease Obtained = [recent timestamp]

# Linux
ip addr show eth0
# Look for: inet 192.168.x.x/24

# Ping gateway to confirm routing works
ping -c 4 192.168.1.1   # Linux/macOS
ping 192.168.1.1         # Windows

Mẹo hữu ích

Đang gặp vấn đề với cấu hình subnet hoặc dải IP trông không đúng? Subnet Calculator tại ToolCraft cho phép bạn xác minh các dải CIDR và kiểm tra xem một IP có thực sự nằm trong subnet mong đợi hay không. Chạy hoàn toàn trên trình duyệt, không tải lên bất kỳ dữ liệu nào.

Bài học rút ra

  • 169.254.x.x là dấu hiệu đầu tiên trên Windows — địa chỉ đó có nghĩa là DHCP đã thất bại và Windows tự gán địa chỉ APIPA dự phòng.
  • Dùng dhclient -v trên Linux — đầu ra chi tiết hiển thị toàn bộ quá trình bắt tay DISCOVER → OFFER → REQUEST → ACK, giúp bạn thấy chính xác bước nào bị lỗi.
  • Pool lease cạn kiệt rất phổ biến ở văn phòng và phòng lab — giảm thời gian lease xuống 4–8 giờ (thay vì 24) giúp thu hồi địa chỉ từ các thiết bị đã rời mạng mà không release lease.
  • VM và container cần được chú ý đặc biệt — virtual network adapter hoặc bridge có thể vào trạng thái lỗi sau khi live migration hoặc khôi phục snapshot. Reset adapter toàn bộ hầu như luôn giải quyết được vấn đề này.

Related Error Notes