1. بررسی اتصال به دامین
در کلاینت، داخل Command Prompt این دستور رو بزن:
echo %userdnsdomain%
- اگر خروجی نام دامنه شما بود (مثلاً network.local)، یعنی کاربر به دامین لاگین کرده.
- اگر چیزی مثل اسم کامپیوتر خودش رو داد، یعنی وارد دامین نشده.
2. بررسی اتصال به کنترلر دامین (Domain Controller)
nltest /dsgetdc:domain.local
جایگزین domain.local رو با نام دامین واقعی خودت بزن.
این دستور نشون میده:
- کلاینت دامین کنترلر رو میشناسه یا نه
- IP و نام کنترلر
- وضعیت Flags (مثلاً GC, DS, PDC)
3. تست ارتباط با DNS دامین
nslookup domain.local
اگر DNS درست پیکربندی شده باشه، باید IP دامین کنترلر رو نشون بده.
(بهجای domain.local نام واقعی دامنهت رو بذار)
همچنین برای بررسی SRV رکوردها:
nslookup
> set type=SRV
> _ldap._tcp.dc._msdcs.domain.local
4. بررسی اینکه کلاینت واقعاً join شده به دامین یا نه
در Command Prompt:
systeminfo | findstr /i “Domain”
اگر نوشته بود:
Domain: network.local
Logon Server: \\DC1
یعنی عضو دامین هست. اگر نوشته بود:
Domain: WORKGROUP
یعنی join نشده.
5. بررسی وضعیت trust و ارتباط با دامین با PowerShell
Test-ComputerSecureChannel –Verbose
اگر خروجی True بود، ارتباط امن با دامین برقرار است.
اگر False بود، ممکنه کلاینت join باشه ولی trust شکسته شده باشه (در این حالت باید leave و دوباره join کنی).
* دقت کنید که این دستور باید روی یک سیستم ویندوزی که PowerShell فعال داره و عضو دامین هست اجرا بشه.
اگر اروری دریافت میکنی:
1) ارور: The term ‘Test-ComputerSecureChannel’ is not recognized
علت: این دستور در PowerShell نسخههای قدیمی (قبل از نسخه 3) یا در برخی محیطهای بسیار محدود (مانند WinPE) وجود نداره.
راهحل: بررسی کن که نسخه PowerShell شما حداقل 3 یا بالاتر باشه:
$PSVersionTable.PSVersion
اگر کمتر از 3 بود، باید PowerShell رو ارتقا بدی.
2) ارور: Cannot find a suitable domain controller
علت: سیستم DNS نادرستی داره یا به دامین کنترلر دسترسی نداره.
راهحل: چک کن DNS سیستم روی IP دامین کنترلر تنظیم شده باشه.
دستور زیر رو بزن:
nltest /dsgetdc:domain.local
(بهجای domain.local نام واقعی دامنهت رو بذار)
3) ارور: Access is denied
علت: دستور Repair زده شده ولی PowerShell با دسترسی کافی اجرا نشده.
راهحل: حتماً PowerShell رو با Run as Administrator اجرا کن.
4) ارور مرتبط با Credential
اگر این دستور رو اینطور زدی:
Test-ComputerSecureChannel -Repair -Credential (Get-Credential)
و خطا گرفتی، ممکنه اطلاعات اکانت دامین بهدرستی وارد نشده باشه.
راهحل جایگزین برای تست ساده:
اگر فقط میخوای بدون Repair ببینی تراست سالمه یا نه:
Test-ComputerSecureChannel
بدون سوییچ -Verbose هم جواب میده (True یا False)
دستور معادل در CMD برای تست Secure Channel:
nltest /sc_verify:yourdomain.local
جایگزین yourdomain.local رو با نام واقعی دامنهت (مثل yourariyatejarat.local) وارد کن.
خروجیها و معنی اونها:
اگر ارتباط سالم باشه:
Trusted DC name \\DC1
Trust is OK
اگر تراست خراب باشه:
The secure channel from LOCALCOMPUTER to yourariyatejarat.local is broken.
The command failed. (The trust relationship failed.)
6. دستور ping برای تست ساده اتصال به دامین کنترلر
ping dc01.domain.local
یا
ping فقطنامدامین.local
باید پاسخ بده و IP کنترلر رو نشون بده.
اگر ارتباط برقرار نبود…
- DNS کلاینت باید حتماً روی IP دامین کنترلر تنظیم شده باشه.
- ساعت سیستم کلاینت با سرور نباید اختلاف زیاد داشته باشه (بیشتر از 5 دقیقه ممکنه خطا بده).
- پورتهای مربوط به LDAP و Kerberos باید باز باشن.
اگر سیستمی به دامنه join شده باشه ولی trust شکسته باشه، چه باید کرد؟!
روش اول (ساده و تمیز): Leave و دوباره Join کردن
این روش رایجه ولی شامل خروج از دامنه و پیوستن دوبارهست:
لاگین کن با یک اکانت لوکال (نه دامین).
مسیر زیر برو:
Control Panel > System > Change settings > Computer Name > Change
گزینه Workgroup رو انتخاب کن و اسم ورکگروپ رو بده (مثلاً WORKGROUP) و OK کن.
ریستارت کن.
بعد از بوت، دوباره وارد پنجره همون تنظیمات شو و این بار Join Domain رو انتخاب کن.
دامنه رو وارد کن (مثلاً network.local) و یوزری با دسترسی join به دامنه وارد کن.
دوباره ریستارت کن.
روش دوم (تعمیر تراست بدون Leave/Join) با PowerShell
اگر به سیستم دسترسی لوکال ادمین داری و کامپیوتر هنوز اطلاعات دامین رو داره، میتونی با دستور زیر تراست رو دوباره برقرار کنی بدون اینکه leave بشی:
در PowerShell با دسترسی ادمین:
Test-ComputerSecureChannel -Repair -Credential (Get-Credential)
بعد از زدن دستور، ازت نام کاربری و رمز ادمین دامین میخواد (مثل DOMAIN\Administrator).
اگر خروجی True باشه یعنی تراست دوباره برقرار شده
نکته: برای اینکه این روش دوم جواب بده، باید کلاینت هنوز دامین رو بشناسه (حتی اگر تراست شکسته).
اگر تراست به خاطر تغییر رمز ماشین اکانت در AD شکسته باشه، این روش عالیه.
DNS سیستم باید به سمت کنترلر دامین باش
اگر خروجی دستور Test-ComputerSecureChannel -Repair -Credential (Get-Credential) برابر با **False** شد، یعنی تلاش برای تعمیر تراست ناموفق بوده و سیستم نتونسته دوباره به دامین اعتماد کنه. دلایل رایج و راهحل مرحلهبهمرحله:
دلایل احتمالی شکست Repair
یوزر یا پسورد وارد شده اشتباه بوده یا دسترسی لازم رو نداشته.
DNS سیستم درست تنظیم نشده (باید IP دامین کنترلر باشه).
کامپیوتر آبجکت در AD پاک یا غیرفعال شده باشه.
فایروال یا آنتیویروس ارتباط با DC رو قطع کرده باشه.
ساعت سیستم با DC اختلاف زیاد داشته باشه (بیشتر از ۵ دقیقه = شکست احراز هویت Kerberos).
راهحل مرحلهای (و ایمن) برای حل مشکل تراست
1. بررسی اولیه
در سیستم کلاینت:
nslookup domain.local
ping domain.local
مطمئن شو DNS بهدرستی به DC اشاره میکنه و قابل Resolve و Ping هست.
2. بررسی وجود و وضعیت Computer Object در AD
روی دامین کنترلر:
به Active Directory Users and Computers برو.
در OU مربوطه دنبال Computer Object این سیستم بگرد.
اگر نیست، باید دوباره join بشه.
اگر هست ولی disable شده، enable کن.
3. اگر هنوز مشکل هست، از این روش دستی استفاده کن:
روش: Leave > Join بدون تغییر نام یا تنظیمات دیگر
در کلاینت:
با یوزر لوکال وارد شو.
به تنظیمات سیستم برو (Win+R > sysdm.cpl).
دکمه Change رو بزن.
از دامنه خارج شو و وارد یک Workgroup بشو (مثلاً WORKGROUP).
سیستم رو ریستارت کن.
بعد از بالا اومدن، دوباره به همون مسیر برو و این بار Join to Domain رو بزن.
دامنه رو وارد کن (مثلاً network).
یوزر دامین با دسترسی join به دامنه وارد کن.
دوباره ریستارت کن.
نکته مهم برای اینکه دوباره Trust خراب نشه:
سیستم حتماً باید DNS درست (یعنی IP دامین کنترلر) داشته باشه.
از DHCP Reservation استفاده کن تا همیشه IP درست بگیره.
ساعت و تاریخ رو قبل از join با دستور زیر از DC بگیر:
w32tm /resync
مرحله نهایی: Join کردن کلاینت به دامین با استفاده از آبجکت ایجاد شده
۱. در کلاینت (کامپیوتری که مشکل داره):
وارد ویندوز بشو با اکانت لوکال (نه دامین).
کلیدهای Win + R رو بزن و تایپ کن:
sysdm.cpl
در تب Computer Name، دکمهی Change… رو بزن.
انتخاب کن:
Member of > Domain و نام دامنهات رو وارد کن (مثلاً network.local)
وقتی ازت یوزرنیم/پسورد خواست، اطلاعات یک اکانت ادمین دامین وارد کن.
چون شما قبلاً در AD آبجکت رو ساختی، اگر نام کامپیوتر همخوانی داشته باشه، Join با استفاده از اون Object انجام میشه و تراست بازسازی میشه.
بعد از پیغام موفقیت، سیستم رو ریستارت کن.
تست بعد از Join:
بعد از ریستارت، لاگین کن با یک یوزر دامین (مثلاً network\user1) و سپس:
Test-ComputerSecureChannel
باید خروجی True باشه.
نکته مهم:
اگر هنگام Join کردن خطا گرفتید (مثلاً “Account already exists”), ممکنه:
اسم کامپیوتر کلاینت با اسم آبجکتی که در AD ساختی متفاوت باشه.
دسترسی یوزری که برای Join استفاده کردی کافی نباشه.
حالا سیستم به دامین جوین شده
اما تراست (اعتماد) بین کلاینت و دامین شکسته شده بود
و شما آبجکت کامپیوتر رو در Active Directory دستی ایجاد کردید
اما چون کامپیوتر همچنان عضو دامین هست، فقط ایجاد دستی آبجکت در AD کافی نیست برای تعمیر trust. برای بازسازی کامل Secure Channel، باید ارتباط رمزگذاریشده بین کامپیوتر و دامین دوباره برقرار بشه.
حالا چطور تراست رو به درستی برگردونیم؟
روش ۱ (ترجیحی): تعمیر تراست با PowerShell با استفاده از آبجکت موجود
حالا که آبجکت در AD موجوده، این دستور رو در PowerShell با دسترسی ادمین بزن:
Test-ComputerSecureChannel -Repair -Credential (Get-Credential)
در پنجره باز شده، اطلاعات یک ادمین دامین رو وارد کن (مثلاً network\administrator)
اگر خروجی True باشه، یعنی تراست تعمیر شد.
اگر باز هم False شد، ممکنه مشکلات زیر باشه:
نام کامپیوتر با object در AD تطابق نداره.
ساعت سیستم با DC اختلاف داره.
شبکه درست route نمیشه یا DNS اشتباهه.
روش ۲: ریجوین کردن به دامین بدون نیاز به Leave کامل
اگر روش بالا جواب نداد:
وارد سیستم با اکانت لوکال شو.
در sysdm.cpl، دکمه Change رو بزن.
کامپیوتر رو به همون دامین قبلی دوباره join کن (یعنی join کردن دوباره بدون leave).
وقتی پرسید که “account already exists”، اگه دسترسی داشته باشی، خودش از object موجود استفاده میکنه.
بعد از پیغام موفقیت، ریستارت کن.
روش ۳: استفاده از netdom (اختیاری برای کسانی که CLI دوست دارن)
netdom resetpwd /server:dc01. network.local /userd: network\administrator /passwordd:*
این دستور رمز secure channel رو با DC مجدداً تنظیم میکنه. بعد از اجرا، Test-ComputerSecureChannel رو بزن و چک کن.