You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置systemd-resolved的mDNS响应器以支持多个主机名?

如何配置systemd-resolved的mDNS响应器以支持多个主机名?

没问题,我来帮你搞定这个需求!虽然systemd-resolved本身没有直接提供一个一键式配置项来设置多个mDNS主机名,但有几种可靠的方法能实现你要的效果,下面一步步来:

首先,先确保你的systemd-resolved已经开启了mDNS功能:
打开/etc/systemd/resolved.conf文件,找到MulticastDNS这一行,改成MulticastDNS=yes,同时确保ReadEtcHosts=yes(这个选项让resolved读取本地hosts文件的内容)。保存后重启服务:

sudo systemctl restart systemd-resolved

接下来是具体的实现方法,选一种适合你的就行:

方法一:通过/etc/hosts添加永久别名

这是最简单直接的方式:
打开/etc/hosts文件,在对应本机局域网IP的那一行下面,添加额外的主机名条目,比如:

192.168.1.100    your-original-hostname.local
192.168.1.100    foo.local
192.168.1.100    bar.local
192.168.1.100    baz.local

(把192.168.1.100换成你实际的局域网IP)

保存文件后,systemd-resolved会自动读取这些条目,之后同一局域网内的设备ping这几个.local域名都会得到你的Linux主机的响应。

方法二:用systemd-networkd配置永久多主机名

如果你习惯用systemd的网络配置体系,可以创建一个自定义的network配置文件:

  1. /etc/systemd/network/目录下新建一个文件,比如00-multi-mdns.network,内容如下:
[Match]
Name=eth0  # 替换成你的实际网络接口名称,比如wlan0(无线)或者enp0s3(有线)

[Network]
MulticastDNS=yes

[Host]
Host=foo.local
Host=bar.local
Host=baz.local
  1. 保存后重启相关服务:
sudo systemctl restart systemd-networkd systemd-resolved

这样systemd-resolved就会在指定的网络接口上响应这几个mDNS主机名了。

方法三:临时添加别名(重启后失效)

如果只是临时测试需求,可以用systemd-resolve命令直接添加:

sudo systemd-resolve --add-host foo.local=192.168.1.100
sudo systemd-resolve --add-host bar.local=192.168.1.100
sudo systemd-resolve --add-host baz.local=192.168.1.100

这个方法的好处是不用修改配置文件,但重启系统或resolved服务后这些别名就会消失,适合临时场景。

注意事项

  • 如果你的系统之前安装过avahi-daemon(另一个mDNS服务),它可能会和systemd-resolved的mDNS功能冲突,导致部分主机名无法响应。这种情况下建议停止并禁用avahi:
sudo systemctl stop avahi-daemon
sudo systemctl disable avahi-daemon
  • 配置完成后,可以用systemd-resolve --status命令查看mDNS的状态,确认配置生效。

备注:内容来源于stack exchange,提问作者Jeremy Friesner

火山引擎 最新活动