正如您所知,您可以轻松识别网络中运行SQL SERVER INSTANCE的系统,但这是否可以强制DHCP识别我的应用程序?
示例:我有很多客户端和一台服务器。但在安全网络中,外部绑定流量和端口侦听器被阻止。所以我试图使用反向模型。
我通过查询DHCP成功获取有关所有租用IP的信息,但我希望我的客户端可以查询DHCP我的服务器在哪里,我想要这个而无法访问DHCP服务器。
场景#1:服务器运行于:192.168.3.245 DHCP:192.168.3.1当我的客户端应用程序在某台计算机上运行时,它会查询有关服务器的DHCP,DHCP应告诉他您的服务器正在运行@ 192.168.3.245
答案 0 :(得分:2)
Sql Server不使用dhcp。
您可以在Windows dhcp服务器(和其他服务器)中配置一个名为“范围选项”的内容,以使用dhcp请求发送其他信息,但客户端必须知道要查找该信息,并且dchp服务器必须支持它。诀窍在于,当我说“客户端”时,我的意思是dhcp客户端程序本身内置在您的操作系统中,而不是您构建的客户端程序。此外,并非所有dhcp服务器都支持此功能,而且那些不支持来自外部应用程序(如sql server)的动态注册的服务器。你必须预先配置它。
这方面的一个例子是我工作的IP电话系统。我们在dhcp中设置了自定义选项,其中包含有关IP PBX所在位置以及要使用的VLAN的信息,以及手机内置的dhcp客户端知道如何阅读。
相反,我相信sql server所做的是每当你试图在网络上找到sql server实例时,你发出一个UDP广播数据包,任何监听sql服务器都会响应该数据包来宣布他们的存在。
答案 1 :(得分:1)
您可以向大多数DHCP服务器添加自定义选项字段以传输信息;但是,许多dhcp客户端将丢弃他们没有专门编写的任何字段。
SQL Server实际上有一个不同的网络套接字,它响应UDP广播数据包并提供有关其实例的信息。客户端实际上并不从dhcp客户端或dhcp客户端处理的任何字段读取SQL Server信息。
由于客户可能会丢弃不支持的字段;您可能需要修改dhcp客户端来处理和存储该字段。那是在你的应用程序的客户端可能读取存储/获得的值之前。修改dhcp客户端通常只在Linux上是一个选项,即使这样,实际部署修改后的客户端也很难在没有用户,管理员等的支持的情况下部署。
如果客户端无法询问/探测,那么最好让他们手动输入配置。如果人们不喜欢这样,那就告诉他们允许客户进行调查(这意味着他们需要在可能的情况下为您提供基础设施)。