Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Troubleshooting DHCP

    DHCP Troubleshooting trên Cisco: Khi Client Không Nhận Được IP, Đừng Vội Đổ Lỗi Cho DHCP!


    Chỉ một lệnh show ip sockets có thể cứu bạn hàng giờ debug…

    DHCP là một trong những dịch vụ tưởng đơn giản nhưng lại gây ra rất nhiều sự cố khó chịu trong thực tế vận hành mạng. Client không nhận được IP, DHCP relay không hoạt động, server gửi Offer nhưng không bao giờ thấy ACK quay về… Đây là các lỗi mà kỹ sư CCNA, CCNP hay cả CCIE đều từng gặp.

    Trong bài này chúng ta đi qua hai tình huống troubleshoot DHCP rất điển hình: DHCP Service bị lỗi trên router serverDHCP Relay (ip helper-address) hoạt động không đầy đủ do lỗi định tuyến. Quan trọng hơn, ta không chỉ xem cấu hình mà đi theo tư duy troubleshooting từng bước như khi xử lý sự cố thật. fileciteturn0file0
    Phần 1. Troubleshooting DHCP Service

    Topology ban đầu


    Mô hình rất đơn giản:
    • DHCP Client: 192.168.12.0/24
    • DHCP Server: Router địa chỉ 192.168.12.2
    • Client kết nối Fa0/0 tới Server Fa0/0

    Nhưng client không lấy được địa chỉ IP.

    Câu hỏi đầu tiên không phải “DHCP pool có đúng không?” mà phải kiểm tra Layer 1 đến Layer 3 trước. Bước 1: Kiểm tra interface


    Trên client:

    show ip interface brief

    Kết quả:

    FastEthernet0/0 unassigned YES DHCP up up

    Interface up/up và đã cấu hình DHCP.

    Kiểm tra phía server:

    show ip interface brief
    FastEthernet0/0 192.168.12.2 YES manual up up

    Server cũng hoạt động bình thường.
    Bước 2: Xác minh client có gửi DHCP Discover không


    Bật debug:

    debug dhcp detail

    Thấy:

    DHCP: Discover attempt #1
    Lease server: 0.0.0.0 state Selecting

    Điều này chứng minh:
    • Client đang gửi DHCP Discover
    • Layer 2 không phải vấn đề
    • Broadcast DHCP đang rời khỏi client

    Nếu không thấy Discover, cần kiểm tra:
    • VLAN sai
    • Trunk mismatch
    • STP blocking
    • Port security chặn lưu lượng

    Đây là chỗ nhiều người bỏ sót.
    Bước 3: Kiểm tra DHCP Pool

    show ip dhcp pool

    Output:

    Pool MYPOOL
    Subnet 192.168.12.0/24
    Total addresses 254
    Leased addresses 0

    Pool tồn tại và đúng subnet.

    Tới đây nhiều người nghĩ DHCP phải hoạt động.

    Nhưng chưa chắc.
    Bước 4: Kiểm tra DHCP Server Statistics

    show ip dhcp server statistics

    Không thấy:
    • DHCPDISCOVER
    • DHCPOFFER
    • DHCPACK

    Tức DHCP server không xử lý packet nào.

    Vì sao?
    Bước 5: Dùng lệnh ít người nhớ đến — show ip sockets

    show ip sockets

    Không thấy UDP port 67.

    Đây chính là đầu mối.

    DHCP service chưa chạy.

    Bật dịch vụ:

    service dhcp

    Kiểm tra lại:

    show ip sockets

    Giờ thấy:

    UDP ... 192.168.12.2 67

    Router đang listen cổng UDP 67.

    Ngay sau đó client nhận IP:

    DHCP-6-ADDRESS_ASSIGN:
    192.168.12.1 assigned
    Root Cause


    Không phải:
    • Interface lỗi
    • Pool lỗi
    • Client lỗi

    Mà đơn giản:

    DHCP service bị disable.
    Bài học rút ra


    Nếu mọi thứ có vẻ đúng nhưng DHCP vẫn chết:

    Luôn kiểm tra:

    show ip sockets
    show ip dhcp server statistics

    Đây là hai lệnh troubleshoot rất mạnh nhưng ít được dùng.
    Phần 2. Troubleshooting DHCP Relay


    Đây mới là chỗ nhiều kỹ sư dễ vấp. Topology


    Ba router:

    Client --- Relay --- Server
    • Client subnet: 192.168.12.0/24
    • Relay–Server subnet: 192.168.23.0/24

    Relay đã có:

    ip helper-address x.x.x.x

    Nhưng client vẫn không có IP.
    Bước 1: Kiểm tra Discover tới server không


    Trên DHCP server:

    show ip dhcp server statistics

    Thấy:

    DHCPDISCOVER 12
    DHCPOFFER 12

    Tin rất tốt:
    • Relay hoạt động
    • Server nhận Discover
    • Server gửi Offer

    Nhưng:

    Không có DHCPACK.

    Rõ ràng vấn đề nằm sau giai đoạn Offer.
    Bước 2: Debug DHCP Packet

    debug ip dhcp server packet

    Thấy:

    Sending DHCPOFFER to client
    through relay 192.168.23.2

    Server cố trả lời client thông qua relay.

    Nhưng có tới được không?
    Bước 3: Kiểm tra Route Return Path

    show ip route 192.168.12.0

    Kết quả:

    % Network not in table

    Đây chính là lỗi.

    Server không biết route quay về mạng client.

    Một ví dụ kinh điển về asymmetric reachability.

    Nhiều người nghĩ ip helper-address là đủ.

    Sai.

    Relay chỉ forward broadcast Discover.

    Server vẫn cần route unicast quay lại subnet client.
    Bước 4: Chứng minh bằng debug IP packet

    debug ip packet

    Xuất hiện:

    192.168.12.2 unreachable
    unroutable

    Không thể rõ hơn.
    Bước 5: Sửa bằng static route

    ip route 192.168.12.0 255.255.255.0 192.168.23.2

    Ngay sau đó:

    DHCPDISCOVER
    DHCPOFFER
    DHCPREQUEST
    DHCPACK

    Hoàn tất 4 bước DORA:
    1. Discover
    2. Offer
    3. Request
    4. Acknowledge

    Client lấy IP thành công.
    Tư duy quan trọng về DHCP Relay


    Nhiều người nhớ cấu hình:

    ip helper-address

    Nhưng quên điều kiện sống còn:

    DHCP server phải có route tới subnet client.

    Không có return path:
    • Offer có thể gửi ra
    • ACK không bao giờ quay về đúng nơi
    • Client sẽ timeout

    Đây là lỗi cực phổ biến ngoài production.
    Checklist Troubleshooting DHCP Thực Chiến


    Khi DHCP lỗi, đi theo trình tự này: Nếu là DHCP Server issue:


    Kiểm tra:

    show ip interface brief
    show ip dhcp pool
    show ip dhcp binding
    show ip dhcp server statistics
    show ip sockets

    Đừng quên:

    service dhcp
    Nếu là DHCP Relay issue:


    Kiểm tra:

    show run interface
    show ip interface
    show ip dhcp server statistics
    show ip route

    Debug:

    debug ip dhcp server packet
    debug ip packet

    Xác minh:
    • ip helper-address đúng chưa
    • Return route có chưa
    • ACL có chặn UDP 67/68 không
    • Firewall có drop broadcast relay không

    Bonus thực chiến (CCNP/CCIE)


    Trong enterprise thật, DHCP failure còn có thể do:
    • DHCP Snooping trust sai
    • Option 82 relay insertion lỗi
    • HSRP virtual IP dùng sai làm helper trỏ sai next-hop
    • VRF-aware DHCP relay cấu hình thiếu ip helper-address vrf
    • ACL chặn BOOTP (UDP 67/68)
    • CoPP chặn DHCP broadcast rate cao

    Đây là những lỗi rất hay xuất hiện trong đề lab CCIE và production.
    Lesson Learned


    Hai bài học cực đắt giá:

    Nếu mọi thứ có vẻ đúng, hãy kiểm tra DHCP service có thực sự đang listen trên UDP 67 không.



    Nếu dùng ip helper-address, DHCP server phải biết đường quay về subnet client.

    Chỉ cần nhớ hai điều này, bạn tránh được rất nhiều giờ troubleshoot vô ích.
    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X