linux-shell-网络分析工具

发布于 2017-10-03 · 本文总共 2779 字 · 阅读大约需要 8 分钟

tcpdump

使用tcpdump分析网络报文

捕获及停止条件

• -D 列举所有网卡设备

• -i 选择网卡设备

• -c 抓取多少条报文

• –time-stamp-precision 指定捕获时的时间精度,默认毫秒 micro,可选纳秒 nano

• -s 指定每条报文的最大字节数,默认 262144 字节

BPF:Expression 表达式

• primitives 原语:由名称或数字,以及描述它的多个限定词组成

• qualifiers 限定词

• Type:设置数字或者名称所指示类型,例如 host www.baidu.com

• Dir:设置网络出入方向,例如 dst port 80 • Proto:指定协议类型,例如 udp

• 其他

原语运算符

• 与:&& 或者 and

• 或:   或者 or

• 非:! 或者 not

例如:src or dst portrange 6000-8000 && tcp or ip6

限定词

Type:设置数字或者名称所指示类型

• host、port

• net ,设定子网,net 192.168.0.0 mask 255.255.255.0 等价于 net 192.168.0.0/24 • portrange,设置端口范围,例如 portrange 6000-8000

Dir:设置网络出入方向

• src、dst、src or dst、src and dst

• ra、ta、addr1、addr2、addr3、addr4(仅对 IEEE 802.11 Wireless LAN 有效)

Proto:指定协议类型

• ether、fddi、tr、 wlan、 ip、 ip6、 arp、 rarp、 decnet、 tcp、udp、icmp、igmp、icmp、 igrp、pim、ah、esp、vrrp

其他 • gateway:指明网关 IP 地址,等价于 ether host ehost and not host host

• broadcast:广播报文,例如 ether broadcast 或者 ip broadcast

• multicast:多播报文,例如 ip multicast 或者 ip6 multicast

• less, greater:小于或者大于

基于协议域过滤

• 捕获所有 TCP 中的 RST 报文 • tcp[13]&4==4

• 抓取 HTTP GET 报文

• port 80 and tcp[((tcp[12:1] & 0xf0) » 2):4] = 0x47455420

• 注意:47455420 是 ASCII 码的 16 进制,表示”GET ”

• TCP 报头可能不只 20 字节,data offset 提示了承载数据的偏移,但它以 4 字节为单位

文件操作

• -w 输出结果至文件(可被Wireshark读取分析)

• -C 限制输入文件的大小,超出后以后缀加 1 等数字的形式递增。 注意单位是 1,000,000 字节

• -W 指定输出文件的最大数量,到达后会重新覆写第 1 个文件

• -G 指定每隔N秒就重新输出至新文件,注意-w 参数应基于

strftime 参数指定文件名

• -r 读取一个抓包文件

• -V 将待读取的多个文件名写入一个文件中,通过读取该文件同时 读取多个文件

输出时间戳格式

• -t 不显示时间戳

• -tt自1970年1月1日0点至今的秒数 • -ttt 显示邻近两行报文间经过的秒数

• -tttt 带日期的完整时间

• -ttttt 自第一个抓取的报文起经历的秒数

分析信息详情

• -e 显示数据链路层头部

• -q 不显示传输层信息

• -v 显示网络层头部更多的信息,如 TTL、id 等

• -n 显示 IP 地址、数字端口代替 hostname 等

• -S TCP 信息以绝对序列号替代相对序列号

• -A 以 ASCII 方式显示报文内容,适用 HTTP 分析

• -x 以 16 进制方式显示报文内容,不显示数据链路层

• -xx 以 16 进制方式显示报文内容,显示数据链路层

• -X 同时以 16 进制及 ACII 方式显示报文内容,不显示数据链路层 • -XX 同时以 16 进制及 ACII 方式显示报文内容,显示数据链路层

示例

# -i eth0 只抓取eth0网卡,-n不解析协议名和主机名
# tcp port 80表示只抓取tcp协议并且端口号为80的网络帧
$ tcpdump -i eth0 -n tcp port 80

ifconfig

功能

  • ifconfig(interfaces config)

查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。
通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。依赖于ifconfig命令中使用一些选项属性,ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置。

命令参数:

  • -up 启动指定网络设备/网卡。

  • -down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。

  • -arp 设置指定网卡是否支持ARP协议。

ifconfig eth0 arp 开启网卡eth0 的arp协议 ifconfig eth0 -arp 关闭网卡eth0 的arp协议

  • -promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包

  • -allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包

  • -a 显示全部接口信息

  • -s 显示摘要信息(类似于 netstat -i)

  • -add 给指定网卡配置IPv6地址

为网卡配置和删除IPv6地址:

ifconfig eth0 add 33ffe:3240:800:1005::2/64
ifconfig eth0 del 33ffe:3240:800:1005::2/64
  • -address 为网卡设置IPv4地址

  • -del 删除指定网卡的IPv6地址

<硬件地址> 配置网卡最大的传输单元 - -mtu<字节数> 设置网卡的最大传输单元 (bytes) 设置最大传输单元: `ifconfig eth0 mtu 1500` - -netmask<子网掩码> 设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。 给eth0网卡配置IP地址:192.168.120.56,加上子掩码:255.255.255.0,加上个广播地址: `ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255` - -tunel 建立隧道 - -dstaddr 设定一个远端地址,建立点对点通信 - -broadcast<地址> 为指定网卡设置广播协议 - -pointtopoint<地址> 为网卡设置点对点通讯协议 - -multicast 为网卡设置组播标志 - -txqueuelen<长度> 为网卡设置传输列队的长度 ## 使用实例 ``` ifconfig eth0 192.168.120.56 netmask 255.255.255.0 ```



本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。
声明:
本博客欢迎转发,但请保留原作者信息!
博客地址:邱文奇(qiuwenqi)的博客;
内容系本人学习、研究和总结,如有雷同,实属荣幸!
阅读次数:

文章评论

comments powered by Disqus


章节列表