标签: mdns

如何使用卓悦?

  1. 首先,卓悦究竟是做什么的(请阅读我在下面写的猜测)?
    在这里,我发现 Bonjour 可以自动发现 IP 网络上的计算机、设备和服务。但我认为它不仅“发现 IP 网络上的设备”,还通过为运行 Bonjour 的设备分配 IP 地址来创建 IP 网络。我对吗?

  2. 我仍然想念本质。它以下列方式工作吗?首先,我以物理方式连接设备(例如笔记本电脑),以便它们可以相互通信。然后,比方说,在我运行 Bonjour 的某些笔记本电脑上,这些笔记本电脑以自动方式为它们自己分配 IP 地址。因此,笔记本电脑(运行 Bonjour 的地方)构建了一个 IP 网络。它以这种方式工作吗?

  3. 或者可能是一台运行 Bonjour 的计算机不被视为一项服务,它不会仅仅因为 Bonjour 在这台计算机上运行而广播自己。我的意思是在计算机上运行的应用程序需要使用 Bonjour 来广播自己。因此,是应用程序自己广播自己(而不是计算机)并且它不是自动完成的(应用程序需要明确地广播自己)。这样对吗?

  4. 我的应用程序究竟如何广播自己?我可以使用命令行注册服务吗(以便所有使用 Bonjour 的应用程序都知道出现了新服务)?

  5. 此外,我想要一个使用 Bonjour 创建的 IP 网络的应用程序。为此,我的应用程序需要知道网络中存在哪些设备/服务。更详细地说,我的应用程序需要有一个服务列表。列表中的每个服务都应该有一个名称、它运行的 IP 地址和应用程序使用的端口。Bonjour 能否以某种方式提供这些信息?如果是这种情况,它究竟是如何工作的。我的程序如何从 Bonjour 获取这些信息?我的程序可以读取 Bonjour 创建的包含上述信息的文件吗?我可以在命令行中使用一些命令来检索这些信息吗?

  6. 我对从文件、环境变量或命令行中的命令访问有关服务的信息特别感兴趣。这些选项在我看来是最简单的!因为在这些情况下,我不需要使用任何额外的库来通过特定的编程语言与 Bonjour 进行通信。

PS 如果我的问题中有不清楚的地方,请提出问题。我将尝试以更清晰的方式提出我的问题。

PPS我使用的是 Windows 7

补充:我计划用 PHP 编写我的应用程序。每台计算机都应该运行一个 Apache Web 服务器。我想用 Bonjour 来帮助计算机发现彼此(计算机在本地网络中工作)。

networking mdns bonjour

29
推荐指数
1
解决办法
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
Run Code Online (Sandbox Code Playgroud)

有效,但我希望能够从 IP 中确定该名称。此外,设备不一定广播任何服务,但肯定支持 mDNS 广播。所以查看服务是行不通的。

mdns

17
推荐指数
2
解决办法
3万
查看次数

在带有 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 上首次解析主机名......这很奇怪,因为 iPad 和 Mac 之间没有连接,除了它们连接到相同的接入点(DreamPlug)。

所以再次澄清一下:访问时 iPad 上的 Safari 将挂起(直到它报告浏览失败),http://plug.local除非我http://plug.local在 Mac 上访问、运行ping plug.local、执行ssh root@plug.local或基本上执行任何其他解析主机名的操作,此时 iPad 会立即解析主机名,它开始正常工作。

如果我的理解是正确的,当 iPad 连接时,它们会广播plug.local. 无论出于何种原因,该请求都会被 DreamPlug 忽略(或者它永远不会被接收到)。但是,Mac确实设法广播了它的请求。它广播一个解析请求,DreamPlug 广播返回结果 …

domain-name-system ubuntu mdns avahi

17
推荐指数
1
解决办法
1265
查看次数

有没有办法设置 Avahi 在 LAN 上实现“任播名称解析”?

首先是一些背景知识:我们有一个实验室,其中包含一些运行在隔离 LAN 上的专用 Linux 服务器。所有服务器运行相同的操作系统 (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 服务器的存在,因为这会引入我们试图避免的单点故障。

mdns bonjour anycast avahi

9
推荐指数
1
解决办法
1189
查看次数

Bonjour/mDNS 跨子网广播

我刚刚在我们的办公室安装了一个新的 OSX 服务器,并验证了我们的有线网络 (192.168.126.0/24) 一切正常。

我遇到的问题是我们的客户端(Mac 笔记本电脑)主要通过无线连接,它们在不同的子网 (192.168.1.0/24) 上运行,并且 mDNS 广播没有到达这个子网。

网络配置对我来说有点陌生(我不管理这个位置的网络,但直到最近才管理服务器),但是我不相信两个子网之间有任何防火墙或路由规则可能会导致流量被拒绝。

我想知道这是否只是 mDNS 广播无法通过两个不同的子网进行广播(我仍在阅读广播以了解更多信息),或者还有其他我可以尝试的东西。

subnet mdns bonjour

7
推荐指数
1
解决办法
1万
查看次数

使用 FreeBSD 9(子网之间的 Bonjour)跨两个子网的多播路由?

我有一个 FreeBSD 9 路由器(Soekris net6501)通过 dsl 调制解调器(桥接)连接到互联网,为两个内部子网 10.0.1.0/24(LAN)和 10.0.2.0/24(wifi 网)执行 NAT。

有子网之类的东西之间的路线ssh host-A.wifihost-B.lan作品。

但是,10.0.2.0/24 网络上的无线客户端(如 iPad 和 iPhone)似乎无法在 LAN 上找到东西(例如,在 LAN 上播放到 Apple-TV)。

我不完全确定,但我认为这是因为 Apple 使用 Bonjour,Bonjour 使用多播来查找内容,而多播不跨子网路由。

根据FreeBSD 手册,要路由多播,我需要编译内核options MROUTING并创建一个/etc/mrouted.conf,但我找不到任何好的配置文件示例。

  1. 我的问题是否与跨子网多播有关?
  2. mroutedFreeBSD 中启用路由的首选解决方案吗?
  3. 如何/etc/mrouted.conf在 10.0.1.0/24 和 10.0.2.0/24 之间创建路由?

freebsd multicast mdns bonjour avahi

7
推荐指数
1
解决办法
4468
查看次数

如何防止 Avahi 添加 -2 到主机名

通常(可能 80% 的时间),当我重新启动运行 Avahi 的机器时,它开始使用machinename-2.local它的主机名。我网络上的所有机器都有唯一的主机名,所以没有冲突。

如何防止 Avahi 附加-2到主机名?

(事实证明,这对谷歌来说是一件非常困难的事情......)

linux mdns avahi

7
推荐指数
1
解决办法
1406
查看次数

在 .local 域中运行 DNS 名称服务器

我们正在为我们的内部网络使用“.intranet.local”域。多年来,“.local”域似乎是在私有 (RFC 1918) IP 地址上运行的本地网络的明智选择。今天我们了解到“.local”现在用于 zeroconf 网络服务。我们的第一个在这里崩溃的软件是“Psi”(Jabber 客户端),它只发送多播 DNS (mDNS) 查询来查找给定的 Jabber 服务器并且失败,因为没有服务/服务器在 224.0.0.251 上侦听。它不使用常规(单播)DNS 的回退,因此失败。

将我们公司的网络移动到另一个内部域会相当复杂。我们还有别的选择吗?就像在我们的本地 DNS 服务器上运行将 mDNS 请求转换为单播 DNS 请求的网络服务一样。

我在我们的 (Linux) 网关上尝试了“avahi-daemon”,但找不到 mDNS 将被转发/转换为单播 DNS 的配置。此外,Avahi 文档警告:

"如果您遇到 .local 是单播 DNS 域的网络,请联系本地管理员并要求他将他的 DNS 区域移动到不同的域。如果这不可能,我们建议不要在这样的网络中使用 Avahi根本没有。

接下来我希望我们的绑定名称服务器可以响应 mDNS 请求,但显然它不能。

在我们的情况下,最好的选择是什么?提前致谢。

networking domain-name-system mdns local

6
推荐指数
2
解决办法
8253
查看次数

通过隧道 (tun0) 从 eth0 重复 mDNS/Bonjour 请求

首先,我对网络和 Unix/Ubuntu/Linux 发行版都很陌生。只是一个警告,对于任何设置/代码可能看起来有点难看。

基本上,我的最终目标是在不同的 wifi 网络或 LTE 上从我的 iPhone 成功地 AirPlay 镜像到远程 Ubuntu 服务器。

TL;DR:使用 mdns-repeater/avahi-daemon 和 OpenVPN,我仍然无法将 mDNS 请求从 eth0 传递到 tun0。

首先,我知道我需要一个支持镜像的基于 Ubuntu/Linux/Unix 的操作系统的 AirPlay 接收器(希望是开源的)。我找到了几个,大多数用于 Mac OS/Windows,或者根本不支持镜像。经过更多的搜索,我在 Magic Mirror [Link 1 below] 中找到了Slave,这是一个运行和工作的开源 Linux AirPlay 服务器/接收器(基于我的调试,因为我没有物理访问我运行它的服务器) )。

现在,我知道 AirPlay 只能通过 LAN 运行(当时不明白 Bonjour 如何只在同一子网上工作),所以我研究了一些 VPN 选项。OpenVPN 似乎是最灵活和最容易设置的。为了加快速度并保证我在设置 OpenVPN 时不会犯任何错误,我使用了这里的预制脚本[下面的链接 2]。经过测试和完美运行,VPN 连接没有 DNS 泄漏,所有流量路由都成功通过 VPN。

我的 VPN 就像我的设备现在在我服务器的 LAN 上一样,并且我在 Magic Mirror(AirPlay 服务器)中成功运行了 Slave。所以它现在应该可以工作了,对吧?毫不奇怪,它没有,因为我不明白 Air​​Play 服务器实际上发送了 mDNS/Bonjour 请求(或探测?真正的术语现在让我忘记了......)。作为家庭,常规用户,由于这些mDNS请求是zeroconf(零配置),这太神奇了!但作为企业或商业用户,这很难跨 VLAN 工作。 …

vpn mdns bonjour

6
推荐指数
1
解决办法
5291
查看次数

我如何告诉 OS X 的 Bonjour/ZeroConf 实现将哪个网络用于 mdns?

我的机器上有四个网络:

  1. 192.168.20.0/24 有线(仅在工作时连接)
  2. 192.168.20.0/24 无线(只能在家连接)
  3. 192.168.132.0/24 VMWare 的 NAT
  4. 192.168.238.0/24 VMWare's host-only

我的 OS X (10.5) 似乎更喜欢在我的无线网络上为 machinename.local 使用 VMWare 的 NAT。有没有办法改变关闭VMWare界面的偏好?

routing mac-osx mdns bonjour

5
推荐指数
1
解决办法
2330
查看次数

将 mDns 从一个子网转发到另一个子网?

是否有 ipfw 规则可以轻松地将 mDns 数据包从一个子网转发到另一个子网?我有一台 Snow Leopard Server 机器作为两个子网之间的网关,并希望每个子网中的机器都能看到另一个子网中可用的服务。网关机器已被确认配置正确,以便数据包在两个子网之间正确路由(ping 工作,traceroute 显示子网跃点等)。我在设计 ipfw 规则时遇到的问题是,我不知道如何指示我希望将 en0 上寻址到 224.0.0.251:5353 的多播数据包寻址到相同的 ip/端口,但在 fw0(另一个接口)上。我尝试了一个规则,例如

fwd 192.168.10.1 log udp from 192.168.1.0/24 to 224.0.0.251 recv en1

强制数据包跳到另一个接口(从 en1 到 fw0),但没有骰子。ipfw 日志显示规则是由数据包触发的,但 tcpdump 未在另一个接口上显示任何数据包。此外,仅有的其他防火墙规则是转移端口 8668 和规则 #65535“允许任何到任何”。

有什么建议?谢谢。

mdns forwarding

5
推荐指数
1
解决办法
9173
查看次数

avahi 几分钟后停止发布

我有几个虚拟机(运行 Scientific Linux 6.2)发布工作站记录,以便可以在网上轻松找到它们。一些虚拟机在几分钟后停止发布,即我可以通过 hostname.local 访问它们几分钟,然后任何发现都会超时。他们仍然可以通过他们的 IP 地址访问。重新启动会avahi-daemon导致相同的行为。

/var/log/messages 中没有任何内容表明存在问题:

Nov 27 08:07:33 vm01 avahi-daemon[2836]: Got SIGTERM, quitting.
Nov 27 08:07:33 vm01 avahi-daemon[2836]: Leaving mDNS multicast group on interface eth0.IPv4 with address 10.100.200.226.
Nov 27 08:07:33 vm01 avahi-daemon[2880]: Found user 'avahi' (UID 70) and group 'avahi' (GID 70).
Nov 27 08:07:33 vm01 avahi-daemon[2880]: Successfully dropped root privileges.
Nov 27 08:07:33 vm01 avahi-daemon[2880]: avahi-daemon 0.6.25 starting up.
Nov 27 08:07:33 vm01 avahi-daemon[2880]: WARNING: No NSS support for mDNS detected, …
Run Code Online (Sandbox Code Playgroud)

mdns avahi scientific-linux

5
推荐指数
1
解决办法
2279
查看次数

由于挂载 Samba 共享的问题,配置 Avahi nss-mdns 不使用带有主机名的本地后缀

如何配置Avahi 和 nss-mdns以与 Windows 使用NetBIOS或最近LLMNR相同的方式解析我的小型家庭网络中的名称。

对于 Linux,有两种选择:

  • Winbind aka NetBIOS for linux,被许多专家标记为 DEPRECATED
  • Avahi & nss-mdns - 又名 Zeroconf,MODERN,听起来不错,我渴望与 LLMNR 相似。

我尝试了 Avahi。
它已经在 /etc/nsswitch.conf 中预先配置好。守护进程运行,发现运行,查找 - 排序。

但有一个问题。

ping foopc1
不工作 -未知主机
ping foopc2.local
工作!

我个人不介意使用“后缀”名称,但有些系统会这样做。特别是桑巴。无法安装 cifs 网络共享。Smb4k 可以很好地识别其他计算机,但是在尝试挂载共享 (smb/cifs) 时失败:
could not resolve address for foopc1

似乎对于 samba 客户端 (mount.cifs),主机名解析器 (?) 接受的网络名称与 nmblookup (??) 获得的名称之间必须匹配,如果我错了,请纠正我!

如何使 ping 将我的计算机识别为 foopc1 和 foopc2 而不是 foopc1.local 和 foopc2.local?

根据 nss-mdns 项目主页 http://0pointer.de/lennart/projects/nss-mdns/我创建/etc/mdns.allow …

samba hostname mdns linux-networking avahi

4
推荐指数
1
解决办法
8340
查看次数