网站开发去哪学,网站维护说明,游戏ui设计,表格制作方法目录 一、ping1、命令参数#xff1a;2、示例-将当前的信息打印到一个文件中3、示例-结束进程 二、dig1、安装2、语法格式选项说明 3、示例4、示例-将当前的信息打印到一个文件中 三、nslookup1、安装2、语法格式选项说明 3、示例 四、tcpdump抓包1、安装2、语法格式#xff… 目录 一、ping1、命令参数2、示例-将当前的信息打印到一个文件中3、示例-结束进程 二、dig1、安装2、语法格式选项说明 3、示例4、示例-将当前的信息打印到一个文件中 三、nslookup1、安装2、语法格式选项说明 3、示例 四、tcpdump抓包1、安装2、语法格式选项说明 3 示例4、示例-将当前的信息打印到一个文件中 一、ping
1、命令参数
-d 使用Socket的SO_DEBUG功能。
-f 极限检测。大量且快速地送网络封包给一台机器看它的回应。
-n 只输出数值。
-q 不显示任何传送封包的信息只显示最后的结果。[这个以后能加入到脚本中作为ping结果判断的依据吗]
-r 忽略普通的Routing Table直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
-R 记录路由过程。:一般可以来测试网络链路在哪个环节有故障。
-v 详细显示指令的执行过程。
-c 数目在发送指定数目的包后停止。
-i 秒数设定间隔几秒送一个网络封包给一台机器预设值是一秒送一次。
-I 网络界面使用指定的网络界面送出数据包。
-l 前置载入设置在送出要求信息之前先行发出的数据包。
-p 范本样式设置填满数据包的范本样式。
-s 字节数指定发送的数据字节数预设值是56加上8字节的ICMP头一共是64ICMP数据字节。
-t 存活数值设置存活数值TTL的大小。
2、示例-将当前的信息打印到一个文件中
#!/bin/bash
ping 192.168.192.17 | awk { print $0\t strftime(%Y-%m-%d %H:%M:%S,systime()); fflush()} ./log/ping17.txt [roottest2 cmd]# tail -f ./log/ping17.txt
PING 192.168.192.17 (192.168.192.17) 56(84) bytes of data. 2024-02-26 15:40:11
64 bytes from 192.168.192.17: icmp_seq1 ttl63 time0.688 ms 2024-02-26 15:40:11
64 bytes from 192.168.192.17: icmp_seq2 ttl63 time0.478 ms 2024-02-26 15:40:12
64 bytes from 192.168.192.17: icmp_seq3 ttl63 time0.478 ms 2024-02-26 15:40:13
64 bytes from 192.168.192.17: icmp_seq4 ttl63 time0.329 ms 2024-02-26 15:40:14
64 bytes from 192.168.192.17: icmp_seq5 ttl63 time0.375 ms 2024-02-26 15:40:15
64 bytes from 192.168.192.17: icmp_seq6 ttl63 time0.336 ms 2024-02-26 15:40:16
64 bytes from 192.168.192.17: icmp_seq7 ttl63 time0.470 ms 2024-02-26 15:40:173、示例-结束进程
[roottest2 cmd]# ps -ef |grep ping
root 29252 1 0 15:40 pts/1 00:00:00 ping 192.168.192.17
root 29492 26727 0 15:40 pts/1 00:00:00 grep --colorauto ping
[roottest2 cmd]# kill -9 29252二、dig
1、安装
dig 命令用于执行网络 DNS 查找。dig 是一个用于查询 DNS 名称服务器的灵活工具。它执行DNS查找并显示从查询的名称服务器返回的答案。 安装bind-utils dig 和 host 工具位于 bind-utils 包中而 nslookup 通常默认安装在CentOS 7上。要安装 bind-utils运行以下命令 yum install bind-utils验证安装安装完成后可以通过运行以下命令来检查这些工具是否已正确安装
#对于 dig
dig -v
#对于 host
host -V
#对于 nslookup
nslookup -version2、语法格式
dig [server] [-b address] [-c class] [-f filename] [-k filename][-m] [-p port#] [-q name] [-t type] [-x addr] [-y [hmac:]name:ke选项说明
服务器地址 #指定进行域名解析的域名服务器
-b #指定使用本机的哪个IP地址向域名服务器发送域名查询请求
-f文件名称 #指定dig以批处理的方式运行
-P #指定域名服务器所使用端口号
-t类型 #指定要查询的DNS数据类型
-x #执行逆向域名查询
-4 #使用IPv4
-6 #使用IPv6
-h #显示帮助信息3、示例
只指定域名
[rootapp3-paas ~]# dig junshi.sinoeyes.com; DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.13 junshi.sinoeyes.com
;; global options: cmd
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 261
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;junshi.sinoeyes.com. IN A;; ANSWER SECTION:
junshi.sinoeyes.com. 38 IN CNAME gtm-cn-9lb3e55uy09.sinoeyes.com.
gtm-cn-9lb3e55uy09.sinoeyes.com. 38 IN A 59.46.134.61
gtm-cn-9lb3e55uy09.sinoeyes.com. 38 IN A 175.170.139.175;; Query time: 22 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: 三 3月 13 11:19:27 CST 2024
;; MSG SIZE rcvd: 113指定域名和域名解析服务器
[rootapp3-paas ~]# dig junshi.sinoeyes.com 192.168.100.5; DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.13 junshi.sinoeyes.com 192.168.100.5
;; global options: cmd
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 1446
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;junshi.sinoeyes.com. IN A;; ANSWER SECTION:
junshi.sinoeyes.com. 35 IN CNAME gtm-cn-9lb3e55uy09.sinoeyes.com.
gtm-cn-9lb3e55uy09.sinoeyes.com. 35 IN A 175.170.139.175
gtm-cn-9lb3e55uy09.sinoeyes.com. 35 IN A 59.46.134.61;; Query time: 22 msec
;; SERVER: 192.168.100.5#53(192.168.100.5)
;; WHEN: 三 3月 13 11:20:25 CST 2024
;; MSG SIZE rcvd: 1134、示例-将当前的信息打印到一个文件中
#!/bin/bash
export PATH$PATH:/usr/sbin
dig junshi.sinoeyes.com 192.168.100.5 short /root/cmd/log/dns5.txt
date /root/cmd/log/dns5.txt
echo ------------------- /root/cmd/log/dns5.txt三、nslookup
1、安装
nslookupname server lookup命令用于查询域名 DNS 信息的工具。nslookup 有两种工作模式即“交互模式”和“非交互模式”。
[rootCentOS7-1 ~]# yum install -y bind-utils2、语法格式
nslookup [-option] [name | -] [server]选项说明
-queryTYPE #设置查询类型
-timeoutNUMBER #设置等待响应的超时时间单位秒
-sil #不显示任何警告信息3、示例
[rootapp3-paas ~]# nslookup junshi.sinoeyes.com
Server: 114.114.114.114
Address: 114.114.114.114#53Non-authoritative answer:
junshi.sinoeyes.com canonical name gtm-cn-9lb3e55uy09.sinoeyes.com.
Name: gtm-cn-9lb3e55uy09.sinoeyes.com
Address: 59.46.134.61
Name: gtm-cn-9lb3e55uy09.sinoeyes.com
Address: 175.170.139.175四、tcpdump抓包
1、安装
yum install -y tcpdump2、语法格式
tcpdump [ -AdDefIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ][ -C file_size ] [ -G rotate_seconds ] [ -F file ][ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ][ -Q|-P in|out|inout ][ -r file ] [ -s snaplen ] [ -T type ] [ -w file ][ -W filecount ][ -E spiipaddr algo:secret,... ][ -y datalinktype ] [ -z postrotate-command ] [ -Z user ][ expression ]选项说明
-A 以ASCII格式打印出所有分组并将链路层的头最小化。
-c 在收到指定的数量的分组后tcpdump就会停止。
-C 在将一个原始分组写入文件之前检查文件当前的大小是否超过了参数file_size
中指定的大小。如果超过了指定大小则关闭当前文件然后在打开一个新的文件。参数 file_size
的单位是兆字节是1,000,000字节而不是1,048,576字节。
-d 将匹配信息包的代码以人们能够理解的汇编格式给出。
-dd 将匹配信息包的代码以c语言程序段的格式给出。
-ddd 将匹配信息包的代码以十进制的形式给出。
-D 打印出系统中所有可以用tcpdump截包的网络接口。
-e 在输出行打印出数据链路层的头部信息。
-E 用spiipaddr algo:secret解密那些以addr作为地址并且包含了安全参数索引值spi的IPsec ESP分组。
-f 将外部的Internet地址以数字的形式打印出来。
-F 从指定的文件中读取表达式忽略命令行中给出的表达式。
-i 指定监听的网络接口。
-l 使标准输出变为缓冲行形式。
-L 列出网络接口的已知数据链路。
-m 从文件module中导入SMI MIB模块定义。该参数可以被使用多次以导入多个MIB模块。
-M 如果tcp报文中存在TCP-MD5选项则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要详情可参考RFC 2385。
-n 不把网络地址转换成名字。
-N 不输出主机名中的域名部分。例如link.linux265.com 只输出link。
-t 在输出的每一行不打印时间戳。
-O 不运行分组分组匹配packet-matching代码优化程序。
-P 不将网络接口设置成混杂模式。
-q 快速输出。只输出较少的协议信息。
-r 从指定的文件中读取包(这些包一般通过-w选项产生)。
-S 将tcp的序列号以绝对值形式输出而不是相对值。
-s 从每个分组中读取最开始的snaplen个字节而不是默认的68个字节。
-T 将监听到的包直接解释为指定的类型的报文常见的类型有rpc远程过程调用和snmp简单网络管理协议。
-t 不在每一行中输出时间戳。
-tt 在每一行中输出非格式化的时间戳。
-ttt 输出本行和前面一行之间的时间差。
-tttt 在每一行中输出由date处理的默认格式的时间戳。
-u 输出未解码的NFS句柄。
-v 输出一个稍微详细的信息例如在ip包中可以包括ttl和服务类型的信息。
-vv 输出详细的报文信息。
-w 直接将分组写入文件中而不是不分析并打印出来。
-x 以16进制数形式显示每一个报文 (去掉链路层报头) . 可以显示较小的完整报文, 否则只显示snaplen个字节.
-xx 以16进制数形式显示每一个报文包含链路层包头。
-X 以16进制和ASCII码形式显示每个报文去掉链路层报头。
-XX 以16进制和ASCII吗形式显示每个报文包含链路层报头。
-y 设置tcpdump 捕获数据链路层协议类型
-Z 使tcpdump 放弃自己的超级权限(如果以root用户启动tcpdump, tcpdump将会有超级用户权限), 并把当前tcpdump的用户ID设置为user, 组ID设置为user首要所属组的ID3 示例
# 监听特定网卡
tcpdump -i en0# 监听特定主机
#例子监听本机跟主机182.254.38.55之间往来的通信包。
#备注出、入的包都会被监听。
tcpdump host 182.254.38.55# 特定来源、目标地址的通信
#特定来源
tcpdump src host hostname/ip# 特定目标地址
tcpdump dst host hostname/ip# 如果不指定src跟dst那么来源 或者目标 是hostname的通信都会被监听
tcpdump host hostname/ip # 过滤网段
#若你的ip范围是一个网段可以直接这样指定
$ tcpdump net 192.168.10.0/24# 根据源网段进行过滤
$ tcpdump src net 192.168# 根据目标网段进行过滤
$ tcpdump dst net 192.168# 特定端口
tcpdump port 3000#端口同样可以再细分为源端口目标端口
# 根据源端口进行过滤
$ tcpdump src port 8088# 根据目标端口进行过滤
$ tcpdump dst port 8088#如果你想要同时指定两个端口你可以这样写
$ tcpdump port 80 or port 8088$ tcpdump port 80 or 8088#如果你的想抓取的不再是一两个端口而是一个范围一个一个指定就非常麻烦了此时你可以这样指定一个端口段。
$ tcpdump portrange 8000-8080
$ tcpdump src portrange 8000-8080
$ tcpdump dst portrange 8000-8080#对于一些常见协议的默认端口我们还可以直接使用协议名而不用具体的端口号,比如 http 80https 443 等
$ tcpdump tcp port http# 基于协议进行过滤proto
#常见的网络协议有tcp, udp, icmp, http, ip,ipv6 等
#若你只想查看 icmp 的包可以直接这样写
$ tcpdump icmp#protocol 可选值ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx, or netbeui# 来源主机端口TCP
#监听来自主机123.207.116.169在端口22上的TCP数据包
tcpdump tcp port 22 and src host 123.207.116.169# 监听特定主机之间的通信
tcpdump ip host 210.27.48.1 and 210.27.48.2#210.27.48.1除了和210.27.48.2之外的主机之间的通信
tcpdump ip host 210.27.48.1 and ! 210.27.48.2# 稍微详细点的例子
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件方便用ethereal(即wireshark)分析# 抓http包
# 限制抓包的数量
#如下抓到1000个包后自动退出
tcpdump -c 1000# 保存到本地
#备注tcpdump默认会将输出写到缓冲区只有缓冲区内容达到一定的大小或者tcpdump退出时才会将输出写到本地磁盘,使用 -w 参数后接一个以 .pcap 后缀命令的文件名就可以将 tcpdump 抓到的数据保存到文件中。
$ tcpdump icmp -w icmp.pcaptcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.pcap# 也可以加上-U强制立即写到本地磁盘一般不建议性能相对较差
# 实战例子
先看下面一个比较常见的部署方式在服务器上部署了nodejs server监听3000端口。nginx反向代理监听80端口并将请求转发给nodejs server127.0.0.1:3000。
浏览器 - nginx反向代理 - nodejs server
问题假设用户(183.14.132.117)访问浏览器发现请求没有返回该怎么排查呢
步骤一查看请求是否到达nodejs server - 可通过日志查看。
步骤二查看nginx是否将请求转发给nodejs server。tcpdump port 8383
这时你会发现没有任何输出即使nodejs server已经收到了请求。因为nginx转发到的地址是127.0.0.1用的不是默认的interface此时需要显示指定interfacetcpdump port 8383 -i lo
备注配置nginx让nginx带上请求侧的host不然nodejs server无法获取 src host也就是说下面的监听是无效的因为此时对于nodejs server来说src host 都是 127.0.0.1tcpdump port 8383 -i lo and src host 183.14.132.117
步骤三查看请求是否达到服务器tcpdump -n tcp port 8383 -i lo and src host 183.14.132.117
4、示例-将当前的信息打印到一个文件中
#!/bin/bash
tcpdump -i ens160 vrrp -n /root/cmd/log/tcpdump.txt
echo ------------------- /root/cmd/log/tcpdump.txt[roottidb49 cmd]# tail -f log/tcpdump.txt
13:50:54.005105 IP 192.168.192.48 192.168.192.49: VRRPv2, Advertisement, vrid 142, prio 90, authtype simple, intvl 1s, length 20
13:50:55.005522 IP 192.168.192.48 192.168.192.49: VRRPv2, Advertisement, vrid 142, prio 90, authtype simple, intvl 1s, length 20
13:50:56.006615 IP 192.168.192.48 192.168.192.49: VRRPv2, Advertisement, vrid 142, prio 90, authtype simple, intvl 1s, length 20
13:50:57.007782 IP 192.168.192.48 192.168.192.49: VRRPv2, Advertisement, vrid 142, prio 90, authtype simple, intvl 1s, length 20# 抓取内容
21:26:49.013621 IP 172.20.20.1.15605 172.20.20.2.5920: Flags [P.], seq 49:97, ack 106048, win 4723, length 48第一列时分秒毫秒 21:26:49.013621
第二列网络协议 IP
第三列发送方的ip地址端口号其中172.20.20.1是 ip而15605 是端口号
第四列箭头 表示数据流向
第五列接收方的ip地址端口号其中 172.20.20.2 是 ip而5920 是端口号
第六列冒号
第七列数据包内容包括Flags 标识符seq 号ack 号win 窗口数据长度 length其中 [P.] 表示 PUSH 标志位为 1