V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
wniming
V2EX  ›  Linux

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

  •  
  •   wniming · 1 天前 · 1019 次点击

    我的所有双网卡主机都有一个网络用来访问互联网(以下简称 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 条附言  ·  15 小时 23 分钟前
    找到解决办法了,如果想让某一台机通过 avahi 能固定得到本机的 lan 网络 ip ,只需要在那一台机上用 iptables 把本机到那一台机的 5353 端口的 INPUT 流量给 DROP 就可以了。

    之前觉得 iptables 不起作用是因为以为要在提供服务的那台机上 block 端口,其实是应该在要访问服务的那台机上 block 端口,也就是说 iptables 规则只会影响本机通过 avahi 得到的其他机器 ip 是 eth 的还是 lan 的 ip 。
    11 条回复    2025-10-08 11:17:47 +08:00
    wniming
        1
    wniming  
    OP
       1 天前
    举一个用例:
    KDE 的 Dohpin 文件浏览器使用 Avahi 发现其他机器上的 SMB 服务, 默认情况下会出现拷贝文件时有时通过 eth 拷贝,有时通过 lan 拷贝到情况。
    bhy
        2
    bhy  
       1 天前
    我觉得你这么折腾,不如直接 LAN 里固定好 SMB 服务器的 IP ,或者设置好 DNS ,Dohpin 配置到访问指定的 IP/域名就行了。
    wniming
        3
    wniming  
    OP
       1 天前
    @bhy 我机器比较多,每台都配置也麻烦, 想找个一劳永逸的办法。
    qping
        4
    qping  
       1 天前 via iPhone
    > 通过修改/etc/avahi/avahi-daemon.conf 的 allow-interfaces 来强制 avahi 只为 lan 提供服务,但是这会导没有 lan 网络的设备无法访问本机的服务

    不太理解,你既要 avahi 为内网提供服务,又希望非内网机器能访问服务,这不是矛盾了?
    wniming
        5
    wniming  
    OP
       1 天前 via Android
    @qping 没有 lan 网络的设备也是内网设备,比如手机平板这些,lan 网络只不过是给台式机另外多加的万兆网络
    kome
        6
    kome  
       1 天前
    取消 1G eth 网络, 只使用 10G lan 不行么, 你这既没做网络硬件隔离, 也没做网络软件隔离, 还想内外网互访, 这不是什么问题都没解决, 反而又多了其他问题么.
    如果希望服务只在内网使用, 那就服务绑定内网 IP 就行, 没必要广播到外网. 而且, 很多交换机支持 mdns 中继.
    最后, mdns 好像是本设备主动发起, 其他设备被动接收的服务类型.
    wheat0r
        7
    wheat0r  
       1 天前
    这种拓扑是如何形成的
    qiuyue0
        8
    qiuyue0  
       1 天前
    avahi-publish -a -R openwrt.local 192.168.1.254
    wniming
        9
    wniming  
    OP
       18 小时 59 分钟前
    @kome 两个网络比单个网络的好处主要有 2 点:

    1 ,10G lan 可以纯粹用来进行存储相关的服务,不会对访问互联网的网速有影响,(比如对于运行旁路由虚拟机的 all in one 服务器来说即便 lan 口跑满也不影响其他设备通过旁路由下载大文件的速度)

    2 ,两个网卡方便网络配置维护,其中一个网卡断网时还可以用另一个网卡 ssh 进去配置网络。
    wniming
        10
    wniming  
    OP
       18 小时 57 分钟前
    @wheat0r 就是每台双网卡的台式机都有以下两个网段的网卡:

    192.168.1.0/24
    10.0.0.0/24

    192.168.1.0/24 这个网段有网关可以用来访问互联网
    VXF2016
        11
    VXF2016  
       16 小时 18 分钟前
    avahi 支持这种功能吗?建议高速网卡用 ip 访问。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   699 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:36 · PVG 03:36 · LAX 12:36 · JFK 15:36
    ♥ Do have faith in what you're doing.