UFW启用时局域网内SSH与Ping无法通过主机名连接问题
解决UFW启用时无法通过主机名连接局域网主机的问题
嘿,这个问题我碰到过好多次!核心原因就是UFW默认规则阻断了局域网主机名解析所需的流量——也就是mDNS(Linux环境常用)或者NetBIOS(Windows环境常用)这类协议的通信。直接用IP连接时不需要解析主机名,所以不受影响;而nmap -sP是直接扫IP段的ICMP请求,也绕开了解析环节,所以不管UFW开没开都能找到主机。
具体解决方案
根据你的局域网环境,选对应的规则开放即可:
1. 开放mDNS流量(Linux局域网优先)
Linux里的主机名解析大多依赖Avahi服务的mDNS协议,用UDP 5353端口。执行以下命令开放流量:
# 允许入站mDNS请求 sudo ufw allow in proto udp to any port 5353 # 允许出站mDNS请求 sudo ufw allow out proto udp to any port 5353
或者更省事的,直接允许Avahi服务的规则:
sudo ufw allow Avahi
最后重启UFW让规则生效:
sudo ufw reload
2. 开放NetBIOS流量(包含Windows主机的局域网)
如果你的局域网里有Windows设备,它们用NetBIOS做主机名解析,需要开放这几个端口:
# 开放NetBIOS名称服务(UDP 137) sudo ufw allow in proto udp to any port 137 sudo ufw allow out proto udp to any port 137 # 开放NetBIOS数据报服务(UDP 138) sudo ufw allow in proto udp to any port 138 sudo ufw allow out proto udp to any port 138 # 开放NetBIOS会话服务(TCP 139) sudo ufw allow in proto tcp to any port 139 sudo ufw allow out proto tcp to any port 139
同样执行sudo ufw reload生效。
3. 验证规则是否生效
运行sudo ufw status numbered查看规则列表,确认你添加的规则已经在列表里。然后再测试ping <machine>和ssh <machine>,应该就能正常通过主机名连接了。
内容的提问来源于stack exchange,提问作者Doron Behar
相关产品推荐
相关产品推荐

