ubuntu24.04配置LLMNR实现通过主机名访问windows smb共享

内容目录

环境

ubuntu24.04 理论其他版本也可以
windows10

原因

ubuntu内网访问windows smb文件夹,但是ip可能会变希望通过windows机器名访问

实现


ubuntu配置网络

 vim /etc/netplan/50-cloud-init.yaml 
network:
  version: 2
  ethernets:
    enp0s3:  # 请根据你的网卡名替换 ifconfig查看
      dhcp4: no
      addresses:
        - 192.168.163.32/24
      routes:
        - to: 0.0.0.0/0
          via: 192.168.163.1
      nameservers:
        addresses:
          - 192.168.163.1

⚠️ 注意事项:

  • to: 0.0.0.0/0 表示默认路由;
  • via: 192.168.163.1 表示网关;
  • routes 可以定义多个静态路由,但这里用来设置默认网关即可;
  • 此配置兼容性强、不会报 deprecation 警告。

应用更改:

sudo netplan apply

然后确认:

ip a
ip r

你应能看到 IP 为 192.168.163.32,并且默认路由已设置为 192.168.163.1

Windows 主机名不是通过 DNS 发布的,而是通过 NetBIOS 或 LLMNR 机制广播的,Linux 默认无法解析这类主机名。


✅ 解决方案一:手动映射主机名(最简单、最稳定)

直接在 Ubuntu 上添加主机名映射到 IP:

echo "192.168.163.185  DESKTOP-IKSHGQK" | sudo tee -a /etc/hosts

然后就可以直接 ping:

ping DESKTOP-IKSHGQK

✅ 解决方案二:启用 wins 名称解析支持

如果你希望通过主机名自动解析,需让 Ubuntu 支持 NetBIOS 名称解析。

步骤:

  1. 安装 winbind
sudo apt update
sudo apt install winbind libnss-winbind
  1. 修改 /etc/nsswitch.conf

找到这行:

hosts: files dns

改成:

hosts: files dns wins
  1. 重启网络服务:
sudo systemctl restart systemd-resolved

✅ 可选方案:安装并启用 LLMNR(部分环境有效,我使用这个方案并没有采用上面的两个方案,systemd-resolved自带就有)

有时 Windows 主机通过 LLMNR 发布名字,如果没有可尝试安装:

sudo apt install systemd-resolved

确保 /etc/systemd/resolved.conf 启用了:

LLMNR=yes
MulticastDNS=yes

然后:

sudo systemctl restart systemd-resolved

效果

root@node1:~# smbclient //DESKTOP-IKSHGQK/scan -U "printer"
Password for [WORKGROUP\printer]:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue May  6 14:11:08 2025
  ..                                  D        0  Tue May  6 14:11:08 2025
  20250506143131.pdf                  A    11513  Tue May  6 14:11:08 2025

                157286143 blocks of size 4096. 153221905 blocks available
smb: \> exit
root@node1:~# ping DESKTOP-IKSHGQK
PING DESKTOP-IKSHGQK (192.168.163.185) 56(84) bytes of data.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注