知识点讲解
net.ipv4.icmp_echo_ignore_all是什么?
net.ipv4.icmp_echo_ignore_all 是一个在 Linux 操作系统中用于控制 ICMP (Internet Control Message Protocol) 请求响应行为的内核参数。它是网络配置的一部分,特别影响到 ICMP 协议,通常用于 ping 命令。
为什么会影响 ICMP 导致无法 ping 通?
当 net.ipv4.icmp_echo_ignore_all 设置为 1 时,系统会忽略所有 ICMP 回声请求(即 ping 请求)。这意味着,如果你从另一台计备尝试 ping 这台设置了 net.ipv4.icmp_echo_ignore_all=1 的机器,你将不会收到回应,从而导致无法 ping 通。
如何查询和修改这个参数?
查询
要查询 net.ipv4.icmp_echo_ignore_all 的当前值,可以使用 sysctl 命令:
sysctl net.ipv4.icmp_echo_ignore_all
临时修改
要临时修改此参数(仅在当前会话或直到下次系统重启有效),可以使用以下命令:
sysctl -w net.ipv4.icmp_echo_ignore_all=1
这将设置 net.ipv4.icmp_echo_ignore_all 为 1。将 1 更改为 0 以恢复默认行为。其实还有种方法:众所周知proc是虚拟文件系统 在下面有个子目录sys可以查询并修改内核参数(见附件)
永久修改
要永久修改此参数,需要编辑 /etc/sysctl.conf 文件或在 /etc/sysctl.d/ 目录中创建一个新文件。在文件中添加或修改以下行:
net.ipv4.icmp_echo_ignore_all=1
然后执行 sysctl -p 命令来应用更改。
问题复现
测试net.ipv4.icmp_echo_ignore_all等于1时
无法ping通并且抓包查看无回包
修改为0(禁用)测试正常