Questions tagged «mdns»

3
如何使用Bonjour?
首先,Bonjour到底做了什么(请阅读下面写的我的猜测)? 在这里,我发现Bonjour可以自动发现IP网络上的计算机,设备和服务。但是我认为它不仅可以“在IP网络上发现设备”,还可以通过为运行Bonjour的设备分配IP地址来创建IP网络。我对吗? 我仍然想念本质。它以下列方式工作吗?首先,我以物理方式连接设备(例如笔记本电脑),以便它们之间可以相互通信。然后,可以说,在一些运行Bonjour的便携式计算机上,结果,这些便携式计算机会自动为其自动分配IP地址。因此,便携式计算机(运行Bonjour的计算机)将建立IP网络。这样行吗? 或者可能是因为运行Bonjour的计算机不被视为服务,并且仅由于Bonjour在此计算机上运行而无法广播。我的意思是,计算机上运行的应用程序需要使用Bonjour进行广播。因此,是应用程序自行广播(不是计算机),并且不会自动完成(应用程序需要明确地自行广播)。这样对吗? 我的应用程序如何准确地自我广播?我可以使用命令行注册服务(以便使用Bonjour的所有应用程序都知道出现了新服务)吗? 此外,我想拥有一个使用Bonjour创建的IP网络的应用程序。为此,我的应用程序需要知道网络中存在哪些设备/服务。更详细地,我的应用程序需要具有服务列表。列表中的每个服务应具有名称,运行服务的IP地址以及应用程序使用的端口。Bonjour可以通过某种方式提供此信息吗?如果是这样,它是如何工作的。我的程序如何从Bonjour获得此信息?我的程序可以读取Bonjour创建的包含上述信息的文件吗?我可以在命令行中使用一些命令来检索此信息吗? 我对从文件,环境变量或命令行中的命令访问有关服务的信息特别感兴趣。在我看来,这些选择是最简单的!由于在这种情况下,我不需要使用任何其他库来通过特定的编程语言与Bonjour通信。 如果我的问题不清楚,请问PS Pleas。我将尝试以更清晰的方式提出我的问题。 PPS 我使用Windows 7。 添加:我计划用PHP编写应用程序。每台计算机都应运行Apache Web服务器。我想使用Bonjour帮助计算机发现彼此(计算机在本地网络中工作)。

1
在iPad上的DreamPlug Ubuntu上使用Avahi
在DreamPlug(这是运行Ubuntu Jaunty的即插式计算机)上使用Avahi时,我遇到以下非常特殊的问题。 花了几天时间之后,我认为我已经设法缩小了问题的范围。 DreamPlug充当WiFi接入点,具有主机名plug和IP地址192.168.1.1(在/etc/hosts和中设置/etc/hostname),并运行lighttpd。 现在,我的Mac可以直接http://plug.local在Chrome中访问,但是如果我尝试http://plug.local在iPad上加载,它将无法正常工作。就是说,直到我将页面加载到桌面上,它才起作用。 由于某种原因,iPad永远无法解析主机名,直到在Mac上首先解析主机名为止。相同的访问点(DreamPlug)。 因此,请再次澄清一下:http://plug.local除非我http://plug.local在Mac上访问,运行ping plug.local,执行ssh root@plug.local或基本上执行任何其他可解析主机名的操作,否则iPad上的Safari浏览器将在访问时挂起(直到报告浏览失败),此时iPad会立即解析该主机名。主机名,它开始正常工作。 如果我的理解是正确的,则在连接iPad时,它们会广播的解析请求plug.local。无论出于何种原因,DreamPlug都会忽略此请求(或者永远不会收到它)。但是,Mac 确实可以广播其请求。它广播一个解析请求,然后DreamPlug brodcast返回结果plug.local-> 192.168.1.1。然后,iPad收到此结果(该结果确实是Mac的),然后可以成功解析。 我很乐意根据要求提供我的avahi-daemon.conf配置文件或其他配置文件。 更新:我现在设法使用Wireshark,发现iPad确实确实向网络广播了一个请求。 我捕获了DID导致Avahi做出响应的数据包,以及没有得到的数据包。 它们看起来完全相同,唯一的区别是,失败的记录指定了其他类型的RR OPT...我不知道OPT记录是什么。难道是Avahi不喜欢OPT出于某种原因附有RR的DNS查询吗? 这是Wireshark的两个屏幕截图。第一个显示了从台式计算机发送的“良好” mDNS请求(在这种情况下,该设备称为runway.local)。此查询工作正常,服务器(位于192.168.1.1)立即响应: 这是从返回的响应的示例runway.local: 同时,这是第二个DNS查询,该查询已从iPad发送给相同的主机名runway.local。在这种情况下,该请求似乎被简单地忽略了(无论如何,此DNS查询始终没有收到响应): 尝试查找导致问题的iPad请求中的内容,这两个数据包几乎相同,从台式机(运行OS X)和iPad发送的mDNS查询之间唯一的区别是iPad附加了OPT在DNS请求底部的资源记录。 问题是:资源记录的意义是什么-是-还是其他原因-导致该DNS请求被Avahi忽略。 更新这可能是我一直在寻找的突破: 我一直在使用--debug标志运行avahi-daemon,并且注意到很多“无效的查询数据包”。消息。这导致我转到此页面:http : //avahi.org/ticket/284,这似乎是一个已知问题(尽管应该解决)。 特别: 一个tcpdump使我相信这是由于Mac OS 10.6使用RFC2671在DNS查询的其他数据部分中添加了信息。具体来说,它提供“ UDP有效负载大小”(在我的情况下为1440)作为响应包最大大小的提示。[...] Avahi认为带有非空附加数据节的查询无效,在此之前,Avahi会在生成无效查询数据包消息之前检查AVAHI_DNS_FIELD_ARCOUNT!= 0。

4
如何通过多播DNS从IP获取计算机名称?
我有一个网络上IP地址的列表,其中大多数都支持多播DNS。我希望能够解析服务器名称,而不仅仅是IP地址。 ping computer.local 64 bytes from 192.168.0.52: icmp_seq=1 ttl=64 time=5.510 ms 64 bytes from 192.168.0.52: icmp_seq=2 ttl=64 time=5.396 ms 64 bytes from 192.168.0.52: icmp_seq=3 ttl=64 time=5.273 ms 可行,但我希望能够从IP确定该名称。另外,这些设备不一定广播任何服务,但绝对支持mDNS广播。因此,无法浏览服务。
17 mdns 

1
有没有办法设置Avahi在LAN上实现“任意播名称解析”?
首先,有一些背景知识:我们有一个实验室,其中包含一些在隔离的LAN上运行的专用Linux服务器。所有服务器都运行相同的OS(Debian Linux)和相同的专有服务器软件,并且服务器进程相互通信以保持其数据同步。这意味着就任何客户端而言,客户端连接到哪个服务器都没有关系-任何服务器都将返回与其他服务器相同的数据。 这些Linux服务器都运行avahi-daemon为其自身发布mDNS主机名,这意味着客户端可以输入“ http://linux-server-1.local”。进入他的Web浏览器并连接到Linux服务器1,依此类推。 一切都很好,除了这意味着坐在客户端计算机(通常是安装了Bonjour的Mac或Windows笔记本电脑)上的用户必须知道(或弄清楚)哪些Linux服务器当前在线,并且他必须确保他连接到其中之一。例如,如果服务器#2今天离线,并且客户端输入“ http://linux-server-2.local”。进入他的网址栏,他不会得到回应。当然,这还不是世界末日,但对于希望一切都能“正常运行”的新手用户而言,这很烦人,而且这会使健壮的客户端脚本的开发变得更加复杂(因为客户端脚本将需要知道如何明确处理离线服务器)。 考虑到这一点,我的问题是:是否可以将Avahi配置为发布任意播样式mDNS主机名别名?目标是任何人都可以坐在笔记本电脑上,输入“ http://any-linux-server.local”。(或类似),并连接到当前在线的一台服务器(再次,哪一台都没有关系)。 请注意,这需要在不对客户端便携式计算机进行任何特殊配置的情况下进行,因为我们无法控制它们(除了要求他们安装Bonjour之外)。 还要注意,我们不能依赖于单独的名称服务器或代理服务器,也不可以依赖于任何特定的Linux服务器,因为那样会引入单点故障,我们试图避免这种情况。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.