我有一项任务,我花了很多时间。我对 Linux 不太熟悉,但我可以管理基本的事情。
任务是收集不同类型的 ICMP 数据包。我可以通过 tcpdump(我更喜欢)或 Wireshark 来收集它们。
我可以使用 ping 获取回显回复和回显请求的 ICMP 类型,并使用 Tracepath 或 Traceroute 获取超出时间。现在,我想要得到的是无法访问或时间戳或其他东西。我还需要两种类型,但我不知道生产方法。
我尝试 ping 不存在的主机或错误的端口,并以相同的方式使用跟踪路径,但我没有得到任何结果。
有人可以建议我或告诉我可以使用哪些命令以及以何种方式获取另外两种类型的 ICMP 数据包吗?
答案1
iptables ... -j REJECT
您可以在单独的目标主机上生成一些带有限定符的 ICMP 无法访问变体。 (或虚拟机。)可能的限定符有icmp-net-unreachable
, icmp-host-unreachable
, icmp-port-unreachable
, icmp-proto-unreachable
, icmp-net-prohibited
, icmp-host-prohibited
, icmp-admin-prohibited
, 和tcp-reset
。
例如:
iptables -j REJECT --reject-with icmp-admin-prohibited
答案2
icmpush
做你需要的。
从man icmpush
:
icmpush 是一个从命令行构建完全自定义的 ICMP 数据包的工具。
它支持以下 ICMP 错误类型:重定向、源抑制、超时、目标未到达和参数问题。
以及以下 ICMP 信息类型:地址掩码请求、时间戳、信息请求、回显请求、路由器请求和路由器通告。
icmpush
已获得 GPLv2 许可,可打包用于 debian(以及可能大多数其他发行版),源代码可在http://www.securityfocus.com/data/tools/icmpush22.tar.gz