问题标签 [avahi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1002 浏览

c++ - avahi:广播我的服务已更新信息

我有一个 avahi (zeroconf, dnssd, bonjour) 服务。我希望服务能够在有新数据时通知客户端,以便客户端可以连接并查询更新的信息。

服务应该发布什么类型的消息,以及如何使用 avahi API 来完成(服务是用 C++ 编写的)?

0 投票
1 回答
2149 浏览

dns - Avahi dnsconfd 是如何工作的?

我看到 avahi-dnsconfd 实现了处理来自浏览器的 dns 请求,而没有在 /etc/resolv.conf 中列出。我认为检查 localhost 是否可以首先回答查询是 dns 解析规范的一部分。

问题是,看起来 53 端口上没有人。那么 avahi 是如何捕获 dns 查找并回答的呢?

0 投票
1 回答
1654 浏览

dns - 如何实现 avahi 感知的本地子域 dns 服务器?

我已经构建了一个带有 avahi 感知的扭曲的迷你 dns 服务器。

它的作用是寻找以 .local 结尾的请求;如果它是主机的 url,比如{{hostname}}.localdns 服务器,让操作系统解析地址。如果它类似于{{subdomain}}.{{hostname}}.local服务器将其路由到{{hostname}}.local.

带来这个程序的功能尚不清楚,它让您可以轻松地使用子域,而无需将您需要的每个子域添加到 /etc/hosts,而且它还支持本地网络中的机器并且还具有avahi dnsconfd 服务器正在运行。

这是代码:

编辑:现在服务器返回一个带有正确 ip 的答案

我用 dig 做了一些测试,一切看起来都很好。我的主机名是tachtev.

这是 dig www.tachtev.local 的输出

这是 nslookup 的输出

当我挖掘网址时,一切看起来都很好。但是现在当我尝试 curl www.tachtev.local 时,我得到一个找不到主机的错误。

错误来自哪里?

编辑:依赖项:avahi + avahi-dnsconfd + twisted + twisted 名称(不能被 pip'ed)编辑:我没有找到解决方案,但是有一个软件可以实现我想要实现的http://pow.cx /

0 投票
1 回答
1877 浏览

c - Avahi dns_sd 兼容层无法运行浏览回调

背景

我正在为 Haskell 开发一个跨平台的 Zeroconf/Bonjour/DNS-SD 库,并认为我最好的选择是针对dns_sd.hAPI。在 Linux 下,此接口的实现由Avahi提供,它声称支持 Bonjour API 的子集。

问题

作为对我的库的健全性检查,我用 C 语言编写了一个小型测试程序,它只使用了 API 的基本框架。它浏览网络上的任何类型的服务_http._tcp,一看到就打印一条消息,然后死掉:

在我的 Mac 上,这个测试程序在 C 和等效的 Haskell 中都能正常工作(它找到了我的打印机;令人兴奋!):

但是在我的 Linux 机器上,程序在没有调用回调的情况下退出了我:

问题

  1. Avahidns_sd兼容层仍然是跨平台绑定的合适目标吗?或者,关于使用本机 Avahi API 的警告消息是否足够严重,我应该考虑重新定位?
  2. C 中跨平台 Zeroconf 的最新技术是什么?
0 投票
2 回答
10390 浏览

bonjour - dns-sd:如何手动注册远程服务

我在另一个物理网络上的另一个远程系统上有一个服务,它的多播包没有到达我的本地系统,因此我看不到它的 DNS-SD 发布的服务。

我有一种方法可以在我的本地机器上手动注册它,以便只显示 DNS-SD 发现的服务的应用程序显示它?

0 投票
1 回答
2672 浏览

vmware - 在 VMware 中使用 avahi @ Ubuntu ping 主机名。没有解决

我有一个非常奇怪的问题。我有 2 台虚拟机在 VMware 播放器中运行 ubuntu 11.4。这些虚拟机与我的网络建立了桥接连接。由于他们使用 DHCP,因此让他们使用主机名而不是 IP 地址相互通信会更容易。

那就是它变成一个奇怪的情况的地方。

两者都像魅力一样工作

在他们自己的系统上工作得很好。但在机器 2 上 ping machine1.local 会导致“ping:未知主机 machine1.local”

在尝试并检查了所有内容后,除了 avahi-browse 中的本地机器,我什么也没得到,我安装了 wireshark 以了解真正发生了什么。

我运行了wireshark,然后运行了avahi-browse。在wireshark中,我看到了对MDNS消息的所有响应,我得到了machine1.local和machine2.local!!!

伟大的!但是当我关闭wireshark时,avahi-browse缓存又变空了......

为什么当我在虚拟机中打开wireshark时,avahi-daemon会收到MDNS消息,而当我关闭它时,消息又会丢失......

0 投票
1 回答
990 浏览

java - Linux 上 Java 和 Zeroconf (avahi) 的多播问题

我正在尝试为 VM 开发基于 Java 的解决方案,该解决方案在开始时不知道他们应该从列表中自行选择哪个静态 IP 地址。我对解决方案的想法是:

  1. 使用 Zeroconf/avahi 为 VM 选择 IP 地址
  2. 虚拟机使用多播广播它们的 MAC 地址。每个虚拟机都知道对等 MAC 地址的预期数量。
  3. 一旦所有虚拟机都收到了所有其他 MAC 地址,它们就会按字母顺序对它们进行排序,并根据其 MAC 地址在列表中的位置(IP.1、IP.2 等)选择一个 IP。

请注意 DHCP 在任何情况下都无法在此环境中使用,我正在尝试找到解决此问题的方法

我想帮助解决这个异常。如果您能提供帮助,请告诉我。谢谢!!

这是我正在使用的 Java 代码:

这是 /sbin/ifconfig 的输出:

编辑:添加路由表:

0 投票
1 回答
428 浏览

python - 无法让 Avahi.ServiceResolver 工作

我正在尝试将当前使用 Avahi 原始 dbus 接口的一些代码移植到使用 Avahi gobject 接口(通过 python 的 gobject 自省)。

我得到了 ServiceBrowser,但我无法让 ServiceResolver 工作。这是我的代码:

示例输出:

在按下 ctrl-c 之前,我让它运行了大约 1 分钟。如您所见,我正在调用 ServiceResolver,但从未调用 sr_found 和 sr_failure 方法。我怎样才能让它工作?

(我在http://code.ohloh.net/上找不到任何其他代码,所以我怀疑我可能是第一个尝试这样做的人)

0 投票
0 回答
691 浏览

bonjour - 如何像使用 Bonjour 一样使用 Avahi

我使用 Avahi 和 Bonjour 作为 mDNS 响应器。

在 Bonjour 中,我得到了我的 query-in-answer 部分的答案,并且 SRV、A 和 AAAA 记录等附加信息位于 DNS 数据包的附加部分中。

但在 Avahi 中,所有 PTR、SRV、A、AAAA 都出现在答案部分。

如何配置 Avahi 以与 Bonjour 相同的方式生成响应?

我还希望在 Avahi 中进行相同的查询,延迟 <= 2 毫秒。

0 投票
2 回答
1648 浏览

c++ - 链接错误:未定义对“avahi_alternative_service_name”的引用

知道我需要在库中找到这个符号。我正在尝试编译基于 avahi 的测试代码来查看服务。但我得到undefined reference toavahi_alternative_service_name'`.. 我不知道哪个库包含这个,我正在运行 UBUNTU 12.04。我尝试安装几个软件包但没有成功..任何想法谢谢..

我安装了以下软件包

命令
gcc -fpermissive testAvahi.c -o testAvahi