ESC را فشار دهید تا بسته شود

چرا Shared Folder در Windows Server باز نمی‌شود؟ عیب‌یابی SMB و Port 445

فهرست

جواب کوتاه: اگر 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 FILESERVER

Ping معیار قطعی برای سلامت 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-NetConnectionProfile

Microsoft اشاره می‌کند که روی 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-SmbConnection

Credentialهای ذخیره‌شده را هم بررسی کنید:

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 عمومی را می‌گیرد.

منابع رسمی

Rate this post
اشتراک گذاری نوشته در:

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *