V2EX 10月07日 11:23
Avahi 服务 IP 地址指定:优先使用局域网接口
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了如何配置 Linux 主机上的 Avahi 服务,使其在提供 mDNS 服务时,始终优先使用带宽更高的局域网(lan)接口 IP 地址,而非默认随机选择的互联网(eth)接口。文章介绍了两种尝试性的解决方案:通过修改 Avahi 配置文件 `avahi-daemon.conf` 的 `allow-interfaces` 参数,以及利用 `iptables` 规则进行网络流量控制。然而,这些方法均未能达到预期效果,`allow-interfaces` 导致局域网外设备无法访问,而 `iptables` 规则也未能阻止其他设备通过特定接口发现本机服务。作者对此表示困惑,并寻求有经验用户的指导,以期实现 Avahi 服务固定使用 `lan` 接口 IP 的目标。

🎯 **Avahi 服务 IP 地址选择问题:** 在拥有两个网络接口(eth 用于互联网访问,lan 用于局域网通信,带宽更高)的 Linux 主机上,Avahi 服务默认会随机选择其中一个接口的 IP 地址来提供 mDNS 服务。用户希望 Avahi 服务始终使用 `lan` 接口的 IP 地址,以便局域网内的设备能够更稳定、高效地发现本机服务。

❌ **`allow-interfaces` 配置尝试及局限:** 用户尝试修改 `/etc/avahi/avahi-daemon.conf` 文件中的 `allow-interfaces` 参数,试图强制 Avahi 只监听 `lan` 接口。然而,此举导致了未连接到 `lan` 网络的设备无法发现本机提供的服务,未能实现全局可用性的目标。

❓ **`iptables` 规则无效的困惑:** 另一种尝试是使用 `iptables` 阻止其他双网卡主机通过 `eth` 接口访问本机的 Avahi 服务。尽管配置了 `DROP` 规则,但测试结果显示,即使在 `develop` 主机上执行了 `iptables -L INPUT -v -n` 命令并看到了相应的 `DROP` 规则,其他设备仍然能够通过 `eth` 接口成功发现本机的 SMB 服务,这让用户对其工作原理感到不解。

💡 **寻求专业指导:** 由于上述尝试均未成功,作者表示除了 `iptables` 之外,暂时想不到其他有效的解决方案,因此希望寻求具有相关经验的用户或技术专家的指导,以期找到解决 Avahi 服务 IP 地址绑定的有效方法。

我的所有双网卡主机都有一个网络用来访问互联网(以下简称 eth ),另一个网络用于局域网设备之间互相访问(以下简称 lan ,这个带宽更高),linux 通过 avahi 来提供 mdns 服务让其他主机可以发现本机上的服务,默认情况下 avahi 会随机使用 eth 或 lan 其中一个的 ip ,我希望始终使用的是 lan 的 ip ,这个要如何实现?

这个问题我尝试过以下方法:

1 ,通过修改/etc/avahi/avahi-daemon.conf 的 allow-interfaces 来强制 avahi 只为 lan 提供服务,但是这会导没有 lan 网络的设备无法访问本机的服务。

2 ,通过 iptables 阻止其他的双网卡主机通过 eth 来访问本机的 avahi 服务,结果 iptables 的方法也不管用,具体情况如下:

root@server:/home/d# iptables -L INPUT -v -nChain INPUT (policy ACCEPT 2698 packets, 253K bytes) pkts bytes target     prot opt in     out     source               destination            20  4975 DROP       udp  --  *      *       192.168.1.4          0.0.0.0/0            udp dpt:5353   20  4894 DROP       udp  --  *      *       10.0.0.3             0.0.0.0/0            udp dpt:5353root@server:/home/d# 

上面的两条规则阻止了 develop 这台机通过 eth 或 lan 来访问本机的 avahi 服务,结果在 develop 这台机上仍然可以看到本机的 smb 服务:

d@develop:~$ avahi-browse -atp | grep -i server+;lan-br;IPv4;SERVER;_device-info._tcp;local+;eth-br;IPv4;SERVER;_device-info._tcp;local+;lan-br;IPv4;SERVER;_smb._tcp;local+;eth-br;IPv4;SERVER;_smb._tcp;locald@develop:~$ 

我完全想不通 iptables 为啥不管用,除了 iptables 我也想不到有其他方法能实现我想要的效果,希望有经验的 v 友能指导一下。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Avahi mDNS Linux网络 IP地址绑定 iptables 网络配置 局域网 Avahi daemon Avahi configuration network interface service discovery LAN eth mDNS service
相关文章