Thursday, February 3, 2011

Why do I occasionally lose the ability to connect to a file share from a multihomed web server?

I have an ASP.NET web application that transfers requested files from a (LAN) network share to the (Internet) end user. Most of the time it works fine, but occasionally the application is not able to retrieve from the share by name (example, requesting something like \\fileserver\share\filename.zip will fail)

When we see this occur, manually attempting to retrieve the file from the web server through Windows Explorer will also fail with a network path not found error. Attempting to retrieve the file by substituting the IP address for the fileserver name works perfectly well (\\10.0.0.40\share\filename.zip)

That sounds like a name resolution problem of some sort, but I can ping/traceroute etc the fileserver name from the web server's command line during these incidents and it resolves correctly there.

Currently, only a reboot of the server is able to correct the immediate symptom. After rebooting, access to the share resumes normally for a time.

Here is the setup:

WebServer (Windows Server 2008R2)
Adapter 1
IP 10.0.0.60
SM 255.255.255.0
DG (empty)
DNS 10.0.0.2 (our DNS server)

Adapter 2
IP 10.0.2.90, 10.0.2.91
SM 255.255.255.0
DG 10.0.2.1
DNS (empty)

Fileserver (generic NAS device)
Adapter 1
IP 10.0.0.40
SM 255.255.255.0
DG 10.0.0.1
DNS 10.0.0.2

Incoming web requests are to one of two public IPs NAT'd (proper verb?) to Adapter 2 through one of the two IP addresses there, no web requests are received by Adapter 1. Adapter 1 is essentially there to get access to the fileserver device and nothing else.

I hope that's enough information, I would appreciate any advice as this is driving me slightly mad.

  • The NIC configuration looks correct for what you're doing. On a hunch try adding your internal DNS server to Adapter 2 but make sure to configure Adapter 2 to not register in DNS.

    My thinking is that when the web traffic comes in to Adapter 2 the server needs to resolve the file server name and is using Adapter 2 to do the lookup, but as Adapter 2 doesn't have any DNS servers it's unable to. It works after a reboot because Adapter 1 is resolving the name of the file server and therefore it's in the DNS client cache of the web server when the web traffic comes in and therefore resolves correctly. When the DNS caches expires the record for the file server then you start having problems. You can verify this by running Microsoft Network Monitor on the web server and see which adapter the DNS requests come from when the problem occurrs.

    In addition, you can disable NetBIOS over TCP on Adapter 2 and unbind File & Printer sharing and Client for Microsoft Networks on Adapter 2 as these components aren't needed on Adapter 2

    James : I will try that out and return with any updates. Thank you!
    James : Thanks very much, the issue hasn't reoccurred since I put in your suggested changes.
    joeqwerty : Glad to help...
    From joeqwerty

0 comments:

Post a Comment