JSI Tip 8517. When you use the FQDN to reference a remote computer from a Windows Server 2003 domain controller, you receive 'System error 67 has occurred' or 'No network provider accepted the given network path'?

If you issue a net use to a shared resource of a remote computer, using it's FQDN (Fully Qualified Domain Name), you may receive:

System error 67 has occurred
The network name cannot be found

If you use the Open box of the Start / Run dialog, to access a remote shared resource using it's FQDN, you receive:

No network provider accepted the given network path

NOTE: You may be able to ping the remote computer by using it's FQDN.

This behavior is likely the result of contention for the NetBT user mode DNS resolver, which can only process request serially, causing a time out in about 8 seconds.

To resolve this problem, I have scripted W2K3LmhostsTimeout.bat.

The syntax for using W2K3LmhostsTimeout.bat is:

W2K3LmhostsTimeout Seconds \[W2K3DC1 W2K3DC2 ... W2K3DCn\]

where Seconds is the number of seconds before NetBT times out and each optional W2KDCx is the NetBIOS computer name of a Windows Server 2003 domain controller. If no W2KDCx parameters are specified, the local computer is updated.

NOTE: W2K3LmhostsTimeout.bat uses REG.EXE, which is built into Windows Server 2003 and Windows XP.

NOTE: W2K3LmhostsTimeout.bat configures the LmhostsTimeout Value Name, a REG_DWORD data type, at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters. This data value is expressed in milliseconds, so the script converts the Seconds to milliseconds. The timer has a granularity of Seconds, so the actual time out could be 2 times Seconds.

W2K3LmhostsTimeout.bat contains:

@echo off
setlocal
if \{%1\}

\{\} goto Syntax set /a seconds=10000%1%%10000 set /a seconds=%seconds% * 1000 set /a cnt=0 :DCloop if \{%2\}

\{\} goto doit set /a cnt=%cnt% + 1 set work=%2 shift set work=%work:\=% set work=%work:"=% call set DC%cnt%=\\%work% goto DCloop :doit set /a num=1 if %cnt% EQU 0 set key=HKLM\SYSTEM\CurrentControlSet\Services\NetBT\Parameters&goto doitloop1 :doitloop if %num% GTR %cnt% goto finish call set key=%%DC%num%%%\HKLM\SYSTEM\CurrentControlSet\Services\NetBT\Parameters set /a num=%num% + 1 :doitloop1 @echo reg add %key% /v LmhostsTimeout /T REG_DWORD /d %seconds% /F reg add %key% /v LmhostsTimeout /T REG_DWORD /d %seconds% /F @echo. goto doitloop :Finish endlocal goto :EOF :Syntax @echo Syntax: W2K3LmhostsTimeout Seconds \[W2K3DC1 W2K3DC2 ... W2K3DCn\] endlocal
NOTE: The LmhostsTimeout setting will NOT become effective until the server is restarted.



Hide comments

Comments

  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
Publish