linux命令-----netstat , tcpdump

1.netstat

基本使用方式,netstat -ntl | grep 10020  显示是否有在10020端口监听的tcp服务 ;

-t:显示TCP连接

-u:显示UDP连接

-a:显示所有连接

在 netstat 输出中显示 PID 和进程名称 netstat -p

找出程序运行的端口,netstat -ap | grep ssh,查找进程ssh监听的端口

找出运行在指定端口的进程,netstat -an | grep':80'

2.tcpdump

tcpdump

普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。

基本用法:

sudo tcpdump -i any port 8080,本机的8080端口数据,不区分UDP,TCP

sudo tcpdump -i any udp port 8080,udp 8080

sudo tcpdump -i any host 10.21.1.1,与主机10.21.1.1的数据包来往

sudo tcpdump src 127.0.0.1 and dst 10.21.1.1,源IP 目的IP均给出

tcpdump -i eth0 src host hostname ,截获主机hostname发送的所有数据



待测试:

Wireshark(以前是ethereal)是Windows下非常简单易用的抓包工具。但在Linux下很难找到一个好用的图形化抓包工具。
还好有Tcpdump。我们可以用Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包。

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)分析








你可能感兴趣的:(一个后台的自我学习)