常见网络工具的使用

常见网络工具的使用

网络检测工具

1. ping工具

ping 用于确定本地主机是否能与另一台主机成功交换(发送与接收)数据包,再根据返回的信息,就可以推断TCP/IP参数是否设置正确,以及运行是否正常、网络是否通畅等。Ping命令主要作用为

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

(2)根据域名得到服务器IP;

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

linux安装(默认就有)

1
yum install -y iputils

使用方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ping -v 查看其它参数命令。
ping baidu.com
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=160 ms
bytes: 表示数据包大小,也就是字节。数据包不能太大。要不然服务器会认为是工具。

icmp_seq: 表示发到对方的第几个包。

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系统。

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

ping + ip: 查看某一个ip地址是否能够连通,如: ping 114.80.67.168

2. tcping 工具

官网下载

1
2
去官网下载tcping工具(根据自身系统选择32位/64位)
https://elifulkerson.com/projects/tcping.php

linux安装

1
yum istall -y tcping

用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
名称
tcping-通过建立与网络主机的连接,在tcp上模拟“ ping”。
测量系统达到[SYN],接收目标的[SYN] [ACK]和发送[ACK]的时间。请注意,
不包括最后一个ACK的传输时间-仅包含发送到发送端的时间。

提要
tcping [-tdsvf46] [-i间隔] [-n次] [-w间隔] [-bn] [-r次] [-j深度] [--tee文件名] [-f]目标[端口]

描述
tcping测量在其自身与远程主机之间执行TCP 3向握手(SYN,SYN / ACK,ACK)所需的时间。
不包括传出最终ACK的传输时间,仅包括将其丢弃所需的(最短)时间
电线在近端。这允许(SYN,SYN / ACK)的传播时间近似
等于ICMP(请求,响应)的传播时间。

选项
-4优选使用IPv4

-6
优选

连续使用IPv6 -t ping,直到通过control-c

-n count 发送_count_ pings停止,然后停止。缺省
值为4。

-i interval在两次ping之间等待_interval_秒。默认值1.允许使用小数。

-w interval
等待_interval_秒以获取响应。默认值2。允许使用小数。

-d在每个输出行上包括日期和时间

-f除了建立连接外,还强制发送至少一个字节。

-g count
在_count_次ping失败后放弃。

-b类型
启用蜂鸣声。
“ -b 1”将“向下”发出哔声。如果主机启动了,但现在没有启动,则发出哔声。
“ -b 2”将“向上”发出哔声。如果主机掉线了,但现在却掉线了,请发出哔声。
“ -b 3”将在“更改”时发出蜂鸣声。如果主机是一种方式,但现在是另一种方式,则发出哔声。
“ -b 4”将“总是”发出哔声。

-c仅在更改后的状态下显示输出

-r count
每次计数时,如果主机更改,我们将为主机执行新的DNS查找。

-s成功后立即退出。

-v打印版本并退出。

-j计算抖动。抖动定义为上次响应时间与历史平均值之间的差。

-js depth
与-j一样,但指定了可选的_depth_参数,计算抖动。如果指定了_depth_,则tcping将
使用先前的_depth_值来计算滚动平均值。

--tee _filename_
复制输出到指定的_filename_。Windows仍不能依赖于具有有用的命令行
环境。* nix伙计们,不要嘲笑我。

- 附加
使用--tee时,请追加而不是覆盖输出文件。

--file
将“目标”选项视为文件名。该文件成为目标源,
逐行循环。某些选项在此模式下不起作用,并且不会保留统计信息。


目标
DNS名称,IP地址或(在“ http”模式下)URL。
不要在“ http”模式下指定协议(“ http://”)。也不要通过“:port”语法指定服务器端口。
例如:“ tcping http://www.elifulkerson.com:8080/index.html”将失败
使用样式:“ tcping www.elifulkerson.com/index.html 8080” 代替。

港口
一个数字TCP端口1-65535。如果未指定,则默认为80

。--header
包含带有命令行参数和时间戳的标头。如果使用--tee,则暗含标题。

HTTP模式选项
-h使用“ http”模式。在http模式下,我们将尝试获取指定的文档并返回其他值,包括
文档的大小,http响应代码,kbit / s。
-u在“ http”模式下,在每个输出行上包括目标URL。

--post在http模式下使用POST而不是GET。
--head在http模式下使用HEAD而不是GET。
--get简写为一致性起见调用“ http”模式。

--proxy-server _proxyserver_
连接到_proxyserver_以请求URL,而不是URL本身指示的服务器。
--proxy-port _port_
指定代理服务器的数字TCP端口。默认值为
3128。--proxy-credentials username:password
指定作为“ Proxy-Authorization:Basic”标头发送的username:password对。


返回值
如果所有ping成功,则tcping返回0;如果ping零成功,则返回1;对于混合结果,返回2。
错误

/要求请通过http://www.elifulkerson.com上的联系信息向作者报告错误和功能要求

可用性
tcping可在http://www.elifulkerson.com/projects/tcping.php上获得

示例:

1
tcping server2.com 80  #测试80端口是否打开。

3. telnet 工具

Telnet是进行远程登录的标准协议和主要方式它为用户提供了在本地计算机上完成远程主机工作的能力。可以用telnet命令来测试端口号是否正常打开还是关闭状态。

安装

1
yum install xinetd telnet telnet-server -y

输入telnet测试端口命令: telnet IP 端口 或者 telnet 域名–端口–回车

4. nmap 工具

Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具。Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口。它会扫描远程在线主机,该主机的操作系统,包过滤器和开放的端口。

安装

1
yum install -y nmap

1. 用主机名和IP地址扫描系统

扫描特定的端口

1
nmap -p 80 server2.com

扫描系统找出该系统上所有开放的端口,服务和MAC地址

1
2
3
nmap server2.com
或者
nmap 192.168.224.12

aUzOr8.png

2. 扫描使用-v 选项

使用“ -v “选项后给出了远程机器更详细的信息。

1
nmap -v server2.com

3.扫描多台主机

1
nmap 192.168.224.12 baidu.com

4.扫描整个子网

使用*通配符来扫描整个子网或某个范围的IP地址。

1
nmap 192.168.0.*

5.使用ip地址的最后一个字节扫描多台服务器

1
nmap 192.168.224.11,12,10

6.从一个文件中扫描主机列表

1
2
3
4
5
cat nmptest.txt
localhot
server2.com
baidu.com
192.168.224.12

接下来运行带“iL” 选项的nmap命令来扫描文件中列出的所有IP地址

1
nmap -iL nmaptest.txt

7.扫描一个IP地址范围

1
nmap 192.168.224.101-110

8.排除一些远程主机后再扫描

在执行全网扫描或用通配符扫描时你可以使用“-exclude”选项来排除某些你不想要扫描的主机。

1
nmap 192.168.224.* --exclude 192.168.224.100

9.扫描操作系统信息和路由跟踪

检测远程主机上运行的操作系统和版本。为了启用操作系统和版本检测,脚本扫描和路由跟踪功能,我们可以使用NMAP的“**-A**“选项。

1
nmap -A 192.168.224.12

会显示出远程主机操作系统的TCP / IP协议指纹,并且更加具体的显示出远程主机上的端口和服务。

1
2
3
10.启用Nmap的操作系统探测功能
使用选项“-O”和“-osscan-guess”也帮助探测操作系统信息。
nmap -O server2.com

13.找出网络中的在线主机

使用“**-sP**”选项,我们可以简单的检测网络中有哪些在线主机,该选项会跳过端口扫描和其他一些检测。

1
nmap -sP 192.168.0.*

DNS域名解析工具

1. dig工具

dig 是不错的排查域名解析错误的工具

linux安装

1
yum install -y bind-utils

使用方式

1
2
3
dig baidu.com
或者
dig @114.114.114.114 baidu.com #指定114的域名DNS

2. nslookup 工具

下载和dig一样

1
yum install -y bind-utils

使用方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
nslookup [-qt=类型] 目标域名 指定的DNS服务器IP或域名

nslookup baidu.com
或者
nslookup baidu.com 8.8.4.4 #指定谷歌的域名DNS

加参数的方式好像linux下面不行,只能windows上面才可以。
前面两个命令没有加任何参数,所以默认情况下nslookup查询的是A类型的记录。如果我们配置了其他类型的记录希望看到解析是否正常。这时候ping就无能为力了。比如我们配置了MX记录,但是邮件服务器只能发信不能收信,到底是域名解析问题还是其他的问题Ping命令的检查只能让你误入歧途。nslookup 这时候可以模拟你的其他遇见服务器进行域名解析的情况。我们需要在nslookup上加上适当的参数。指定查询记录类型的指令格式如下:
nslookup –qt=类型 目标域名  注意qt必须小写。 
类型可以是一下字符,不区分大小写: 
A 地址记录(Ipv4)  AAAA 地址记录(Ipv6)  AFSDB Andrew文件系统数据库服务器记录(不懂) 
ATMA ATM地址记录(不是自动提款机)  CNAME 别名记录  HINFO 硬件配置记录,包括CPU、操作系统信息  ISDN 域名对应的ISDN号码  MB 存放指定邮箱的服务器  MG 邮件组记录  
MINFO 邮件组和邮箱的信息记录 MR 改名的邮箱记录  MX 邮件服务器记录 
NS 名字服务器记录  PTR 反向记录(从IP地址解释域名)  RP 负责人记录  RT 路由穿透记录(不懂)  SRV TCP服务器信息记录(将有大用处)  TXT 域名对应的文本信息  X25 域名对应的X.25地址记录 看看baidu.com的邮件服务器记录吧。
1
nslookup -qt=mx baidu.com

aa9TPJ.png

看看,nslookup把服务器的名称和地址都给出来了,注意preference就是前面所说的优先级,该数值越小则优先级越高。  我再看看名字服务器记录是怎么样的。

看起来和MX记录的格式差不多,一般情况下服务器会同时返回对应的地址。不过也有不返回的情况。  在这里我希望大家注意一行显示“Non-suthoritativeanswer(非权威应答):”,这一行在前面的例子中都没有显示过。它的出现代表这个结果是从服务器的缓存中得到的。所以提醒你这不是一个授权的答案。

检查域名的缓存时间  检查域名的缓存时间需要我们使用一个新的参数:-d  格式如下:

 nslookup –d [其他的参数] 目标域名 [指定的服务器地址]

1
nslookup -d4 baidu.com 8.8.4.4

3. host工具

host命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常。

语法

1
2
3
4
host 选项  参数

参数:
主机:指定要查询信息的主机信息。

选项

选项 描述
-a 显示详细的DNS信息;
-c<类型> 指定查询类型,默认值为“IN“;CHAOS HESIOD ANY *通配符
-C 查询指定主机的完整的SOA记录;
-r 在查询域名时,不使用递归的查询方式;
-t<类型> 指定查询的域名信息类型;分别有A CNAME HINFO KEY MINFO MX NS PTR SIG SOA TXT UIFO WKS
-v 显示指令执行的详细信息;
-w 如果域名服务器没有给出应答信息,则总是等待,直到域名服务器给出应答;
-W<时间> 指定域名查询的最长时间,如果在指定时间内域名服务器没有给出应答信息,则退出指令;
-4 使用IPv4;
-6 使用IPv6;

示例:

  1. 要显示主机名为 baidu.com 的主机地址,请输入:
1
2
3
host baidu.com
详细信息
host -a baidu.com
  1. 要显示域名baidu.com的详细的mx记录:
1
host -a -t mx baidu.com

路由跟踪查询工具

1. tracert 工具(windows)

Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP数据包访问目标所采取的路径。

tracert命令通常用来检测故障点的位置。

Tracert 命令使用用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由.其命令格式如下:

1
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name

参数说明

-d 指定不将地址解析为计算机名.

-h maximum_hops 指定搜索目标的最大跃点数.

-j host-list 与主机列表一起的松散源路由(仅适用于IPv4),指定沿host-list的稀疏源路由列表序进行转发。host-list是以空格隔开的多个路由器IP地址,最多9个。
  
  -w timeout 等待每个回复的超时时间(以毫秒为单位).

-R 跟踪往返行程路径(仅适用于 IPv6).

-S srcaddr 要使用的源地址(仅适用于 IPv6).

-4 强制使用 IPv4.

-6 强制使用 IPv6.

示例:

1
tracert baidu.com

aaCCRA.png

tracert –d 目标ip地址,加-d参数,该命令就不解析主机名了,再返回结果中就没有主机名的信息了。

1
tracert  -d 192.168.224.2

tracert –h 跳数 目标ip地址,目标地址的跳数大于指定的跳数只显示指定跳数信息。

1
tracert -h 6 baidu.com  //相当于最多跟踪6次路由到达目标地址。

2. traceroute (linux)

通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

安装

1
2
3
yum install -y traceroute

traceroute --help #查看命令使用信息

在大多数情况下,我们会在linux主机系统下,直接执行命令行:

1
traceroute 主机名/域名

命令参数

1
2
3
4
5
traceroute[参数][主机]

traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。

具体参数格式:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

3.命令参数:

-d 使用Socket层级的排错功能。

-f 设置第一个检测数据包的存活数值TTL的大小。

-F 设置勿离断位。

-g 设置来源路由网关,最多可设置8个。

-i 使用指定的网络界面送出数据包。

-I 使用ICMP回应取代UDP资料信息。

-m 设置检测数据包的最大存活数值TTL的大小。

-n 直接使用IP地址而非主机名称。

-p 设置UDP传输协议的通信端口。

-r 忽略普通的Routing Table,直接将数据包送到远端主机上。

-s 设置本地主机送出数据包的IP地址。

-t 设置检测数据包的TOS数值。

-v 详细显示指令的执行过程。

-w 设置等待远端主机回报的时间。

-x 开启或关闭数据包的正确性检验。

4.使用实例:

实例1:traceroute 用法简单、最常用的用法

1
traceroute baidu.com

说明:

记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 baidu.com ,表示向每个网关发送4个数据包。

有时我们traceroute(路由跟踪) 一台主机时,会看到有一些行是 以*\ 星号**表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据。

如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。

实例2:跳数设置

命令:

1
traceroute -m 10 www.baidu.com

输出:10行。

抓包工具

linux下

1. tcpdump

安装

1
yum install -y tcpdump

1.作用:

(1)捕获网络协议包

(2)分析网络协议包

2.分类:

(1)命令行工具,如tcpdump

(2)图像界面工具,wireshark

3.tcpdump命令行工具的使用

3.1格式:tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ] [ -s snaplen ] [ -w file ] [ expression ]

3.2选项分类

抓包选项

-c:指定要抓取的包数量

-i interface:指定tcpdump需要监听的接口,-I 后面直接跟网卡名即可,如-I ens33

-n:对地址以数字方式显式,否则显式为主机名

-nn:除了-n的作用外,还把端口显示为数值

输出选项

-e:输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。

-q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。

-X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。

-XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。

-v:当分析和打印的时候,产生详细的输出。

-vv:产生比-v更详细的输出。

-vvv:产生比-vv更详细的输出

其他功能选项

-D:列出可用于抓包的接口

-F:从文件中读取抓包的表达式

-w:将抓包数据输出到文件中而不是标准输出,如-w node1.cap

-r:从给定的数据包文件中读取数据。如tcmdump -r node1.cap

4.tcpdump的表达式

tcpdump的表达式由一个或多个”单元”组成,每个单元一般包含ID的修饰符和一个ID(数字或名称)。有三种修饰符:

type:指定ID的类型。

可以给定的值有host/net/port/portrange。例如”host foo”,”net 128.3”,”port 20”,”portrange 6000-6008”。默认的type为host。

dir:指定ID的方向。

可以给定的值包括src/dst/src or dst/src and dst,默认为src or dst。例如,”src foo”表示源主机为foo的数据包,”dst net 128.3”表示目标网络为128.3的数据包,”src or dst port 22”表示源或目的端口为22的数据包。

proto:通过给定协议限定匹配的数据包类型。

常用的协议有tcp/udp/arp/ip/ether/icmp等,若未给定协议类型,则匹配所有可能的类型。例如”tcp port 21”,”udp portrange 7000-7009”。

所以,一个基本的表达式单元格式为”proto dir type ID”

tcpdump [**选项] [not] proto dir type 注意顺序不能改变**

除了使用修饰符和ID组成的表达式单元,还有关键字表达式单元:gateway,broadcast,less,greater以及算术表达式。

表达式单元之间可以使用操作符” and / && / or / || / not / ! “进行连接,从而组成复杂的条件表达式。如”host foo and not port ftp and not port ftp-data”,这表示筛选的数据包要满足”主机为foo且端口不是ftp(端口21)和ftp-data(端口20)的包”,常用端口和名字的对应关系可在linux系统中的/etc/service文件中找到。

另外,同样的修饰符可省略,如”tcp dst port ftp or ftp-data or domain”与”tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain”意义相同,都表示包的协议为tcp且目的端口为ftp或ftp-data或domain(端口53)。

使用括号”()”可以改变表达式的优先级,但需要注意的是括号会被shell解释,所以应该使用反斜线”"转义为”()”,在需要的时候,还需要包围在引号中。

5.tcpdump使用案例

5.1抓取离开或进入主机的数据包

1
tcpdump -i ens33 -nn host server2.com

显示TCP包信息

1
tcpdump

显示指定数量包

1
tcpdump -c 20

精简显示

1
tcpdump -c 10  -q  //精简模式显示 10个包

对ens33网卡的ping 进行抓包。

1
tcpdump -n icmp -i eth0

这时候用别的服务器来ping这台服务器,就可以抓到包了。

aaCAqf.png

评论


:D 一言句子获取中...

加载中,最新评论有1分钟缓存...