内容目录
环境
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 名称解析。
步骤:
- 安装
winbind
:
sudo apt update
sudo apt install winbind libnss-winbind
- 修改
/etc/nsswitch.conf
:
找到这行:
hosts: files dns
改成:
hosts: files dns wins
- 重启网络服务:
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.
近期评论