Debian12主机无法被ping通的问题

问题

给 mini 主机安装了 Debian12 做为服务器使用,配置好 ssh 之后从 Mac 上进行远程登录,虽然连接的都是同一个Wi-Fi,但是一直连接失败。
ping 了一下延迟非常高,接近 100% 的丢包率。从 debian 系统 ping Mac 又是正常的,平均延迟在 10 秒左右,非常奇怪。

参考了网上很多资料这个问题都没有解决,前后浪费了好几个小时的时间。最后还是看到网上提到了 Docker,Docker 网络可能会对宿主机的网络产生影响,然后去问了 AI,根据 AI 的提示 修改 nftables 配置 解决了这个问题。

解决方案

允许 ICMP(ping)通过 nftables

# 临时允许ICMP(立即生效,重启nftables后失效)
sudo nft add rule inet filter input meta l4proto icmp accept

# 若需永久生效,需写入nft配置文件
sudo vim /etc/nftables.conf
# 在"input"链中添加(确保在"drop"规则之前):
# chain input {
#   ...
#   meta l4proto icmp accept  # 允许ICMP
#   ...
# }

# 重启nftables生效
sudo systemctl restart nftables

修改 /etc/nftables.conf,在 input 部分添加 meta l4proto icmp accept,然后重启 nftables,就能正常 ping 通了。

更早之前看到一篇博客说在 /etc/sysctl.conf 配置最下面新增配置 net.ipv4.icmp_echo_ignore_all = 0,但是在我这里没有效果。

其他可能的原因

其他可能导致此类的问题的原因及排查方向:

  • 服务端和客户端没有连接同一个网络
  • 服务端配置了防火墙
  • 服务端配置忽略 ICMP 请求,就是我这种情况
  • 服务端配置了静态 IP,IP 的网段、子网掩码长度、网关地址配置可能有误
  • 服务端安装了 docker,服务端宿主机 IP 网段和 docker 默认配置的网络的网段有冲突,类似 172.12.0.1/16
  • 客户端路由表可能指向了错误的地址或者存在缓存,使用 arp -a查看本机路由表
  • 客户端 DNS 配置可能有误,检查下是否可以访问百度等网站