常见网络工具的使用
常见网络工具的使用
网络检测工具
1. ping工具
ping
用于确定本地主机是否能与另一台主机成功交换(发送与接收)数据包,再根据返回的信息,就可以推断TCP/IP
参数是否设置正确,以及运行是否正常、网络是否通畅等。Ping命令主要作用为
(1)用来检测网络的连通情况和分析网络速度;
(2)根据域名得到服务器IP;
(3)根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量。
linux安装(默认就有)
1 | yum install -y iputils |
使用方式
1 | ping -v 查看其它参数命令。 |
2. tcping 工具
官网下载
1 | 去官网下载tcping工具(根据自身系统选择32位/64位) |
linux安装
1 | yum istall -y tcping |
用法:
1 | 名称 |
示例:
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 | nmap server2.com |
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 | cat nmptest.txt |
接下来运行带“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 | 10.启用Nmap的操作系统探测功能 |
13.找出网络中的在线主机
使用“**-sP**”选项,我们可以简单的检测网络中有哪些在线主机,该选项会跳过端口扫描和其他一些检测。
1 | nmap -sP 192.168.0.* |
DNS域名解析工具
1. dig工具
dig
是不错的排查域名解析错误的工具
linux安装
1 | yum install -y bind-utils |
使用方式
1 | dig baidu.com |
2. nslookup 工具
下载和dig一样
1 | yum install -y bind-utils |
使用方式
1 | nslookup [-qt=类型] 目标域名 指定的DNS服务器IP或域名 |
1 | nslookup -qt=mx baidu.com |
看看,nslookup把服务器的名称和地址都给出来了,注意preference就是前面所说的优先级,该数值越小则优先级越高。 我再看看名字服务器记录是怎么样的。
看起来和MX记录的格式差不多,一般情况下服务器会同时返回对应的地址。不过也有不返回的情况。 在这里我希望大家注意一行显示“Non-suthoritativeanswer(非权威应答):”,这一行在前面的例子中都没有显示过。它的出现代表这个结果是从服务器的缓存中得到的。所以提醒你这不是一个授权的答案。
检查域名的缓存时间 检查域名的缓存时间需要我们使用一个新的参数:-d 格式如下:
nslookup –d [其他的参数] 目标域名 [指定的服务器地址]
1 | nslookup -d4 baidu.com 8.8.4.4 |
3. host工具
host命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常。
语法
1 | 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; |
示例:
- 要显示主机名为 baidu.com 的主机地址,请输入:
1 | host baidu.com |
- 要显示域名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 |
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 | yum install -y traceroute |
在大多数情况下,我们会在linux主机系统下,直接执行命令行:
1 | traceroute 主机名/域名 |
命令参数
1 | traceroute[参数][主机] |
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这台服务器,就可以抓到包了。
- 本文标题:常见网络工具的使用
- 本文作者:yichen
- 本文链接:https://yc6.cool/2020/08/03/常见网络工具的使用/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
1.sed的常用命令的使用
2.linux根下目录文件介绍
3.vim的使用
4.linux中丢失grub.cfg引导文件修复
5.linux系统管理
6.linux磁盘管理
7.磁盘命令lvm
8.linux软件管理