只需在 input 链中按来源 ip 精确放行指定诊断 ip 的 icmp echo-request,禁用其他所有 icmp 类型并静默丢弃,且默认策略设为 drop,即可实现“仅允许诊断 ip 使用 ping”。

只需在 INPUT 链中按来源 IP 精确控制 ICMP 响应,其他一概静默丢弃,就能实现“仅允许诊断 IP 使用 ping”——关键不是关掉 ICMP,而是让规则有选择地放行。
明确区分诊断 IP 与普通流量
先确认哪些 IP 是你授权的运维、监控或网管设备(例如 192.168.10.5、203.0.113.45),这些才是真正的“诊断 IP”。其余所有来源的 ICMP 请求,包括公网扫描、自动化探测,都应默认拦截。不要用“允许内网全部”这种宽泛策略,避免把办公网段也变成攻击跳板。
只放行指定 IP 的 echo-request
ICMP 的 ping 请求对应类型是 echo-request(type 8)。nftables 规则需严格绑定源地址和协议类型:
- nft add rule inet filter input ip saddr 192.168.10.5 icmp type echo-request accept
- nft add rule inet filter input ip saddr 203.0.113.45 icmp type echo-request accept
注意:这里用的是 inet family,自动兼容 IPv4/IPv6;若只用 IPv4,可改用 ip saddr;若需同时支持双栈且统一管理,建议始终使用 inet saddr。
一款AI工具,主要用于管理 OpenClaw 所使用的来自 OpenRouter 的免费 AI 模型。自动按质量对模型进行排序,配置回退机制以应对速率限制,并更新 opencla...,适合需要提升相关任务效率的用户。
禁用其他 ICMP 类型并静默丢弃
除了 echo-request,很多探测行为依赖其他 ICMP 类型,如 timestamp(type 13)、address-mask-request(type 17)、traceroute 使用的 time-exceeded(type 11)等。它们不提供真实诊断价值,却暴露系统细节:
- nft add rule inet filter input icmp type { timestamp, address-mask-request, information-request } drop
- nft add rule inet filter input icmp type != echo-request drop
最后这条规则确保:只要不是你白名单里的 echo-request,其他所有 ICMP 类型一律静默丢弃(不发任何响应),避免被用于网络测绘或时间同步分析。
确保默认策略为 drop 并置于末尾
所有显式放行规则必须在默认拒绝策略之前加载,否则会被跳过:
- nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }
这条命令创建一个带默认 drop 策略的 input 链。它必须是链的最终兜底行为,且不能写在放行规则之后——nftables 按顺序匹配,一旦命中即终止。搭配前面的 accept 规则,就构成“只准这俩 IP ping,别的全黑”的最小权限模型。










