网络相关设置:
-
主机名
-
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网页无法访问
-
先ping 看能不能通 如果网络不通 网络调通 防火墙 抓包
-
看看服务是否开启 syetemctl status 服务名
-
ss netstat 看服务端口是否被占用 一个给一个服务 网页 80 apache nginx
-
最后看服务的配置文件是否正确
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