我的所有双网卡主机都有一个网络用来访问互联网(以下简称 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 友能指导一下。
1
wniming OP 举一个用例:
KDE 的 Dohpin 文件浏览器使用 Avahi 发现其他机器上的 SMB 服务, 默认情况下会出现拷贝文件时有时通过 eth 拷贝,有时通过 lan 拷贝到情况。 |
![]() |
2
bhy 1 天前
我觉得你这么折腾,不如直接 LAN 里固定好 SMB 服务器的 IP ,或者设置好 DNS ,Dohpin 配置到访问指定的 IP/域名就行了。
|
![]() |
4
qping 1 天前 via iPhone
> 通过修改/etc/avahi/avahi-daemon.conf 的 allow-interfaces 来强制 avahi 只为 lan 提供服务,但是这会导没有 lan 网络的设备无法访问本机的服务
不太理解,你既要 avahi 为内网提供服务,又希望非内网机器能访问服务,这不是矛盾了? |
6
kome 1 天前
取消 1G eth 网络, 只使用 10G lan 不行么, 你这既没做网络硬件隔离, 也没做网络软件隔离, 还想内外网互访, 这不是什么问题都没解决, 反而又多了其他问题么.
如果希望服务只在内网使用, 那就服务绑定内网 IP 就行, 没必要广播到外网. 而且, 很多交换机支持 mdns 中继. 最后, mdns 好像是本设备主动发起, 其他设备被动接收的服务类型. |
![]() |
7
wheat0r 1 天前
这种拓扑是如何形成的
|
![]() |
8
qiuyue0 1 天前
avahi-publish -a -R openwrt.local 192.168.1.254
|
9
wniming OP @kome 两个网络比单个网络的好处主要有 2 点:
1 ,10G lan 可以纯粹用来进行存储相关的服务,不会对访问互联网的网速有影响,(比如对于运行旁路由虚拟机的 all in one 服务器来说即便 lan 口跑满也不影响其他设备通过旁路由下载大文件的速度) 2 ,两个网卡方便网络配置维护,其中一个网卡断网时还可以用另一个网卡 ssh 进去配置网络。 |
10
wniming OP |
11
VXF2016 16 小时 18 分钟前
avahi 支持这种功能吗?建议高速网卡用 ip 访问。
|