اگر Client در شبکه Windows Server از DHCP آیپی نمیگیرد و آدرس 169.254.x.x (APIPA) میبیند، از تغییرات تصادفی روی Scope یا Firewall شروع نکنید. مسیر درست این است که اول سرویس DHCP Server، سپس Authorization، Scope و Lease آزاد، Binding کارت شبکه و در شبکههای چند VLAN تنظیم DHCP Relay/IP Helper را بررسی کنید. در سمت Client هم سرویس DHCP، تنظیم NIC و لاگها را Verify کنید.
خلاصه سریع: وقتی DHCP ویندوز سرور IP نمیدهد چه چیزهایی را چک کنیم؟
- سرویس
DHCPServerباید Running باشد. - اگر Server عضو Active Directory Domain است، Authorization را بررسی کنید.
- Scope مربوط به Subnet کلاینت باید Active و دارای IP آزاد باشد.
BAD_ADDRESSو تداخل IPهای Static با Pool را بررسی کنید.- DHCP Server باید روی NIC/IP درست Binding داشته باشد.
- برای Client در Subnet/VLAN دیگر، DHCP Relay/IP Helper باید به IP سرور اشاره کند.
- روی Client سرویس DHCP Client و
ipconfig /renewرا تست کنید. - در پایان Event Logهای Server/Client و فرآیند DORA را بررسی کنید.
سناریوی واقعی: Client فقط 169.254.x.x میگیرد
فرض کنید DHCP Server با نام DHCP01 و IP فرضی 10.10.10.10 دارید و Scope کاربران 10.20.30.0/24 است. Client روی VLAN کاربران بعد از Boot آدرس APIPA گرفته و Gateway ندارد. APIPA فقط نشان میدهد Lease معتبر DHCP دریافت نشده؛ علت میتواند Server، Scope، Relay، Firewall یا مسیر Broadcast باشد.
پیشنیاز و Backup قبل از تغییر
- PowerShell را با دسترسی Administrator باز کنید.
- نام DHCP Server و Scope ID واقعی را مشخص کنید.
- قبل از تغییر Scope، Option، Binding یا Failover یک Export بگیرید.
New-Item -ItemType Directory -Path C:/Backup-DHCP -Force
Export-DhcpServer -ComputerName "DHCP01" -File "C:/Backup-DHCP/dhcp-before-change.xml" -Leases -Force
مرحله ۱: سرویس DHCP Server را بررسی کنید
Get-Service -Name DHCPServer
خروجی سالم باید Running باشد. اگر Stopped است، ابتدا Event Log را ببینید و سپس در صورت مناسب بودن شرایط:
Start-Service -Name DHCPServer
Get-Service -Name DHCPServer
اگر سرویس دوباره متوقف میشود، Restartهای متوالی علت اصلی را پنهان میکنند.
مرحله ۲: Authorization در Active Directory را Verify کنید
در محیط Domain، DHCP Server باید در Active Directory مجاز باشد:
Get-DhcpServerInDC
اگر Server در سناریوی Domain مجاز نیست، علت را قبل از اضافهکردن بررسی کنید. Event ID 1046 یکی از نشانههای رایج Authorization failure است. در Workgroup نبودن Server در این خروجی بهتنهایی خطا محسوب نمیشود.
مرحله ۳: Scope درست، Active و دارای Lease آزاد است؟
Get-DhcpServerv4Scope -ComputerName "DHCP01"
Get-DhcpServerv4ScopeStatistics -ComputerName "DHCP01" -ScopeId 10.20.30.0
Scope باید متعلق به Subnet واقعی Client، Active و دارای IP آزاد باشد. اگر Pool پر است، قبل از بزرگکردن Range، Leaseهای قدیمی، تعداد Deviceها، مدت Lease و طراحی Subnet را بررسی کنید.
مرحله ۴: Leaseها، BAD_ADDRESS و تداخل IP را پیدا کنید
Get-DhcpServerv4Lease -ComputerName "DHCP01" -ScopeId 10.20.30.0 | Select-Object IPAddress,HostName,ClientId,AddressState
تعداد زیاد BAD_ADDRESS میتواند نشانه Duplicate IP باشد؛ مثلاً Printer، Hypervisor یا Device دیگری با IP ثابت داخل Pool DHCP. IPهای Static زیرساخت را از Pool خارج یا Exclude کنید و قبل از حذف Leaseها مالک IP Conflict را پیدا کنید.
مرحله ۵: Binding کارت شبکه DHCP Server را بررسی کنید
Get-DhcpServerv4Binding -ComputerName "DHCP01"
در Server چند NIC یا چند VLAN، Binding باید با Interface مورد انتظار هماهنگ باشد. قبل از تغییر Binding نقش هر NIC و مسیرها را مستند کنید.
مرحله ۶: Client در VLAN دیگری است؟ DHCP Relay/IP Helper را چک کنید
DHCP Discover در شروع Broadcast است و Router آن را بین Subnetها عبور نمیدهد. اگر Client و Server در یک Subnet نیستند، روی Router یا L3 Switch باید Relay/IP Helper درخواست را به IP DHCP Server بفرستد.
- Client subnet:
10.20.30.0/24 - DHCP Server:
10.10.10.10 - Gateway کاربران:
10.20.30.1
اگر Relay به IP قدیمی یا اشتباه اشاره کند، Server Discover آن VLAN را نمیبیند.
مرحله ۷: Firewall و UDP 67/68 را درست تفسیر کنید
DHCP از UDP استفاده میکند: Server روی UDP 67 و Client روی UDP 68. خاموشکردن کامل Windows Firewall برای تست روش مناسبی نیست. Ruleها و Policy واقعی را بررسی کنید.
روی Client:
Get-Service -Name Dhcp
Dhcp سرویس Client است و با DHCPServer روی Server فرق دارد.
مرحله ۸: سمت Client را با ipconfig عیبیابی کنید
ipconfig /all
ipconfig /release
ipconfig /renew
ipconfig /all
به DHCP Enabled، IPv4، Gateway، DHCP Server، DNS Server و زمان Lease دقت کنید. اگر دوباره APIPA گرفتید، مشکل هنوز در مسیر DHCP پابرجاست.
مرحله ۹: Event Log سمت DHCP Server را بخوانید
در Event Viewer به Applications and Services Logs → Microsoft → Windows → DHCP-Server بروید. برای پیدا کردن نام دقیق Logهای موجود:
Get-WinEvent -ListLog *DHCP* | Select-Object LogName,IsEnabled,RecordCount
مرحله ۱۰: Event Log سمت DHCP Client را بررسی کنید
Microsoft بررسی کانالهای DHCP Client Events را توصیه میکند. ابتدا نام واقعی Log را روی همان سیستم پیدا کنید:
Get-WinEvent -ListLog *DHCP* | Select-Object LogName,IsEnabled,RecordCount
Get-WinEvent -LogName "LOG_NAME_FROM_PREVIOUS_COMMAND" -MaxEvents 50
مرحله ۱۱: مشخص کنید DORA کجا قطع میشود
- Discover: Client دنبال DHCP Server میگردد.
- Offer: Server یک IP پیشنهاد میدهد.
- Request: Client همان Lease را درخواست میکند.
- Acknowledge: Server Lease را تأیید میکند.
با Packet Capture مشخص کنید Discover از Client خارج و به Server میرسد، Offer برمیگردد و Request/ACK کامل میشوند. اگر Discover روی VLAN Client دیده میشود اما روی Server نمیرسد، تمرکز را روی Relay، VLAN routing یا ACL بگذارید. اگر Server Discover را میبیند ولی Offer نمیدهد، Scope، Authorization، Policy و Lease availability مهمترند.
اگر فقط یک VLAN مشکل دارد چه کنیم؟
- Scope همان VLAN وجود دارد و Active است؟
- Relay روی SVI/Interface درست تنظیم شده؟
- Route برگشت Server به Subnet Client موجود است؟
- ACL/Firewall مسیر DHCP را مسدود نکرده؟
- VLAN tagging و access/trunk درست است؟
اگر DHCP IP میدهد ولی DNS یا اینترنت کار نمیکند
این سناریو متفاوت است. اگر Lease معتبر دارید اما Name Resolution خراب است، راهنمای رفع مشکل DNS در Windows Server را دنبال کنید. برای درک چرخه Discover/Offer/Request/Ack هم مقاله نحوه کار پروسه DHCP در شبکه مکمل خوبی است.
Verify نهایی بعد از اصلاح
Get-Service DHCPServer
Get-DhcpServerInDC
Get-DhcpServerv4Scope -ComputerName "DHCP01"
Get-DhcpServerv4ScopeStatistics -ComputerName "DHCP01" -ScopeId 10.20.30.0
Get-DhcpServerv4Binding -ComputerName "DHCP01"
ipconfig /release
ipconfig /renew
ipconfig /all
Client نهایی باید IP داخل Scope درست، Subnet Mask، Gateway، DHCP Server، DNS Server و Lease معتبر داشته باشد.
اگر برای Roleهای شبکه Windows Server به دسترسی مدیریتی کامل نیاز دارید، سرور مجازی وانسرور برای سناریوهای مدیریتی و آزمایشگاهی مرتبط است.
Rollback و Recovery
- Scope Range یا Exclusion را به مقدار مستند قبلی برگردانید.
- Binding قبلی NICها را در صورت نیاز Restore کنید.
- Relay/IP Helper را فقط به مقصد قبلیِ مستند و سالم برگردانید.
- Export پیش از تغییر را برای Recovery نگه دارید و Restore کامل را در Maintenance Window انجام دهید.
خطاهای رایج
- Restart کردن سرویس بدون خواندن Log.
- بزرگکردن سریع Scope و ایجاد Conflict با IPهای Static.
- نادیدهگرفتن Relay وقتی فقط VLANهای Remote مشکل دارند.
- خاموشکردن کامل Firewall در Production.
- اشتباه گرفتن مشکل DNS با DHCP.
- فرض اینکه APIPA حتماً یعنی DHCP Server خاموش است.
نکات امنیتی
- Authorization در Domain را جدی بگیرید تا Rogue DHCP کنترل شود.
- برای Static Deviceها Exclusion یا Reservation مشخص داشته باشید.
- برای تغییر Scope، Relay یا Firewall، Backup و Rollback Plan داشته باشید.
- در Switchهای سازگار، DHCP Snooping را متناسب با طراحی شبکه بررسی کنید.
جمعبندی
برای رفع مشکل DHCP در Windows Server زنجیره را مرحلهبهمرحله Verify کنید: سرویس DHCPServer، Authorization، Scope و Lease آزاد، BAD_ADDRESS، Binding، Relay/IP Helper، DHCP Client و Event Logها. پیدا کردن مرحلهای از DORA که قطع میشود، دامنه عیبیابی را سریع کوچک میکند و جلوی تغییرات تصادفی و پرریسک را میگیرد.
منابع فنی
- Microsoft Learn: Guidance for troubleshooting DHCP
- Microsoft Learn: Troubleshoot problems on the DHCP server
- Microsoft Learn: Troubleshoot problems on the DHCP client
- Microsoft Learn: DHCP server events