Ping、arp、tracert、tcpping

一、ping的开启和关闭

在内核中设置

1,允许PING配置

临时

echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all

永久

echo net.ipv4.icmp_echo_ignore_all=0 >> /etc/sysctl.conf
sysctl -p # 执行这条命令使更改后的 /etc/sysctl.conf 配置文件生效

注意:如果 /etc/sysctl.conf 配置文件里已经有 net.ipv4.icmp_echo_ignore_all 字段了,那么直接用 vim 进去更改对应的值即可。

2,禁止PING配置

临时

echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all

永久

echo net.ipv4.icmp_echo_ignore_all=1 >> /etc/sysctl.conf
sysctl -p  # 执行这条命令使更改后的 /etc/sysctl.conf 配置文件生效

注意:如果 /etc/sysctl.conf 配置文件里已经有 net.ipv4.icmp_echo_ignore_all 字段了,那么直接用 vim 进去更改对应的值即可。

 1、允许PING配置

注:使用以下方法的前提是内核配置是默认值,也就是内核没有禁ping

   iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
   iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

2、禁止PING配置

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

      --icmp-type 8 echo request  表示回显请求(ping请求)

      0/0 表示所有 IP

二、Ping命令的7个基础用法

在网络中ping是一个十分强大的TCP/IP工具。它的作用主要为:

1、用来检测网络的连通情况和分析网络速度

2、根据域名得到服务器IP

3、根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量。

类如这种,直接ping ip地址或网关,ping通会显示出以上数据,有朋友可能会问,bytes=32;time<1ms;TTL=128 这些是什么意思。

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

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

TTL值:Time To Live,表示DNS记录在DNS服务器上存在的时间,它是IP协议包的一个值,告诉路由器该数据包何时需要被丢弃。

我们可以通过Ping返回的TTL值大小,粗略地判断目标系统类型是Windows系列还是UNIX/Linux系列。

因此一般TTL值:

100~130ms之间,Windows系统 ;

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

当然,我们今天主要了解并不是这些,而是ping的其它参考。

ping命令除了直接ping网络的ip地址,验证网络畅通和速度之外,它还有这些用法。

ping -t的使用

不间断地Ping指定计算机,直到管理员中断。

ping -a解析主机名

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

ping -n的使用

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

从以上我就可以知道在给47.93.187.142发送10个数据包的过程当中,返回了10个,没有丢失,这10个数据包当中返回速度最快为32ms,最慢为55ms,平均速度为37ms。说明我的网络良好。

如果对于一些不好的网络,比如监控系统中非常卡顿,这样测试,返回的结果可能会显示出丢失出一部分,如果丢失的比较多的话,那么就说明网络不好,可以很直观的判断出网络的情况。

ping -l size的使用(ping 大包容易发现丢包)

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

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

ping -n  5  -l  65500  211.84.7.46

会连续对IP地址执行ping命令,直到被用户以Ctrl+C中断。

这样它就会不停的向211.84.7.46计算机发送大小为65500byt的数据包,如果你只有一台计算机也许没有什么效果,但如果有很多计算机那么就可以使对方完全瘫痪,网络严重堵塞,由此可见威力非同小可。

ping -r count 的使用

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

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

可以跟踪ip地址所经过的9个路由,在检查故障时可以快速定位。

如何同时批量ping多个ip地址

1、ping一个网段

对于一个网段ip地址众多,如果单个检测实在麻烦,那么我们可以直接批量ping网段检测,那个ip地址出了问题,一目了然。

先看代码,直接在命令行窗口输入:

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

IP地址段修改成你要检查的IP地址段。

当输入批量命令后,那么它就自动把网段内所有的ip地址都ping完为止。

那么这段“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检测完为止。

2、ping网段升级

上面的命令虽然能批量ping 地址,但是上面代码在命令行窗口显示数量多的时候看起来也很麻烦,那么再升级一下,用下面的代码。

for /L %D in (1,1,255) do ping -n 10.168.1.%D >>a.txt 

说明,ip地址是变的,你填你需要测的ip网段就行,a.txt也是变的,可以自已设置名称。

这样就会把结果导入的a.txt文件中,全部IP检查完成后打开a.txt搜索“TTL=”包含它的就是通的地址,没有包含“TTL=”的地址就是不通的。如下图

打开后,就直接搜索没TTL的就可以了。

3、ping网段命令再升级

很多人要说了这样还要搜索,也不是太方便,需要这样查来查去,那么我们再看下,是否有更简便的方法呢?第一监控之前就发过。

答案肯定是有的,我们来看代码。

for /l %D in (1,1,255) do (ping 192.168.1.%D -n 1 && echo 192.168.1.%D>>ok.txt || echo 192.168.1.%D >>no.txt)

这段代码会将ping通的IP和不通的IP分别放到两个文件里面,这样是不是很方便啦,如下图:

4、ping网段命令终极方法

上面提到的三种代码提到的都是针对同一个网段内ip地址批量检测,那么肯定在实际项目中,也可能存不同网段的ip地址需要同时检测,那么怎么办呢?

也有方法,可以把没有规划的ip地址同时批量检测,我们来看下代码:

for /f %D in (ip.txt) do (ping %D -n 1 && echo %i>>ok.txt || echo %D >>no.txt)

看见没有多了一个ip.txt文件,这个文件是要你自己准备的哦,把你ping的地址写到这个文件里面,同时可以ping 1000个ip地址以上,代码会自己读取这个文件里面的ip地址,并且把结果放到两个文件里面去。这里就不给大家截图了很容易理解。

这里面补充下:

上面代码生成的文件在你命令行默认目录下。也就是说如果你的命令行状态是:

'c:windowssystem32>'那么生成的文件就在系统的system32目录下面。如果是'c:'那么文件就在C盘根目录下。这个可以根据自己的实际情况进行调整。

三、tcpping

测量到远程主机的网络延迟的一种常用方法是使用ping应用程序。该ping工具依赖 ICMP ECHO 请求和回复数据包来测量远程主机的往返延迟。但是,在某些情况下,ICMP 流量可能会被防火墙阻止,这使得该ping应用程序对于受限制的防火墙后面的主机毫无用处。在这种情况下,你将需要依赖使用 TCP/UDP 数据包的第 3 层测量工具,因为这些第 3 层数据包更有可能绕过常见的防火墙规则。

一种这样的第 3 层测量工具是tcpping. 为了测量延迟,tcpping利用所谓的半开放连接技术,基于 TCP 三路握手。也就是说,它通过端口号(默认为 80)向远程主机发送 TCP SYN 数据包。如果远程主机正在侦听该端口,它将以 TCP ACK 数据包响应。否则,它将以 TCP RST 数据包响应。无论哪种方式,tcpping都可以通过定时传出 SYN 数据包和传入 ACK(或 RST)数据包来测量远程主机的往返时间 (RTT) 延迟。

1、安装依赖 tcptraceroute

sudo apt-get install tcptraceroute

要在 CentOS 或 RHEL 上安装tcptraceroute,首先在你的系统上设置 RepoForge,然后运行:

sudo yum install tcptraceroute 

2、安装依赖 bc

使用的另一个工具tcpping是GNUbc,它预装在所有主要的 Linux 发行版上。但是,如果你tcpping在最小 Linux 运行时环境(例如Docker容器、AWS 最小映像 AMI)中运行,则bc可能不会预先安装。在这种情况下,你需要bc自己安装。

sudo apt-get install bc  
sudo yum install bc

源码安装

wget http://www.vdberg.org/~richard/tcpping   
cp tcpping /usr/bin   
chmod 755 tcpping

使用tcpping来衡量延迟

要使用 测量网络延迟tcpping,你可以使用以下格式。

tcpping [-d] [-c] [-r sec] [-x count] ipaddress [端口]  
  • -d: 在每个结果之前打印时间戳。

  • -c: 使用分列输出以便于解析。

  • -r:连续探测之间的间隔(以秒为单位)(默认为 1 秒)。

  • -x: 重复 n 次(默认无限制)。

  • [port]: 目标端口(默认为 80)

请注意,你需要 root 权限才能运行,tcpping因为它需要调用特权tcptraceroute命令。

对于任何开放 80 端口的目标 Web 服务器,你可以使用以下方法测量其 RTT 延迟tcpping

tcpping www.rumenz.com  
seq 0: tcp response from 42.194.162.109 (42.194.162.109) <syn,ack>  33.822 ms  
traceroute to rumenz.com (42.194.162.109), 255 hops max, 60 byte packets  
seq 1: tcp response from 42.194.162.109 (42.194.162.109) <syn,ack>  33.975 ms  
traceroute to rumenz.com (42.194.162.109), 255 hops max, 60 byte packets  
seq 2: tcp response from 42.194.162.109 (42.194.162.109) <syn,ack>  32.010 ms  

对于任意远程主机,在运行tcpping. 要检查远程 TCP 端口是否打开,你可以使用nc如下命令。

nc -vn <ip-address> <port-number> 

-t: 连续 TCPing ,直到使用 Ctrl+C 键停止

tcping -t 1.1.1.1 80 

-n 5: TCPing 5次后停止

-w 0.5: 设置超时时间为 0.5秒(1秒=1000毫秒),单位 秒 

-d:在每行返回信息中加入时间信息

-s: 当 TCPing 测试成功后(在超时时间以内返回 TCPing 延迟数据)自动停止 TCPing

-4: 优先 IPv4(如果一个域名有 IPv4 和 IPv6 解析,那么走 IPv4)

--file: TCPing 将逐行循环遍历文件内的 服务器IP/域名 信息(一行一个,支持端口,例如:1.1.1.1 443)

tcping --file rumenz.txt

四、arp命令工具

arp是地址解析协议,其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。

arp的命令一般有三个用法,就是查询显示、添加记录、与删除记录,做网络项目时经常会用到。

1、arp -a ,当你需要显示当期ip地址对应的mac地址时使用 

 当你需要了解你网络中设备对应的mac地址时,你可以使用arp地址进行显示,这个有利于我们可以清楚了解到ip地址对应的mac地址是哪台设备

2、arp -s ,当你需要手动添加或绑定一条arp记录时使用。

格式为“ARP+空格+-a+IP地址+MAC地址”;

在网络中,通常在办公网络或监控项目中,为了防止用户乱改ip地址或ip地址冲突,我们需要给ip地址绑定设备的mac地址。

绑定一条记录,然后用arp -a查询了ARP记录添加是否成功。

ARP -s 192.168.1.1 3c-22-3f-5d-f6-77

3、arp -d,当你觉得某条arp记录有问题时,可以删除。

四、tracert命令

tracert是路由跟踪命令,用于确定 IP 数据包访问目标所采取的路径。

在使用Tracert命令之前,我们先来简单地介绍一下它的语法。其中最简单也是最常用的命令格式为:

 例1、检测ip地址经过几个跃点

 

例2、检测网址经过几个跃点

例3、“tracert -d baidu.com”代表不将IP地址解析到主机名称

例4、“tracert -h 3 baidu.com”代表本次tracert搜索的最大跳数。

 这个就是查跟设备最近的几个连接点的问题,通常在网络问题中,先要排除前端跟设备直接连接的最近的几个设备是否有故障,如果这几个近点跟踪可以正常互通,那么问题可能就出现在后端。

例5、“tracert -w 6 baidu.com”代表tracert为每次回复所指定的毫秒数。

当网络很慢,或者很卡时,我们要检测是那个设备的反应速度比较慢,所以这里面可以设个标准值,例如上面是直接显示回复6ms以内的设备,超过6ms的设备不显示,就是反应比较慢的,这个数值可以根据情况设置。

内核参数设置二

posted @ 2020-05-05 11:32  凡人半睁眼  阅读(618)  评论(0编辑  收藏  举报