我有一个基于 Linux 的进程控制器,它偶尔会锁定到无法 ping 的程度(即我可以 ping 它,然后如果不对网络设置进行任何修改,它就不再可 ping 通)。
我很好奇,什么进程/系统负责实际响应 ping?看来这个过程正在崩溃。
我一直在阅读 redhat iptables 文档,但无法弄清楚以下几行的作用:
... -j REJECT **--reject-with icmp-host-prohibited**
... -j REJECT **--reject-with icmp-host-prohibited**
Run Code Online (Sandbox Code Playgroud) 我知道可以运行 Bashfor
循环的方法和ping
多台服务器的方法,是否有我可以使用的 Linux CLI 工具,它允许我执行此操作而不必求助于将 Bash 脚本编写到ping
服务器列表一次一个?
像这样的东西:
$ ping host1 host2 host3
Run Code Online (Sandbox Code Playgroud)
注意:我正在寻找 CentOS/Fedora,但如果它适用于其他发行版,那也很好。
我想在我的 Ubuntu 操作系统上一直禁用 ping 响应,以下命令有效,但仅在系统重新启动之前:
关闭:
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
Run Code Online (Sandbox Code Playgroud)
平安:
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
Run Code Online (Sandbox Code Playgroud)
即使在重新启动笔记本电脑后,我如何才能关闭回声?
我最近遇到了一些网络配置的问题,这很难解决。
如果我知道交通无法通过哪个方向,这似乎会更容易诊断。由于所有ping
请求都没有收到任何响应,我想知道 ping 请求数据包是否通过并且响应失败,或者是否是请求本身失败。
明确地说,标准实用程序喜欢ping
并traceroute
依赖于从一台机器发送数据包并接收数据包以响应同一台机器。当没有响应返回时,总是无法判断初始请求是否未能通过,或者对它的响应被阻止,或者甚至根本没有发送对它的响应。我想分析的正是这个特定的细节,“哪个方向是失败的”。
是否有任何适用于 Linux 的常用实用程序可以让我监视传入的 ICMP ping 请求?
通常,在我开发的应用程序中,我喜欢为网络上的各种设备包含一个网络状态指示器。监控这些设备的最简单方法是 ping 它们。但是,由于原始套接字的安全要求或外壳到ping
. 此外,对于这不是问题的情况,我有点为各种情况编写了相同 ping 代码的略有不同的变体。
大部分的设备,我监视嵌入设备用最少的网络功能(但总是包括ICMP回声),所以我也必须坚持这一协议,喜欢的东西回声协议(马克在下面的评论中指出,谢谢!)通常AREN对我不可用。
是否存在可以为非根应用程序提供低开销 ICMP ping 服务的服务?
我正在考虑编写一个以 root 身份运行并允许其他非 root 应用程序连接到它的服务,添加要监控的设备,然后从中查询 ping 时间和网络状态,但我不想重新发明轮子,我我想知道是否已经存在这样的东西。
我注意到我有几个网络在防火墙级别阻止了所有 ICMP 消息,除了 ICMP 回显和回复。
我知道至少需要允许 IPv4 中的 ICMP 消息类型 3 才能进行 MTU 协商。
可以使用以下命令嗅探数据包:
sudo tcpdump icmp
Run Code Online (Sandbox Code Playgroud)
但是,如何在一个远程点上生成 ICMP 数据包类型 3 以进行全局测试?
在带有环回网络接口的 FreeBSD 系统上……
% ifconfig lo0 低 链接环回 drv_running 运行多播 nd6 performnud auto_linklocal no_radr 链接 rxcsum txcsum hwcsum rxcsum_ipv6 txcsum_ipv6 链接地址度量 0 mtu 16384 类型 24 链路状态 0 物理 0 波特率 0 inet4 地址 127.0.0.1 prefixlen 8 bdaddr 127.0.0.1 inet6 地址 ::1 范围 0 prefixlen 128 bdaddr ::1 范围 0 inet6 地址 fe80::1 范围 3 prefixlen 64 inet6 地址 ::2 范围 0 prefixlen 128 inet4 地址 127.53.0.1 prefixlen 8 bdaddr 127.53.0.1 inet4 地址 127.53.1.1 prefixlen 8 bdaddr 127.53.1.1 %
... …
如果源 IP 地址为 18.23.54.78,目标 IP 地址为 12.67.24.89,则仅嗅探 ICMP 数据包的过滤器表达式是什么?过滤器顺序必须首先从协议名称开始,然后是源 IP,然后是目标 IP。
我尝试使用以下表达式:
tcpdump icmp src net 18.23.54.78 dest net 12.67.24.89
Run Code Online (Sandbox Code Playgroud)
但这没有用。我可以帮忙吗?
谢谢你!
如何监听所有FreeBSD
接口tcpdump
> tcpdump -i any
tcpdump: any: No such device exists
(BIOCSETIF failed: Device not configured)
Run Code Online (Sandbox Code Playgroud)
(我想听ICMP)