جواب کوتاه: اگر Shared Folder در Windows Server باز نمیشود، عیبیابی را از «دسترسی شبکه» جدا از «مجوز دسترسی» انجام دهید. ابتدا از Client با Test-NetConnection SERVER -Port 445 مطمئن شوید TCP/445 قابل دسترس است؛ سپس Share، سرویس Server، Firewall، Credential، نسخه SMB و در نهایت Event Logهای SMBClient/SMBServer را بررسی کنید. فعالکردن SMB1 یا خاموشکردن کامل Firewall راهحل استاندارد نیست.
سناریو: Shared Folder باز نمیشود؛ مشکل شبکه است یا Permission؟
خطاهایی مثل Network path was not found، Access is denied، درخواست مکرر Username/Password یا timeout همگی ممکن است هنگام باز کردن مسیرهایی مثل \\FILESERVER\Data دیده شوند، اما علت یکسانی ندارند. طبق راهنمای Microsoft، SMB روی TCP/IP کار میکند؛ بنابراین خرابی SMB میتواند در اصل یک مشکل TCP/IP باشد.
در این راهنما، سیستمی که Share را میزبانی میکند SMB Server و سیستمی که به Share وصل میشود SMB Client است.
پیشنیازهای عیبیابی
- دسترسی Administrator به Windows Server و ترجیحاً Client
- نام یا IP سرور فایل و نام Share
- PowerShell با Run as Administrator برای برخی دستورات
- یک حساب کاربری که باید واقعاً به Share دسترسی داشته باشد
مرحله ۱: اول نام سرور و مسیر UNC را تست کنید
روی Client:
Resolve-DnsName FILESERVER
ping FILESERVERPing معیار قطعی برای سلامت SMB نیست، چون ICMP ممکن است در Firewall بسته باشد. مهمتر از Ping این است که نام سرور به IP درست Resolve شود و TCP/445 قابل دسترس باشد.
اگر نام سرور Resolve نمیشود، قبل از SMB مشکل DNS را رفع کنید. راهنمای رفع مشکل DNS در Windows Server مسیر تشخیص Server، Forwarder و Client را مرحلهبهمرحله توضیح میدهد.
مرحله ۲: Port 445 را از Client تست کنید
Test-NetConnection FILESERVER -Port 445خروجی مورد انتظار:
TcpTestSucceeded : Trueاگر False است، هنوز سراغ NTFS Permission یا Credential نروید؛ ارتباط SMB در لایه شبکه برقرار نشده است. مسیر بین Client و Server، Firewall و وضعیت سرویسها را بررسی کنید.
مرحله ۳: روی Server مطمئن شوید Share واقعاً وجود دارد
روی File Server:
Get-SmbShareبرای Share مشخص:
Get-SmbShare -Name "Data"اگر Share وجود ندارد، مشکل «اتصال به Share» نیست؛ ابتدا Share صحیح را ایجاد یا نام مسیر را اصلاح کنید. برای دیدن دسترسی Share:
Get-SmbShareAccess -Name "Data"مرحله ۴: سرویس Server را بررسی کنید
Get-Service LanmanServer
Get-Service LanmanWorkstationروی SMB Server، سرویس LanmanServer باید در وضعیت مناسب باشد. روی Client نیز Workstation برای دسترسی SMB اهمیت دارد. قبل از Restart کورکورانه، وضعیت و Event Log را ثبت کنید.
مرحله ۵: Windows Firewall را درست بررسی کنید؛ کامل خاموشش نکنید
ابتدا Profile شبکه را ببینید:
Get-NetConnectionProfileMicrosoft اشاره میکند که روی Profileهای نامناسب، مخصوصاً Public، قوانین File and Printer Sharing ممکن است SMB را مسدود کنند. قوانین مرتبط را بررسی کنید:
Get-NetFirewallRule -DisplayGroup "File and Printer Sharing" |
Select-Object DisplayName, Enabled, Profile, Direction, Actionبرای تست، بهجای خاموشکردن کامل Firewall فقط Rule موردنیاز را برای Profile و Scope درست فعال کنید. بازکردن TCP/445 به اینترنت عمومی خطرناک است؛ Microsoft توصیه میکند SMB/445 در مرز اینترنت مسدود باشد.
مرحله ۶: تفاوت خطای شبکه و Access Denied را مشخص کنید
اگر Test-NetConnection موفق است ولی هنگام باز کردن Share خطای Access Denied میگیرید، تمرکز را روی Authentication و Permission ببرید.
Sessionهای SMB موجود روی Client:
Get-SmbConnectionCredentialهای ذخیرهشده را هم بررسی کنید:
cmdkey /listیک اتصال قدیمی با Username اشتباه میتواند باعث شود Windows همان Credential را دوباره استفاده کند. برای قطع اتصالهای Map شده ابتدا وضعیت را ببینید:
net useو فقط اتصال موردنظر را حذف کنید:
net use \\FILESERVER\Data /deleteسپس با Credential درست دوباره تست کنید.
مرحله ۷: Share Permission و NTFS Permission را هر دو بررسی کنید
دسترسی مؤثر فقط به Share Permission محدود نیست. کاربر باید در NTFS نیز Permission مناسب داشته باشد. Share Access:
Get-SmbShareAccess -Name "Data"NTFS ACL مسیر واقعی:
Get-Acl "D:\Shares\Data" | Format-Listاز دادن Everyone: Full Control فقط برای «حل سریع» خودداری کنید. حساب یا Group لازم را با حداقل سطح دسترسی موردنیاز تعریف کنید.
مرحله ۸: نسخه SMB را بررسی کنید؛ SMB1 را بیدلیل فعال نکنید
Microsoft صراحتاً اشاره میکند SMB1 روی نسخههای جدید Windows بهصورت پیشفرض نصب نیست و توصیه میکند SMB1 غیرفعال بماند. وضعیت Server را ببینید:
Get-SmbServerConfiguration |
Select-Object EnableSMB1Protocol, EnableSMB2Protocolو Client:
Get-SmbClientConfigurationاگر یک NAS یا دستگاه بسیار قدیمی فقط SMB1 میفهمد، راهحل امنتر ارتقای آن دستگاه است؛ فعالکردن SMB1 روی سرور جدید باید آخرین گزینه و با ارزیابی ریسک باشد.
مرحله ۹: Event Logهای SMB را بخوانید
برای خطاهای Client:
Get-WinEvent -LogName "Microsoft-Windows-SMBClient/Connectivity" -MaxEvents 30 |
Format-Table TimeCreated, Id, LevelDisplayName, Message -Wrapبرای Server میتوانید لاگهای SMBServer را در Event Viewer زیر مسیر Applications and Services Logs > Microsoft > Windows > SMBServer بررسی کنید. زمان وقوع خطا را با Eventها تطبیق دهید.
مرحله ۱۰: اگر Port 445 Listening است ولی Client وصل نمیشود
Listening بودن Port روی Server بهتنهایی ثابت نمیکند مسیر Client تا Server سالم است. روی Server:
Get-NetTCPConnection -LocalPort 445 -State Listenو روی Client دوباره:
Test-NetConnection FILESERVER -Port 445 -InformationLevel Detailedاگر Server گوش میدهد ولی تست Client شکست میخورد، Firewall میانی، ACL شبکه، VLAN/Routing یا Firewall خود سیستمها را بررسی کنید. Microsoft برای موارد پیچیده توصیه میکند Trace از هر دو سمت Client و Server جمعآوری شود.
Trace شبکه برای مشکلهای سخت SMB
روی Client و Server یک پوشه Temp بسازید و Trace را شروع کنید:
New-Item -ItemType Directory -Path C:\Temp -Force
netsh trace start capture=yes report=yes scenario=NetConnection level=5 maxsize=1024 tracefile=C:\Temp\netTrace.etlمشکل را یک بار بازتولید کنید و سپس:
netsh trace stopاین کار برای خطاهای intermittent، TCP handshake، reset و negotiate مفید است. فایل Trace ممکن است اطلاعات شبکه داشته باشد؛ آن را عمومی منتشر نکنید.
Verify نهایی بعد از رفع مشکل
پس از اصلاح، این زنجیره را تست کنید:
Resolve-DnsName FILESERVER
Test-NetConnection FILESERVER -Port 445
Get-SmbConnection
dir \\FILESERVER\Dataسپس با همان حساب واقعی کاربر یک فایل آزمایشی بسازید/بخوانید فقط اگر Permission او باید Write داشته باشد. اگر فقط Read لازم است، Write Permission اضافه نکنید.
Rollback و Recovery
اگر برای عیبیابی Firewall Rule، Permission یا SMB Configuration را تغییر دادید، تغییرات را ثبت کنید. پس از تست، Ruleهای آزمایشی گسترده را حذف و Scope را محدود کنید. Permission موقت را برگردانید و SMB1 را صرفاً بهدلیل یک تست فعال باقی نگذارید.
برای مشکلاتی که Client اصلاً IP مناسب نمیگیرد، قبل از SMB سراغ لایه DHCP بروید: رفع مشکل DHCP در Windows Server. برای اجرای File Server یا سرویسهای Windows روی زیرساخت مستقل نیز میتوانید پلنهای سرور مجازی وانسرور را بررسی کنید.
جمعبندی مسیر عیبیابی
ترتیب درست این است: DNS → TCP/445 → وجود Share و سرویس → Firewall → Credential → Share/NTFS Permission → SMB Version → Event Log → Trace. این ترتیب جلوی تغییرات تصادفی مثل خاموشکردن Firewall، فعالکردن SMB1 یا دادن Full Control عمومی را میگیرد.
منابع رسمی
- Microsoft Learn — Guidance for troubleshooting SMB
- Microsoft Learn — Advanced Troubleshooting SMB
- Microsoft Learn — Secure SMB Traffic