LINUX网络

网络相关设置:

  • 主机名

  • IP/netmask

  • 路由:默认网关

  • DNS服务器

  • 主DNS服务器

  • 次DNS服务器

  • 第三个DNS服务器

一.网络配置命令

1.ifconfig

基础用法:

在不带任何选项和参数执行 ifconfig 命令时, 将显示当前主机中已启用(活动)的网络接口信息

网卡名称详解:

ens33:第一块以太网卡的名称详解:

“ens33”中的

  • “en”是“EtherNet”的缩写,表示网卡 类型为以太网,

  • “s” 表示热插拔插槽上的设备(hot-plug Slot),

  • 数字“33”表示插槽 编号

centos6 网卡名称叫eth0

[root@localhost ~]#ifconfig  
ens33: flags=4163<UP,   BROADCAST,RUNNING,MULTICAST>  mtu 1500    
            该接口 已启用,支持广播、 正在运行  支持组播         最大传输单元1500字节
        inet 192.168.91.100  netmask 255.255.255.0  broadcast 192.168.91.255
        inet6 fe80::fe7:ca03:81f:2887  prefixlen 64  scopeid 0x20<link>
        IPV6地址                        子网长度       作用域 link表示仅该接口有效
        ether 00:0c:29:fe:e5:bf  txqueuelen 1000        (Ethernet)
        mac地址                   传输队列长度(传输缓存大小)     接口类型
        RX  packets 2211  bytes 182146 (177.8 KiB)
        接收 报文个数      总和字节数
        RX  errors 0  dropped 0  overruns 0  frame 0
        接收 错误       丢弃        溢出       冲突帧数
        TX  packets 1317  bytes 294334 (287.4 KiB)
        发送 报文个数       总字节数
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
           错误       丢失         溢出        载荷数     冲突数
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 82  bytes 7100 (6.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 82  bytes 7100 (6.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:e8:a0:b9  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
常用格式:
ifconfig          具体网卡名称                             #只显示具体网卡的详细信息(无论该网卡是否启用)

ifconfig          -a                                                 #表示显示所有网卡包括没有启动的网卡

ifconfig          网卡名称        [up|down]         #表示开启或关闭网卡

ifconfig          网络接口    ip地址  [netmask  子网掩码]
ifconfig          网络接口    ip地址[/子网掩码长度]

ifconfig     ens33:0          地址                         #表示虚拟网卡




[root@localhost ~]#ifconfig ens37 down
#关闭
[root@localhost ~]#ifconfig ens37 up
#开启
[root@localhost ~]#ifconfig ens37:0 192.168.91.200
#设置临时虚拟网卡
[root@localhost ~]#ifconfig ens37:0
ens37:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.91.200  netmask 255.255.255.0  broadcast 192.168.91.255
        ether 00:0c:29:fe:e5:c9  txqueuelen 1000  (Ethernet)
[root@localhost ~]#ifconfig ens37:0 down
#关闭虚拟网卡
[root@localhost ~]#ifconfig -a
#查看所有网卡包括为开启的

[root@localhost ~]#ifconfig -s
#网络通讯情况
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33     1500     7491      0      0 0          2617      0      0      0 BMRU
lo       65536       86      0      0 0            86      0      0      0 LRU
virbr0    1500        0      0      0 0             0      0      0      0 BMU

/etc/sysconfig/network-scripts
TYPE=Ethernet
#接口类型
BOOTPROTO=static
#地址获取方式 手动配置    dhcp 动态获取

NAME=ens37
#网卡名称
DEVICE=ens37
#网卡
ONBOOT=yes
#开机是否自启 开启
IPADDR=192.168.91.10
#地址
NETMASK=255.255.255.0
#子网掩码
GATEWAY=192.168.91.2
#网关
DNS1=8.8.8.8
#将ip地址转换成 域名
              

ip a

#先加新IP,再删除旧的IP
[root@centos8 ~]#ip address add 10.0.0.88/24 dev ens33

[root@centos8 ~]#ip address del 10.0.0.8/24 dev ens33
[root@centos8 ~]#ip a

2 hostname

查看或设置当前主机名

hostname [主机名]

[root@localhost ~]#hostname
localhost.localdomain
#临时生效

通过修改/etc/hostname文件来修改主机名

[root@localhost ~]# vi /etc/hostname
www.bdqn.com
#永久生效

通过hostnamectl来修改主机名

[root@localhost ~]# hostnamectl set-hostname www.bdqn.com
[root@localhost ~]# bash
[root@www ~]# hostname
www.bdqn.com
#永久生效

3. route

查看或设置主机中路由表信息

route [-n]

-n:将路由记录中的地址信息显示为数字形式

[root@localhost ~]#route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 ens33
default         gateway         0.0.0.0         UG    101    0        0 ens37
192.168.91.0    0.0.0.0         255.255.255.0   U     0      0        0 ens37
192.168.91.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.91.0    0.0.0.0         255.255.255.0   U     101    0        0 ens37
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0


[root@localhost ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.91.2    0.0.0.0         UG    100    0        0 ens33
0.0.0.0         192.168.91.2    0.0.0.0         UG    101    0        0 ens37
192.168.91.0    0.0.0.0         255.255.255.0   U     0      0        0 ens37
192.168.91.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.91.0    0.0.0.0         255.255.255.0   U     101    0        0 ens37
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0


#路由表主要构成:
#Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低
#Genmask:目标网络对应的netmask
#Iface: 到达对应网络,应该从当前主机哪个网卡发送出来
#Gateway: 到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址,如果是直连网络,gateway是0.0.0.0
#Metric: 开销cost,值越小,路由记录的优先级最高

添加 指定网段的路由记录

<font color='red'>route add  -net </font> <font color='cornflowerblue'>网段地址  gw  IP地址</font>

删除指定网段的路由记录

<font color='red'>route  del  -net</font>  <font color='purple'>网段地址</font>

向路由表中添加默认网关记录

<font color='red'> route  add  default  gw</font>  <font color='orange'>IP地址</font>

删除路由表中默认的网关记录

<font color='red'>route del  default  gw</font>  <font color='cornflowerblue'> IP地址</font>

添加 指定网段的路由记录

route add -net  网段地址 gw IP地址

删除指定网段的路由记录

route del -net 网段地址

向路由表中添加默认网关记录

route add default gw IP地址

删除路由表中默认的网关记录

route del default gw  IP地址

[root@localhost ~]#route add -net 192.168.100.0/24 gw 192.168.91.2
#给192.168.100.0/24段添加静态路由
[root@localhost ~]#route -n | grep 192.168.100.0
192.168.100.0   192.168.91.2    255.255.255.0   UG    0      0        0 ens33
[root@localhost ~]#route del -net 192.168.100.0/24 
#删除添加路由
[root@localhost ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.91.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

[root@localhost ~]#route del -net 192.168.100.0/24 
#删除默认路由
[root@localhost ~]#route -n
#查看
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.91.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
[root@localhost ~]#route add default gw 192.168.91.2
#重新添加路由
[root@localhost ~]#systemctl restart network
#需要重启服务后才能看到
[root@localhost ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.91.2    0.0.0.0         UG    100    0        0 ens33
192.168.91.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

路由文件的配置

/etc/sysconfig/network-scripts/route-IFACE
#文件名为网卡名
两种风格:
(1) TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW


[root@gsx network-scripts]#vim route-ens33 
192.168.100.0/24 via 192.168.91.2


reboot  重启

4.netstat

查看网络连接情况 netstat

netstat 选项

服务不能用 ,ftp httpd网页无法访问

  1. 先ping 看能不能通 如果网络不通 网络调通 防火墙 抓包

  2. 看看服务是否开启 syetemctl status 服务名

  3. ss netstat 看服务端口是否被占用 一个给一个服务 网页 80  apache nginx

  4. 最后看服务的配置文件是否正确

netstat
-a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
-n:以数字的形式显示相关的主机地址、端口等信息 
-r:显示路由表信息
-l:显示处于监听(Listening)状态的网络连接及端口信息 
-t:查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息 
-u:显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息
-p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)

[root@localhost ~]#systemctl start httpd
[root@localhost ~]#netstat -ntap |grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      10379/httpd         
[root@localhost ~]#netstat -ntap |grep ":22"
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1057/sshd           
tcp        0      0 192.168.91.100:22       192.168.91.1:50728      ESTABLISHED 1707/sshd: root@pts 
tcp        0     52 192.168.91.100:22       192.168.91.1:60503      ESTABLISHED 10224/sshd: root@pt 
tcp        0      0 192.168.91.100:22       192.168.91.1:60708      ESTABLISHED 9609

5.ss(socket statistics)

格式

ss [选项]

ss 命令:也可以查看网络连接情况,主要用于获取 socket 统计信息,它可以显示和 netstat 命令类似的输出内容。 但 ss 的优势在于它能够显示更多更详细的有关 TCP 和UDP连接状态的信息,而且比 netstat 更快速更高效 当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。 ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效 ss命令是Linux CentOS 7中iproute软件包的一部分,默认已经安装。

#选项:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息
-r: --resolve 把 IP 解释为域名,把端口号解释为协议名称。

#可以使用time命令来比较
[root@kgc ~]# time netstat -atn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN     
tcp        0      0 192.168.91.101:43374    192.168.91.100:514      ESTABLISHED
tcp        0     52 192.168.91.101:22       192.168.91.1:53036      ESTABLISHED
tcp6       0      0 :::111                  :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
tcp6       0      0 ::1:6010                :::*                    LISTEN     

real	0m0.007s
user	0m0.003s
sys	0m0.004s

[root@kgc ~]# time ss -atn
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128            *:111                        *:*                  
LISTEN     0      5      192.168.122.1:53                         *:*                  
LISTEN     0      128            *:22                         *:*                  
LISTEN     0      128    127.0.0.1:631                        *:*                  
LISTEN     0      100    127.0.0.1:25                         *:*                  
LISTEN     0      128    127.0.0.1:6010                       *:*                  
ESTAB      0      0      192.168.91.101:43374              192.168.91.100:514                
ESTAB      0      0      192.168.91.101:22                 192.168.91.1:53036              
LISTEN     0      128           :::111                       :::*                  
LISTEN     0      128           :::22                        :::*                  
LISTEN     0      128          ::1:631                       :::*                  
LISTEN     0      100          ::1:25                        :::*                  
LISTEN     0      128          ::1:6010                      :::*                  

real	0m0.017s
user	0m0.000s
sys	0m0.004s

6.traceroute

路由追踪

格式:

traceroute IP地址

[root@kgc ~]#traceroute 192.168.91.101
traceroute to 192.168.91.101 (192.168.91.101), 30 hops max, 60 byte packets
 1  192.168.91.101 (192.168.91.101)  0.752 ms  0.644 ms  0.635 ms


7.nslookup

域名解析 nslookup

格式:

nslook 域名

[root@kgc ~]#nslookup www.baidu.com
Server:		8.8.8.8
Address:	8.8.8.8#53

dig 可以显示出更多详细信息

[root@kgc ~]#dig www.baidu.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.5 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40371
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.baidu.com.			IN	A

;; ANSWER SECTION:
www.baidu.com.		390	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	30	IN	A	14.215.177.39
www.a.shifen.com.	30	IN	A	14.215.177.38

;; Query time: 77 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 四 9月 23 22:02:04 CST 2021
;; MSG SIZE  rcvd: 101

8.永久修改网络相关配置文件

网卡

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
DEVICE=ens33 
NAME=ens33                   //网卡名称
BOOTPROTO=static             //网卡获取地址模式   none   dhcp
ONBOOT=yes                   //开机是否自启动

IPADDR=192.168.91.105               //配置你自己的IP地址子网网关还有dns服务器
NETMASK=255.255.255.0               //PREFIX=24
GATEWAY=192.168.91.2
DNS1=8.8.8.8
DNS2=
DNS3=
[root@localhost ~]# systemctl restart network         //重启网卡服务 
[root@localhost ~]# ping 192.168.91.1                 //测试网络是否通顺
PING 192.168.91.1 (192.168.91.1) 56(84) bytes of data.
64 bytes from 192.168.91.1: icmp_seq=1 ttl=128 time=0.871 ms
64 bytes from 192.168.91.1: icmp_seq=2 ttl=128 time=0.487 ms
64 bytes from 192.168.91.1: icmp_seq=3 ttl=128 time=0.347 ms


#TYPE:接口类型;常见有的Ethernet, Bridge
#PROXY_METHOD:此配置文件应用到的设备  
#BROWSER_ONLY:
#BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp
#DEFROUTE:
#IPV4_FAILURE_FATAL:
#IPV6INIT:
#IPV6_AUTOCONF:
#IPV6_DEFROUTE:
#IPV6_FAILURE_FATAL:
#IPV6_ADDR_GEN_MODE:
#NAME:此配置文件应用到的设备
#UUID:设备的惟一标识
#DEVICE:设备名
#ONBOOT:在系统引导时是否激活此设备
#IPADDR::
#NETMASK:
#GATEWAY:
#DNS1:
red 修改网络地址 权限
[root@localhost ~]#nmcli con mod ens33 ipv4.addresses 192.168.91.200/24 ipv4.gateway 192.168.91.2 ipv4.dns 8.8.8.8 ipv4.method manual connection.autoconnect yes
[root@localhost ~]#nmcli con reload
[root@localhost ~]#nmcli con up ens33 

主机名

/etc/hostname文件来修改主机名

需要重启后生效,而且只识别第一行

[root@localhost ~]# vi /etc/hostname
kgc
[root@localhost ~]#reboot
[root@kgc ~]#

域名解析配置文件

本地主机映射文件

/etc/resolv.conf dns

保存的是你DNS服务器的地址

/etc/hosts 文件 保存主机名与IP地址的映射记录

[root@localhost ~]# cat /etc/hosts
127.0.0.1  localhost localhost.localdomain  localhost4 localhost4. 
192.168.91.100     www.yun.com
[root@kgc ~]#ping www.yun.com
PING www.yun.com (192.168.91.100) 56(84) bytes of data.
64 bytes from www.yun.com (192.168.91.100): icmp_seq=1 ttl=64 time=0.047 ms
64 bytes from www.yun.com (192.168.91.100): icmp_seq=2 ttl=64 time=0.065 ms
64 bytes from www.yun.com (192.168.91.100): icmp_seq=3 ttl=64 time=0.067 ms
64 bytes from www.yun.com (192.168.91.100): icmp_seq=4 ttl=64 time=0.062 ms
64 bytes from www.yun.com (192.168.91.100): icmp_seq=5 ttl=64 time=0.071 ms
64 bytes from www.yun.com (192.168.91.100): icmp_seq=6 ttl=64 time=0.130 

hosts文件和DNS服务器的比较

  • 默认情况下,系统首先从 hosts 文件查找解析记录

  • hosts 文件只对当前的主机有效

  • hosts 文件可减少 DNS 查询过程,从而加快访问速度

9.scp

远程同步

[root@kgc opt]#scp /opt/passwd  lisi@192.168.91.101:/opt/passwd
              命令字 本地文件地址  对方用户名@地址冒号对面地址
[root@kgc opt]#scp root@192.168.91.101:/opt/passwd  /opt/
               命令字 对方用户名@地址冒号对面地址        本地地址

10.ethtool

查看网卡信息

[root@localhost ~]#ethtool -i ens33
driver: e1000
version: 7.3.21-k8-NAPI
firmware-version: 
expansion-rom-version: 
bus-info: 0000:02:01.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no



[root@localhost ~]#ethtool -p ens33
#让ens33 网卡快速闪烁

11.tcpdump 抓包工具

tcpdump    option   proto     dir         type
           选项      协议      数据的方向    抓取的数据类型
proto(协议):**     
1. tcp  udp   icmp
2. ip   ipv6
3. arp

dir(方向):
1. src
2. dst
3. src and   dst

type(类型)

1. host  主机   
2. net  网段
3. port  端口     
4. port range  端口范围



tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<
数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
参数说明:
-a 尝试将网络和广播地址转换成名称。
-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
-e 在每列倾倒资料上显示连接层级的文件头。
-f 用数字显示网际网络地址。
-F<表达文件> 指定内含表达方式的文件。
-i<网络接口> 使用指定的网络截面送出数据包。
-l 使用标准输出列的缓冲区。
-n 不把主机的网络地址转换成名字。
-N 不列出域名。
-O 不将数据包编码最佳化。
-p 不让网络界面进入混杂模式。
-q 快速输出,仅列出少数的传输协议信息。
-r<数据包文件> 从指定的文件读取数据包数据。
-s<数据包大小> 设置每个数据包的大小。
-S 用绝对而非相对数值列出TCP关联数。
-t 在每列倾倒资料上不显示时间戳记。
-tt 在每列倾倒资料上显示未经格式化的时间戳记。
-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
-v 详细显示指令执行过程。
-vv 更详细显示指令执行过程。
-x 用十六进制字码列出数据包资料。
-w<数据包文件> 把数据包数据写入指定的文件。

直接使用tcpdump

-i 指定网卡

实例

[root@localhost data]#tcpdump -i ens33

输出格式
11:53:55.288476 IP 192.168.91.1.47496 > localhost.localdomain.ssh: Flags [P.], seq 261:313, ack 1688848, win 4106, length 52^C

输出格式讲解:

第一列:时分毫秒 11:53:55.288476

第二例:网络协议ip

第三列:发送方IP地址+端口号 ip地址:192.168.91.1 端口号:47496 >表示数据流向

第四列:主机名协议 主机名:localhost.localdomain 协议:ssh

第五列: seq号 ack号 win窗口长度 tcp的标志位

过滤规则
基于ip地址/网段过滤

host选项

主机2  ping   主机1 

[root@localhost data]#tcpdump -i ens33  host 192.168.91.101
#只关心 和 192.168.91.101 有关的流量
dst选项  目的地址
src选项  源地址
[root@localhost ~]#tcpdump -i ens33  dst 192.168.91.101
[root@localhost ~]#tcpdump -i ens33  src 192.168.91.101
net选项   tcpdump net 192.168.91.0/24
[root@localhost ~]#tcpdump net 192.168.91.0/24 -i ens33

控制方向
[root@localhost ~]#tcpdump -i ens33  src net 192.168.91.0/24
[root@localhost ~]#tcpdump -i ens33  dst net 192.168.91.0/24
基于端口过滤
port 端口号 tcpdump port 80
[root@localhost ~]#tcpdump -i ens33 port 80

or

[root@localhost ~]#tcpdump -i ens33 port 80 or port 22
#80 和 22 端口

[root@localhost ~]#tcpdump -i ens33  src port 80 or port 22
[root@localhost ~]#tcpdump -i ens33  dst port 80 or port 22

范围的端口

[root@localhost ~]#tcpdump -i ens33 portrange 80-8080
#80 和 22 端口

[root@localhost ~]#tcpdump -i ens33  src portrange 80-8080
[root@localhost ~]#tcpdump -i ens33  dst portrange 80-8080
基于协议

protocal

协议种类: ip  arp  icmp  tcp  udp

应用层协议不可以直接抓取

[root@localhost ~]#ping  www.baidu.com
[root@localhost ~]#tcpdump -i ens33 icmp
常见参数

- i指定监听网络监听端口

[root@localhost ~]#tcpdump -i ens33
[root@localhost ~]#tcpdump -i any

- w 将捕获信息保存到文件中,且不分析和打印在屏幕上

[root@localhost ~]#tcpdump -i any -w test.cap    
#将文件后缀改成cap 或者pcap形式可以直接用wireshark打开

- r 读取上面储存的文件

[root@localhost ~]#tcpdump -r test 
reading from file test, link-type LINUX_SLL (Linux cooked)
01:58:09.960457 IP localhost.localdomain.ssh > 192.168.91.1.16603: Flags [P.], seq 993857661:993857809, ack 1860109721, win 274, length 148
01:58:09.960854 IP 192.168.91.1.16603 > localhost.localdomain.ssh: Flags [.], ack 148, win 4101, length 0
01:58:20.585572 IP 192.168.91.1.16603 > localhost.localdomain.ssh: Flags [P.], seq 1:53, ack 148, win 4101, length 52

- n直接显示ip和端口号

[root@localhost ~]#tcpdump -i ens33
02:03:27.480712 IP 192.168.91.1.16603 > localhost.localdomain.ssh: Flags [P.], seq 53:105, ack 168336, win 4100, length 52
[root@localhost ~]#tcpdump -i ens33  -n
#ssh 变成了端口号
02:03:57.921893 IP 192.168.91.1.16603 > 192.168.91.100.22: Flags [P.], seq 1:53, ack 150592, win 4106, length 52

- t在每行的输出中,不显示时间

[root@localhost ~]#tcpdump -i ens33 -t

- tt输出一个时间戳

时间戳(timestamp),通常是一个字符序列,唯一的标识某一刻的时间

[root@localhost ~]#tcpdump -i ens33 -tt

- ttt每行之间的时间间隔

[root@localhost ~]#tcpdump -i ens33 -ttt

- tttt详细日期

[root@localhost ~]#tcpdump -i ens33 -tttt

- v产生详细的输出

[root@localhost ~]#tcpdump -i ens33 -v
[root@localhost ~]#tcpdump -i ens33 -vv
[root@localhost ~]#tcpdump -i ens33 -vvv
#v越多  信息越详细

- c指定收取数据包的数量

[root@localhost ~]#tcpdump -i ens33 -c  20
#指定抓取 20 个包后退出

- C需要与w配合使用 指定单个文件的大小 百万字节

[root@localhost data]#tcpdump -i ens33 -C 1 -w test
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

[root@localhost data]#yum install epel-release.noarch -y
#  制造流量 模拟环境

- Q过滤数据包的方向 in out inout

[root@localhost data]#tcpdump -i ens33 -Q in
#只有in方向
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
02:24:55.547329 IP 192.168.91.1.16603 > localhost.localdomain.ssh: Flags [.], ack 1002982309, win 4105, length 0
02:24:55.591780 IP dns.google.domain > localhost.localdomain.52360: 33034 NXDomain 0/0/0 (45)
02:24:55.636957 IP dns.google.domain > localhost.localdomain.50352: 58856 NXDomain 0/0/0 (43)
02:24:55.678358 IP 192.168.91.1.16603 > localhost.localdomain.ssh: Flags [.], ack 165, win 4104, length 0
02:24:55.682818 IP dns.google.domain > localhost.localdomain.60698: 16333 1/0/0 PTR dns.google. (62)
02:24:55.723179 IP 192.168.91.1.16603 > localhost.localdomain.ssh: Flags [.], ack 617, win 4102, length 0


[root@localhost data]#tcpdump -i ens33 -Q out
#只有out方向

- q简介的输出

[root@localhost data]#tcpdump -i ens33  -q

- D 显示所有可用的列表

[root@localhost data]#tcpdump -D
#回环   usb   等接口
1.virbr0
2.nflog (Linux netfilter log (NFLOG) interface)
3.nfqueue (Linux netfilter queue (NFQUEUE) interface)
4.usbmon1 (USB bus number 1)
5.usbmon2 (USB bus number 2)
6.ens33
7.any (Pseudo-device that captures on all interfaces)
8.lo [Loopback]

- s指定数据包的大小

[root@localhost data]#tcpdump -i ens33  -s 50
02:39:09.016238 IP localhost.localdomain.ssh > 192.168.91.1.16603: [|tcp]
02:39:09.018305 IP 192.168.91.1.16603 > localhost.localdomain.ssh: [|tcp]
02:39:09.018337 IP localhost.localdomain.ssh > 192.168.91.1.16603: [|tcp]
02:39:09.018715 IP 192.168.91.1.16603 > localhost.localdomain.ssh: [|tcp]



[root@localhost data]#tcpdump -i ens33  -s 50 tcp  port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 50 bytes
                                                               #大小为50
                                                               #默认为262144

例子:

#查看网卡
[root@centos8 ~]#tcpdump -D
1.eth0 [Up, Running]
2.lo [Up, Running, Loopback]
3.any (Pseudo-device that captures on all interfaces) [Up, Running]
4.bluetooth-monitor (Bluetooth Linux Monitor) [none]
5.nflog (Linux netfilter log (NFLOG) interface) [none]
6.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]
7.usbmon0 (All USB buses) [none]
8.usbmon1 (USB bus number 1)
9.usbmon2 (USB bus number 2)
#不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。
tcpdump
#监听特定网卡
tcpdump -i en0
#监听特定主机,监听主机10.0.0.100 的通信包,注意:出、入的包都会被监听。
tcpdump host 10.0.0.100
#特定来源、目标地址的通信
#特定来源
tcpdump src host hostname
#特定目标地址
tcpdump dst host hostname
#如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听
tcpdump host hostname
#面试题
[root@centos8 ~]#tcpdump -i eth0 -nn icmp and   src host 10.0.0.6 and dst host  10.0.0.7

#特定端口
tcpdump port 3000
#监听TCP/UDP,服务器上不同服务分别用了TCP、UDP作为传输层,假如只想监听TCP的数据包
tcpdump tcp
#来源主机+端口+TCP,监听来自主机10.0.0.100在端口22上的TCP数据包
tcpdump tcp port 22 and src host 10.0.0.100
#监听特定主机之间的通信
tcpdump ip host 10.0.0.101 and 10.0.0.102
#10.0.0.101和除了10.0.0.1之外的主机之间的通信
tcpdump ip host 10.0.0.101 and ! 10.0.0.1
#详细示例
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文件,方便用wireshark分析
#限制抓包的数量,如下,抓到1000个包后,自动退出
tcpdump -c 1000
#保存到本地,tcpdump默认会将输出写到缓冲区,只有缓冲区内容达到一定的大小,或者tcpdump退出时,
才会将输出写到本地磁盘,可以加上-U强制立即写到本地磁盘(一般不建议,性能相对较差)
tcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.cap

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值