WMP unable to connect to WMS 2008; WMS returning 503 Service Unavailable


I’ve talked to a number of people that are having problems streaming from Windows Media Services 2008 on Windows Server 2008 when the server is behind a NAT firewall, some proxies, or load balancers.  Clients on the internal network work just fine.  In a network trace you’ll see at WMS is returning a 503 Service Unavailable as the first response to the RTSP DESCRIBE or HTTP GET. 


WMS is doing a DNS query for the domain name in the RTSP or HTTP request when the request is not the local NetBIOS, local DNS, or local IP.  If a WMP client is requesting content through a NAT or similar device (such as some proxies and load balancers that hides or translate an external URL to an internal URL), the requested address might be something like mms://streaming.contoso.com/live.  However internally the server name might be WMS01 or WMS01.corp.contoso.com.  This generally is only going to happen if you’re using Network Address Translation.


WMS 9.5 now contains a cache/proxy in the box.  What’s happening is when WMS doesn’t recognize the requested URL as itself it is assuming that the request may be a proxy request.  This happens even if the cache/proxy plug-in is disabled.  Because internal clients would use the internal IP, NetBIOS, or DNS name, the server recognizes those request as intended for the local server itself.


You can work around this problem by adding any possible DNS name that could be requested by a client to the WMS server’s c:\windows\system32\drivers\etc\HOSTS file and point it to localhost.  It would be something like:


127.0.0.1    streaming.contoso.com


We’re investigating a way to fix this issue more permanently.

Comments (15)

  1. andrecv_2009 says:

    That is if you are using a domain name. How about if the request is an ip address? What do you do then? How do you fix the problem? I am surprise that it is February 2009 and Microsoft doesnt have a fix yet. I have tried everything I can to fix this issue. Please help…

  2. There’s no fix for using an IP.  The good news is that we are going to be releasing a fix in the next few days.

  3. andrecv_2009 says:

    Wow… that is really good news. I cant wait to see it…

  4. andrecv_2009 says:

    Actually, after a couple of hours brainstorming about what to do, I finally GOT IT! I performed several steps, but I think the following is what made it work for me:

    – I added my outside (Internet) IP address to my ethernet connection card with the following subnet 255.0.0.0 – My IP in this case is 98.229.89.xx .

    Then I went to Streaming Media Services Role and on my Server’s Properties/Control Protocol/RTSP Server and told it to allow selected IP address, which I then selected everything incluing IPv6 addresses and the 98.229.89.xx address. I tested it and it still wasnt streaming. I went to my to Firewall/NAT Router and added a static connection to the 98.229.89.32 using gateway of 192.168.1.1 although I knew I tested anyways and again it did not work. I deleted the static address. Tested it again and it still didnt work. Finally I went back to the server and backtrack myself deleting everything that I had just done. Namely the 98.229.89.xx address I added. Tested and voila it worked.

    Using Microsoft Network Monitor I am gettting the following messages:

    RTSP:REQUEST, TcpPacketPair rtsp://98.229.89.xx/radio

    xxxxx, Status Code = 200 – OK

    ….

    WMLOG: This is a stub parser, See the "how do i load full parsers…"

    I think that by adding my outside IP address to the card, it made the server believe that it was its IP address. However, since it wasnt I could not get my WMP test clients to connect. W Server 2008 would not even allow the packets to reach my Streaming Server. But as soon as I deleted that address from the card, it worked perfectly.

    I hope this info helps everyone else that is having this same problem.

    I have tested it from multiple clients around the world and it works.

  5. If I understand you correctly, it sounds like you’re just turning your NAT into more of a router so that the external IP is the same as the IP that’s bound to the WMS machine.  This means that any request that is made to the external IP is using the same address as the IP that WMS is using.  Therefore WMS sees it as a local (not a proxy) request.

  6. andrecv_2009 says:

    RandomNumber,

    I think you are correct. However, when I shut down the machine and restarted, it would no longer work. I did the same thing again making it work. However, as soon as I shut down and restart it stops working. It seems as though that outside IP is being cached and erased at shutdown. I would certainly appreciate if you can find a solution. Meanwhile, I will be working to see what else I can do… Thank you!

  7. eshield says:

    Hello there.

    Is there any solution yet?

    Be true, i dont understand what for WMS 9.5 is performing 2nd resolve of client given URL? Is there any hidden sense to do that?

  8. sbarkow says:

    Hello RandomNumber,

    any hints when the fix will be out? We are waiting desperately.

    Regards

  9. Should be out within 2 weeks from now.  I’ll post an update when it is released.

  10. graimg@hotmail.com says:

    I am lucky to be the first to comment on this. I applied the fix and it works great!…This is really awesome since I’ve spent several days on this issue.

  11. andrecv_2009 says:

    IT WORKS LIKE A CHARM. Thank you! I dont have a public domain name yet, but it doesnt matter at this point as it works by just using my outside IP Address in conjuntion with my NAT Router/Firewall forwarding. Thanks RandomNumber, it was worth the wait.

  12. The KB is live at:

    http://support.microsoft.com/kb/960372

    Note this is slightly different than my original link.

    <previous comment removed to prevent confusion>

  13. Syntax Error says:

    We have applied the hotfix to our test server on AWS EC2 sat behind an Elastic Load Balancer but instead of HTTP error 503 we now get 502 (Bad Gateway).

    Any ideas? It works fine directly but needs to be behind a load balancer…

  14. Do you have the cache/proxy plug-in enabled?  If so, does the behavior change if you disable it?

  15. Syntax Error says:

    No we don’t but we have fixed it now. The new problem of HTTP 502 was caused by the Elastic Load Balancer expecting a HTTP response from the WMS server. We changed the setup to use TCP instead and now it works.