目录
[1. ifconfig](#1. ifconfig)
[1.1 概述信息解析](#1.1 概述信息解析)
[1.2 常用格式](#1.2 常用格式)
[2. ip](#2. ip)
[2.1 ip link 数据链路层](#2.1 ip link 数据链路层)
[2.2 ip addr 网络层](#2.2 ip addr 网络层)
[2.3 路由](#2.3 路由)
[3. hostname](#3. hostname)
[3.1 临时修改主机名](#3.1 临时修改主机名)
[3.2 永久修改主机名](#3.2 永久修改主机名)
[4. route](#4. route)
[5. netstat](#5. netstat)
[6. ss](#6. ss)
[7. ping](#7. ping)
[8. traceroute](#8. traceroute)
[9. nslookup](#9. nslookup)
[10. 永久修改网络相关配置](#10. 永久修改网络相关配置)
[11. 双网卡配置](#11. 双网卡配置)
[12. bond 网卡绑定](#12. bond 网卡绑定)
[12.1 概述](#12.1 概述)
[12.2 案例环境:mod=1,主备模式:可以解决单点故障](#12.2 案例环境:mod=1,主备模式:可以解决单点故障)
[12.2.1 创建bonding设备的配置文件](#12.2.1 创建bonding设备的配置文件)
[12.2.2 修改从设备配置文件](#12.2.2 修改从设备配置文件)
[12.2.3 查看目前bonding的状态](#12.2.3 查看目前bonding的状态)
[12.2.4 断开网络适配器1连接,重新查看bonding的状态](#12.2.4 断开网络适配器1连接,重新查看bonding的状态)
[12.2.5 重新开启网络适配器1,查看bonding的状态](#12.2.5 重新开启网络适配器1,查看bonding的状态)
[12.2.6 删除bond0](#12.2.6 删除bond0)
[二、tcpdump 抓包工具](#二、tcpdump 抓包工具)
[1. 概述](#1. 概述)
[2. 参数说明](#2. 参数说明)
[3. 示例](#3. 示例)
[4. 抓包文件导出](#4. 抓包文件导出)
一、配置命令
1. ifconfig
1.1 概述信息解析
查看网卡配置详情信息,在不带任何选项和参数执行ifconfig命令时,将显示当前主机中已启用(活动)的网络接口信息。
bash
[root@localhost ~]# ifconfig
#"ens33"中的"en"是"EtherNet"的缩写,表示网卡以太网(局域网中的一种) 互联网类型为以太网,"s"表示热插拔插槽上的设备(hot-plug Slot),数字"33"表示插槽编号
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
该接口已启用,支持广播、正在运行 支持组播 最大传输单元1500字节
inet 192.168.190.100 netmask 255.255.255.0 broadcast 192.168.190.255
IP地址 子网掩码 广播地址
inet6 fe80::e743:cb44:9825:6230 prefixlen 64 scopeid 0x20<link>
IPV6地址 子网长度 作用域 link表示仅该接口有效
ether 00:0c:29:e1:cb:86 txqueuelen 1000 (Ethernet)
mac地址 传输队列长度(传输缓存大小) 接口类型
RX packets 963 bytes 73900 (72.1 KiB)
接收 报文个数 总和字节数
RX errors 0 dropped 0 overruns 0 frame 0
接收 错误 丢弃 溢出 冲突帧数
TX packets 334 bytes 37113 (36.2 KiB)
发送 报文个数 总字节数
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
错误 丢失 溢出 载荷数 冲突数
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
回环测试、本地主机名解析和网络服务的访问权限控制等功能
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
虚拟的网络连接端口
1.2 常用格式
- ifconfig 具体网卡名称:只显示具体网卡的详细信息(无论该网卡是否使用)
- ifconfig -a:表示显示所有网卡包括没有启动的网卡
- ifconfig 网卡名称 [up|down]:表示开启或关闭网卡,也可以写成if up/down 网卡名称
- ifconfig ens33:0 地址:表示设置虚拟网卡
bash
[root@localhost ~]# ifconfig ens33 down 或者 ip link set ens33 down
#关闭网卡
[root@localhost ~]# ifconfig ens33 up 或者 ip link set ens33 up
#开启网卡
[root@localhost ~]# ifconfig ens33:0 192.168.190.200 | ifconfig ens33:0
#设置临时虚拟网卡
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.190.200 netmask 255.255.255.0 broadcast 192.168.190.255
ether 00:0c:29:e1:cb:86 txqueuelen 1000 (Ethernet)
[root@localhost ~]#ifconfig ens33:0 down
#关闭虚拟网卡
[root@localhost ~]# ifconfig -a
#查看所有网卡包括未开启的
[root@localhost ~]# ifconfig -s
#查看络通讯情况,跟ifconfig显示信息相似,一个横着一个竖着
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 1844 0 0 0 615 0 0 0 BMRU
ens33:0 1500 - no statistics available - BMRU
lo 65536 80 0 0 0 80 0 0 0 LRU
virbr0 1500 0 0 0 0 0 0 0 0 BMU
2. ip
2.1 ip link 数据链路层
bash
[root@localhost ~]# ip link
#可以看到网卡状态
相关功能(临时):
- ip link set ens33 down/up:关闭网卡/开启网卡
- ip link set ens33 newname:修改网卡名,需要先关闭网卡
2.2 ip addr 网络层
bash
[root@localhost ~]# ip addr
#可以写成ip a,更高端的查看网卡信息
[root@localhost ~]# ip address add 172.19.8.211/16 dev ens33
#添加新的虚拟ip地址
[root@localhost ~]# ip address add 10.0.0.88/24 dev ens33 #临时添加IP
[root@localhost ~]# ip address del 10.0.0.8/24 dev ens33
2.3 路由
bash
[root@localhost ~]# ip route
#查找默认网关ip地址
default via 192.168.190.2 dev ens33 proto static metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
192.168.190.0/24 dev ens33 proto kernel scope link src 192.168.190.100 metric 100
3. hostname
查看或设置当前主机名
3.1 临时修改主机名
hostname [主机名],临时修改。
3.2 永久修改主机名
通过修改/etc/hostname文件来修改主机名
bash
[root@localhost ~]# vim /etc/hostname
localhost.localdomain #修改第一行有效
~
通过hostnamectl来修改主机名
bash
[root@localhost ~]# hostnamectl set-hostname newname
4. route
查看或设置主机中路由表信息
bash
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.190.2 0.0.0.0 UG 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.190.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
#将路由记录中的地址信息显示为数字形式
路由表主要构成:
- Destination:目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低
- Gateway:到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址,如果是直连网络,gateway是0.0.0.0
- Genmask:目标网络对应的netmask
- Metric:开销cost,值越小(经过的路由器少),路由记录的优先级最高
- Iface:到达对应网络,应该从当前主机哪个网卡发送出来
相关功能:
route -n:显示路由表,-n以数字形式显示路由表
route add -net 10.0.0.0/8 gw 192.168.190.2:添加一条去往10.0.0.0段的路由,通过网关192.168.190.2 转发
route del -net 10.0.0.0/8 gw 192.168.190.2:删除去往10.0.0.0段的路由
route add -net 0.0.0.0(default) gw 192.168.190.2:添加默认路由
route del -net 0.0.0.0(default) gw 192.168.190.2:删除默认路由
临时添加路由示例:
bash
[root@localhost ~]# route add -net 10.0.0.0/8 gw 192.168.190.2
#临时添加一条去往10.0.0.0网段的路由器,通过192.168.190.2转发
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.190.2 0.0.0.0 UG 100 0 0 ens33
0.0.0.0 192.168.190.2 0.0.0.0 UG 101 0 0 ens36
10.0.0.0 192.168.190.2 255.0.0.0 UG 0 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.190.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.190.0 0.0.0.0 255.255.255.0 U 101 0 0 ens36
永久添加路由:
bash
[root@localhost ~]# vim /etc/sysconfig/network-scripts/route-ens33
10.0.0.0/24 via 192.168.190.100
[root@localhost ~]# systemctl restart network
5. netstat
查看网络连接情况
- -a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
- -n:以数字的形式显示相关的主机地址、端口等信息
- -r:显示路由表信息
- -l:显示处于监听(Listening)状态的网络连接及端口信息
- -t:查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息
- -u:显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息
- -p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)
bash
[root@localhost ~]# yum install -y httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# netstat -ntap | grep 80
tcp 0 0 192.168.190.100:34062 39.155.141.16:80 TIME_WAIT -
tcp 1 1 192.168.190.100:52916 35.180.43.213:80 LAST_ACK -
tcp 0 0 192.168.190.100:34066 39.155.141.16:80 TIME_WAIT -
tcp 0 0 192.168.190.100:34844 202.38.97.230:80 TIME_WAIT -
tcp 0 0 192.168.190.100:22 192.168.190.1:8071 ESTABLISHED 3557/sshd: root@pts
tcp6 0 0 :::80 :::* LISTEN 38702/httpd
6. ss
也可以查看网络连接情况,主要用于获取socket统计信息,它可以显示和netstat命令类似的输出内容。但ss的优势(更靠近内核)在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
选项:
- -t:tcp协议相关
- -u:udp协议相关
- -w:裸套接字相关
- -x:unix sock相关
- -l:listen状态的连接
- -a:所有
- -n:数字格式
- -p:相关的程序及PID
- -e:扩展的信息
- -m:内存用量
- -o:计时器信息
- -r: --resolve 把IP解释为域名,把端口号解释为协议名称。 dns服务
bash
[root@localhost ~]# ss -natp | grep 80
LISTEN 0 128 :::80 :::* users:(("httpd",pid=1850,fd=4),("httpd",pid=1849,fd=4),("httpd",pid=1848,fd=4),("httpd",pid=1847,fd=4),("httpd",pid=1846,fd=4),("httpd",pid=1844,fd=4))
7. ping
测试网络连通性,ping [选项] 目标主机;-c选项是发送多少个包,-w表示等待10秒。
8. traceroute
路由追踪,traceroute IP地址。
bash
[root@localhost ~]# traceroute 192.168.190.101
traceroute to 192.168.190.101 (192.168.190.101), 30 hops max, 60 byte packets
1 192.168.190.101 (192.168.190.101) 3.411 ms !X 3.252 ms !X 3.206 ms !X
9. nslookup
域名解析,验证dns服务器是否可以解析域名;dns域名解析的作用是:将域名翻译成ip地址。同时其他命令也可以查看,比如:dig,host,ping等。
bash
[root@localhost ~]# nslookup www.baidu.com
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 180.101.50.242
Name: www.a.shifen.com
Address: 180.101.50.188
10. 永久修改网络相关配置
bash
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet #网卡的类型 网口
BOOTPROTO=static #ip地址获取方式 dhcp static (none)
NAME=ens33 #网卡的描述一般和 DEVICE一样
DEVICE=ens33 #网卡的名称,必须和 ifconfig 中看到的一样
ONBOOT=yes #开机自启动
IPADDR=192.168.190.100 #ip地址
NETMASK=255.255.255.0 #子网掩码,PREFIX=24
GATEWAY=192.168.190.2 #网关
DNS1=114.114.114.114 #dns服务器1
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (180.101.50.188) 56(84) bytes of data.
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=1 ttl=128 time=2.17 ms
11. 双网卡配置
可手动添加网络适配器,参考ens33网卡配置,适当修改
bash
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=static
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.190.136
NETMASK=255.255.255.0
GATEWAY=192.168.190.2
DNS1=114.114.114.114
[root@localhost network-scripts]# systemctl restart network
12. bond 网卡绑定
12.1 概述
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。
12.2 案例环境:mod=1,主备模式:可以解决单点故障
12.2.1 创建bonding设备的配置文件
bash
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-bond0
[root@localhost network-scripts]# vim ifcfg-bond0
BOOTPROTO=static
NAME=bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.190.200
NETMASK=255.255.255.0
GATEWAY=192.168.190.2
DNS1=114.114.114.114
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
主备模式 每100ms检测一次 使用活着的mac地址
12.2.2 修改从设备配置文件
bash
[root@localhost network-scripts]# vim ifcfg-ens33
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
MASTER=bond0 #主人
SLAVE=yes
[root@localhost network-scripts]# vim ifcfg-ens36
NAME=ens36
DEVICE=ens36
BOOTPROTO=none #静态
MASTER=bond0
SLAVE=yes
PNBOOT=yes
[root@localhost network-scripts]# systemctl restart network
12.2.3 查看目前bonding的状态
![](https://file.jishuzhan.net/article/1745092238196609025/2741e1527b14048e2911a7f84bc0a327.webp)
12.2.4 断开网络适配器1连接,重新查看bonding的状态
![](https://file.jishuzhan.net/article/1745092238196609025/6d4b952e7843cfdc9752c7b8d4a688ac.webp)
![](https://file.jishuzhan.net/article/1745092238196609025/d6b01767c1ebe2a9840de03b9e7c9ec9.webp)
12.2.5 重新开启网络适配器1,查看bonding的状态
![](https://file.jishuzhan.net/article/1745092238196609025/596f90d847b0bf3f99c9e03b51aee158.webp)
12.2.6 删除bond0
bash
[root@localhost ~]# ifconfig bond0 dow
或者rmmod bonding
二、tcpdump 抓包工具
1. 概述
网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。
bash
[root@localhost ~]# tcpdump -D #列出当前所有网卡
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]
[root@localhost ~]# tcpdump #默认抓第一块网卡数据,虚拟网卡没有流量
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on virbr0, link-type EN10MB (Ethernet), capture size 262144 bytes
[root@localhost ~]# tcpdump -i ens33 #指定网卡抓包
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:15:51.137151 IP localhost.localdomain.ssh > 192.168.190.1.8018: Flags [P.], seq 3160869659:3160869847, ack 1773325442, win 261, length 188
21:15:51.137618 IP 192.168.190.1.8018 > localhost.localdomain.ssh: Flags [.], ack 188, win 4095, length 0
21:15:51.138171 IP localhost.localdomain.40820 > public1.114dns.com.domain: 48951+ PTR? 1.190.168.192.in-addr.arpa. (44)
^C^C
2. 参数说明
- -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:<数据包文件> 把数据包数据写入指定的文件。
3. 示例
-nn示例:直接显示IP和端口号
bash
[root@localhost ~]# tcpdump -i ens33 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:22:03.841588 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 3161280743:3161280931, ack 1773326482, win 261, length 188
21:22:03.843031 IP 192.168.190.1.8018 > 192.168.190.100.22: Flags [.], ack 188, win 4096, length 0
21:22:03.843176 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 188:360, ack 1, win 261, length 172
21:22:03.843451 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 360:612, ack 1, win 261, length 252
21:22:03.843611 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 612:760, ack 1, win 261, length 148
tcpdump过滤
bash
root@localhost ~]# tcpdump -i ens33 -nn src host 192.168.190.100
#代表过滤指定主机IP源地址的网络数据包,src 选项 源地址
root@localhost ~]# tcpdump -i ens33 -nn dst host 192.168.190.100
#代表过滤指定主机IP目标地址的网络数据包,dst 选项 目标地址
[root@localhost ~]# tcpdump -i ens33 -nn src host 192.168.190.101 and dst 192.168.190.100
#代表过滤ip100发给101的网络数据
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:32:27.091941 IP 192.168.190.101 > 192.168.190.100: ICMP echo request, id 3475, seq 1, length 64
21:32:28.093234 IP 192.168.190.101 > 192.168.190.100: ICMP echo request, id 3475, seq 2, length 64
[root@localhost ~]# tcpdump -nn -i ens33 icmp and src host 192.168.190.101 and dst host 192.168.190.100
#抓取源地址192.168.190.101,目的地址192.168.190.100经过ens33网卡的icmp协议包
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:40:50.617180 IP 192.168.190.101 > 192.168.190.100: ICMP echo request, id 3517, seq 224, length 64
21:40:51.619638 IP 192.168.190.101 > 192.168.190.100: ICMP echo request, id 3517, seq 225, length 64
[root@localhost ~]# tcpdump -nn -i ens33 port 22
#抓取ens33网卡22端口数据
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:44:41.672291 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 3163213563:3163213751, ack 1773345178, win 261, length 188
21:44:41.672693 IP 192.168.190.1.8018 > 192.168.190.100.22: Flags [.], ack 188, win 4096, length 0
21:44:41.673026 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 188:464, ack 1, win 261, length 276
21:44:41.673203 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 464:612, ack 1, win 261, length 148
注:基于协议ip arp icmp tcp udp,不支持抓取应用层七层协议。
4. 抓包文件导出
bash
[root@localhost data]# tcpdump -i any -w test.cap
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
^C50 packets captured
51 packets received by filter
0 packets dropped by kernel
[root@localhost data]# ls
test.cap
[root@localhost data]# sz test.cap #选择保存路径
使用Wireshark打开查看图形化界面
读取上述文件test.cap
bash
[root@localhost data]# tcpdump -r test.cap
reading from file test.cap, link-type LINUX_SLL (Linux cooked)
21:55:03.469404 IP localhost.localdomain.ssh > 192.168.190.1.8018: Flags [P.], seq 3163266231:3163266355, ack 1773347998, win 261, length 124
21:55:03.469918 IP 192.168.190.1.8018 > localhost.localdomain.ssh: Flags [.], ack 124, win 4096, length 0
......