Normal view

There are new articles available, click to refresh the page.
Before yesterdayMain stream

双网卡主机如何让另一台双网卡主机的 avahi 只能发现本机的其中一个网卡上的的服务?

By: wniming
7 October 2025 at 10:17
wniming:

我的所有双网卡主机都有一个网络用来访问互联网(以下简称 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 -n
Chain 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:5353
root@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;local
d@develop:~$ 

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

❌
❌