Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:


A、内核参数,B、防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping。

A、内核参数

[root@centos7 ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all 0 //(0表示允许,1表示禁止)。

或者echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_all

但上面配置的这种方式只是临时的,只对当前会话有用,当重启之后,就恢复了。长期生效,在以后的重启后都能够使服务器的ping不能够应答。配置方式如下,在/etc/sysctl.conf文件中增加以下命令行:net.ipv4.icmp_echo_ignore_all = 1,或echo net.ipv4.icmp_echo_ignore_all=1 >> /etc/sysctl.conf生效sysctl -p。

B、防火墙(注:此处的方法的前提是内核配置是默认值,也就是没有禁止Ping) 这里以Iptables防火墙为例。

允许PING设置

检测版本iptables -V

iptables -A INPUT -p icmp –icmp-type echo-request -j ACCEPT

iptables -A OUTPUT -p icmp –icmp-type echo-reply -j ACCEPT 或者也可以临时停止防火墙操作的。 service iptables stop

禁止PING设置

把刚才那两条规则删除掉即可,删除通过-D来删除,新增是通过-A来新增。

iptables -A INPUT -p icmp –icmp-type 8 -s 0/0 -j DROP

注:–icmp-type 8, echo request 表示回显请求(ping请求)

0/0 表示所有 IP

恢复

[root@localhost ~]# iptables -D OUTPUT -p icmp –icmp-type echo-reply -j DROP

[root@localhost ~]# iptables -D INPUT -p icmp –icmp-type echo-request -j DROP

如果Linux中已经安装了CSF防火墙。可以使用CSF禁用传入ping很容易。请按以下步骤操作。

注:如果未安装CSF防火墙,需要先安装才能执行以下命令。

(1),修改csf配置文件(/etc/csf/csf,conf)。增加以下命令

(1),修改csf配置文件(/etc/csf/csf,conf)。增加以下命令

ICMP_IN = “0”

(2),修改完之后,保存。接着重新启动 CSF 和 LFD 以更新更改。

[root@localhost ~]#/etc/init.d/csf restart

[root@localhost ~]#/etc/init.d/lfd restart

[root@localhost ~]#csf -r

csf 是国外一家小公司开发的 linux 系统免费防火墙,它基于 iptables 工作,能有效缓解站群服务器压力,具有自动遮蔽暴力破解密码 IP、管理开放埠、免疫轻量 DDos 和 CC 等等功能,同时,安装和使用也极为简便,在我们常用的 DA 和 CP 面板还有图形化操作介面,也支援个人普通使用者安装于 LNMP 环境下使用。

执行以下步骤安装:

rm -fv csf.tgz

wget http://www.configserver.com/free/csf.tgz

tar -xzf csf.tgz

cd csf

sh install.sh

检测 iptalbes 模组:

perl /etc/csf/csftest.pl

如果之前安装了 APF,请解除安装 sh /etc/csf/remove_apf_bfd.sh

执行完毕,您的 csf 就安装上了。以上的安装步骤适用于 LNMP 环境以及 DA、CP 面板下。

LNMP 环境下可能需要依赖包:yum install perl-libwww-perl perl iptables

linux ping命令:用于测试网络主机ICMP请求回应
ping选项

  ping

    -c # # 执行次数

    -w # #测试执行时长

    -s # 指定ping包大小单位字节

    -f # 尽所能每秒钟ping最多的数据包,可以当ping攻击使用

ping测试某网段在线主机脚本

!/bin/bash

net=”192.168.5″
for i in {1..254};do
{ if ping -c 1 -w 1 $net.$i &> /dev/null ;then
echo $net.$i >> /tmp/ip.txt
fi; } & # { }&把任务放入后台执行,相当于执行了并行任务,提高效率
done
wait # wait可以让后台任务执行结束后退出
sort -nt’.’ -k1,1 -k2,2 -k3,3 -k4,4 /tmp/ip.txt >>/tmp/ip_sort.txt #按ip地址大小顺序排序

备注:通过并行任务执行ping测试,测试192.168.5.X网段的在线主机,并将在线主机放入/tmp/ip.txt文件,然后进行排序,将排序后的结果放到/tmp/ip_sort.txt文件
补充window ping命令的使用
ping ip,测试网络的连通情况
直接ping ip地址或网关,min/max/avg统计最短/最长/平均耗时

icmp_seq=1 packets顺序号

bytes=64;time<1ms;TTL=64 这些是什么意思。

bytes值:数据包大小,也就是字节。

time值:响应时间,这个时间越小,说明你连接这个地址速度越快。

TTL值:Time To Live,表示DNS记录在DNS服务器上存在的时间,它是IP协议包的一个值,告诉路由器该数据包何时需要被丢弃。可以通过Ping返回的TTL值大小,粗略地判断目标系统类型是Windows系列还是UNIX/Linux系列。

默认情况下,Linux系统的TTL值为64或255,WindowsNT/2000/XP系统的TTL值为128,Windows98系统的TTL值为32,UNIX主机的TTL值为255。

因此一般TTL值:

100~130ms之间,Windows系统 ;

240~255ms之间,UNIX/Linux系统。

ping -t的使用

不间断地Ping 指定计算机,直到管理员中断,Ctrl+c终止

ping -a的使用

ping -a ip解析计算机名与NetBios名。就是可以通过ping它的ip地址,可以解析出主机名。

ping -n的使用

在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如想测试发送10个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知。

ping -l size的使用

-l size:发送size指定大小的到目标主机的数据包。

默认的情况下Windows的ping发送的数据包大小为32byte,最大能发送65500byte。当一次发送的数据包大于或等于65500byte时,将可能导致接收方计算机宕机。所以微软限制了这一数值;这个参数配合其它参数以后危害非常强大,比如攻击者可以结合-t参数实施DOS攻击。(所以它具有危险性,不要轻易向别人计算机使用)。

例如:ping -l 65500 -t 10.133.137.33

ping -r count的使用

在“记录路由”字段中记录传出和返回数据包的路由,探测经过的路由个数,但最多只能跟踪到9个路由。

ping -n 1 -r 9 202.102.224.22 (发送一个数据包,最多记录9个路由)

批量Ping网段
对于一个网段ip地址众多,在命令行窗口输入:

for /L %D in (1,1,255) do ping 10.168.1.%D

代码中的这个(1,1,255)就是网段起与始,就是检测网段192.168.1.1到192.168.1.255之间的所有的ip地址,每次逐增1,直接到1到255这255个ip检测完为止。

for /L … in …

/L可以写成小写字母的/l,为了和数字1区分,建议用大写的字母L。
/L表示迭代变量,在给定的起点、步长、终点迭代数据。
for命令的格式:for /L %%Variable in (Start#,Step#,End#) do Command
使用迭代变量设置起始值 (Start#),然后逐步执行一组范围的值,直到该值超过所设置的终止值 (End#)。/L 将通过对 Start# 与 End# 进行比较来执行迭代变量。如果 Start# 小于 End#,就会执行该命令。

显示当前目录及子目录下的所有以.exe结尾的文件名
@echo off
for /r %%i in (*.exe) do @echo %%i
pause
显示当前目录及子目录的所有目录名
@echo off
for /r %%i in (.) do @echo %%i
pause
/d只会检索当前目录下的所有目录,但/r可以以递归的方式检索所有目录

发表回复