1

I have an issue with ISA Server and SQL Server...

In SQL Server Management Studio there can be done a query for server instances to network servers. This is done by broadcasting to SQL Browser service through the subnet and servers those run browser service respond with their IP adresses and instance names. The problem with that is routers drop all broadcast packets by default and my SQL Server runs on different subnet from my actual LAN subnet, behind ISA Server:

graph

So, ISA captures broadcast packet created by my terminal and drops it as expected... I'm seeking for relaying those packets created in 24.0 leg to 8.0 leg, like DHCP relaying...

I checked ISA for some kind of relaying broadcast messages but there're none that I encountered. We can do DHCP relaying by installing relay agent in RRAS, and creating access rules on ISA, like:

dhcp rules

What I'm wondering is if there is a way to do a relay broadcast messages targeting sql browser service like dhcp above? Do I have to write a listener application to work on ISA computer (SQL Browser Relay Agent), or is there such app does that? What do you recommend?

2 Answers 2

2

As far as I know the SQL Browser service listens for incoming connections from client applications to UDP port 1434 of the server. As far as I know this is a unicast UDP message, not a broadcast UDP message. You should be able to get this working by allowing inbound UDP port 1454 to the SQL server in the ISA rule set.

8
  • As far as I experimented, yes browser service listens on UDP 1434 but clients which dont have a specific IP address of server HAVE TO broadcast to get server's IP first and then they can communicate over UDP 1434. Nov 9, 2011 at 4:04
  • 1
    That makes sense, but that broadcast doesn't have anything to do with the SQL Browser service, it has to do with name resolution. If you give the clients a way to resolve the SQL server host name without resorting to broadcasting then you'll solve the problem. Are the clients and the server part of the same company/entity?
    – joeqwerty
    Nov 9, 2011 at 12:13
  • 1
    In order to connect to all instances of SQL server you'll need firewall rules that allow UDP port 1434 (SQL browser) to all instances and TCP port rules for each port that your SQL server instances are running on in order for the ISA to allow the traffic. For instance, if one SQL instance is running on TCP port 1364 then you'll need an ISA rule that allows inbound traffic to that instance for TCP port 1364 as well as a rule that allows inbound traffic to that instance for UDP port 1434. Continued...
    – joeqwerty
    Nov 9, 2011 at 14:08
  • 1
    In my opinion this kind of defeats the purpose of running SQL on a non default port (TCP 1433) and makes firewall configuration more complex as referenced in this article: support.microsoft.com/kb/287932
    – joeqwerty
    Nov 9, 2011 at 14:08
  • 2
    The client does not broadcast to find the SQL instance to connect to. It broadcasts to resolve the name of the host that SQL is running on, this is unrelated to SQL server, it's related to name resolution. The client has to know what server name to connect to in the first place. The client sends a UDP message to the server on port 1434 and the SQL Browser service returns a list of instances and port numbers. See here: msdn.microsoft.com/en-us/library/ms165724(v=sql.90).aspx
    – joeqwerty
    Nov 9, 2011 at 15:51
0

I'm pretty sure that SQL Browser isn't a broadcast, but just connects over UDP 1433. Assuming that you configure your firewall to allow that traffic to go through, you should be good to go.

1
  • As far as I experimented, yes browser service listens on UDP 1434 but clients which dont have a specific IP address of server HAVE TO broadcast to get server's IP first and then they can communicate over UDP 1434. Nov 9, 2011 at 4:05

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .