Linux网络配置与测试
目录
一.与网络配置相关的命令
1.1ifconfig命令
1.1.1作用
1.1.2网络接口的信息
接口信息的组成
1.1.3显示所有网卡包括没有启动的网卡
1.1.4查看指定网络接口
1.1.5开启或关闭网卡
1.1.6设置临时虚拟网卡
1.1.7网络通讯情况
编辑
1.1.8临时修改网卡属性
1.2hostname命令
1.2.1作用
1.2.2永久修改主机名
1.2.3临时修改主机名
1.3route命令
1.3.1作用
1.3.2查看IP路由表
编辑 路由表的信息组成
1.3.3让路由表信息以数字形式显示
1.3.4 添加静态路由
1.3.5删除现有的路由
1.3.6删除默认的网关记录
1.3.7添加默认网关记录
1.4查看网络连接情况
1.4.1 netstat命令(不建议使用)
1.4.1.1作用
1.4.2ss( socket statistics)命令
1.4.2.1作用
二.网络测试
2.1ping命令
2.2traceroute命令
2.3nslookup命令
三.永久修改网络相关配置文件
3.1网卡
3.2添加新网卡
四.多网卡绑定bond
4.1 什么是bond
4.2 Bonding 聚合链路工作模式
4.3 模拟实现bond mod=1
五.tcpdump 抓包工具
5.1命令格式
常见选项
2. 过滤规则
(1)按 IP 过滤
(2) 按端口过滤
(3) 按协议过滤
(4) 组合过滤
一.与网络配置相关的命令
1.1ifconfig命令
1.1.1作用
用于显示网络接口信息
1.1.2网络接口的信息
ifconfig #显示所有的已经开启的网络接口的信息
接口信息的组成
ens33
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
错误 丢失 溢出 载荷数 冲突数
补充:ens33:第一块以太网卡的名称详解
“ens33”中的
-
“en”是“EtherNet”的缩写,表示网卡 类型为以太网,
-
“s” 表示热插拔插槽上的设备(hot-plug Slot),
-
数字“33”表示插槽 编号
lo回环接口(与ens33相似部分不在重复描述)
inet 127.0.0.1 netmask 255.0.0.0
#本地回环接口的IP地址是 127.0.0.1,网络掩码是 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
#inet6 ::1 表示IPv6下的本地回环地址
#prefixlen 128 表示网络前缀的长度为 128,全部地址都被视为主机标识。
#scopeid 0x10<host> 表示该地址的作用域 ID 是 0x10,标识为主机(host)级别的地址
loop txqueuelen 1 (Local Loopback)
可缓存一个数据包 本地环回接口
virbr0 虚拟网络接口
ther 52:54:00:74:e7:a9 txqueuelen 1000 (Ethernet)
MAC地址 可以缓存1000个数据包 以太网
1.1.3显示所有网卡包括没有启动的网卡
ifconfig -a
1.1.4查看指定网络接口
ifconfig 接口名 #显示指定网络接口的详细配置信息
1.1.5开启或关闭网卡
ifconfig 网卡名称 [up|down]
1.1.6设置临时虚拟网卡
ifconfig 网卡名称:0 地址
1.1.7网络通讯情况
ifconfig -s
1.1.8临时修改网卡属性
ifconfig ens33 192.168.2.122 255.255.255.0 #临时修改IP地址和子网掩码
1.2hostname命令
1.2.1作用
hostname命令用于显示或设置系统的主机名。主机名是标识网络上计算机的名称。
hostname #显示当前主机名
1.2.2永久修改主机名
hostnamectl set-hostname 新主机名
1.2.3临时修改主机名
hostname 2025 #将主机名临时修改为2025,2025为自定义,重启后修改失效
1.3route命令
1.3.1作用
用于查看或设置系统的IP路由表。
1.3.2查看IP路由表
route
路由表的信息组成
#路由表主要构成:
#Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路
由,优先级最低
#Genmask:目标网络对应的netmask
#Iface: 到达对应网络,应该从当前主机哪个网卡发送出来
#Gateway: 到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址,如果是直连网络,gateway是0.0.0.0
#Metric: 开销cost,值越小,路由记录的优先级最高
1.3.3让路由表信息以数字形式显示
route -n
1.3.4 添加静态路由
route add -net 目标网段地址 子网掩码 gw 下一跳IP地址 [下一跳网关 下一跳IP地址的端口]
route add -net 192.168.100.0/24 gw 192.168.52.2
#给192.168.100.0/24段添加静态路由
1.3.5删除现有的路由
route del -net 目标网段 子网掩码 [gw 下一跳IP地址]
route del -net 192.168.100.0/24
#删除添加路由
1.3.6删除默认的网关记录
route del default gw IP地址
1.3.7添加默认网关记录
route add default gw IP地址
1.4查看网络连接情况
1.4.1 netstat命令(不建议使用)
1.4.1.1作用
netstat命令用于显示与网络相关的统计信息,包括连接状态、网络接口的活动情况、路由表等。
#命令格式
netstat [选项]
#常用选项:
-a 显示所有活动连接和监听端口
-n 直接使用IP地址和端口号显示网络连接,而不进行DNS解析
-o 显示与每个连接关联的进程ID
-p 显示与每个连接关联的程序名称或进程名称
-s 显示不同协议的统计信息,例如TCP、UDP和ICMP
1.4.2ss( socket statistics)命令
1.4.2.1作用
也可以查看网络连接情况, 相较于netstat,提供了更快速和更详细的统计数据。
#命令格式
ss [选项]
#常用选项
-t: tcp协议相关
-u: udp协议相关
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-e: 扩展的信息
-m:内存用量
-o:计时器信息
-r: --resolve 把 IP 解释为域名,把端口号解释为协议名称
# 一般用 ss -natp
二.网络测试
2.1ping命令
作用:测试网络连通性
#命令格式
ping [选项] 目标主机 #检查能否连通目标主机,默认是长ping
#常用选项
-c 数字 代表发几个包
-w 数字 表示如果ping不通多久后返回,不会再ping
-W 10 表示如果ping不通10秒后返回
#ping使用icmp协议
2.2traceroute命令
作用:用于跟踪 IP 数据包从源地址到目标地址的路径
traceroute IP地址
2.3nslookup命令
作用:用于查询域名系统(DNS)记录
nslook 域名
三.永久修改网络相关配置文件
3.1网卡
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
NAME=ens33 //网卡名称
BOOTPROTO=static //网卡获取地址模式 none dhcp
ONBOOT=yes //开机是否自启动
IPADDR=192.168.52.105 //配置你自己的IP地址子网网关还有dns服务器
NETMASK=255.255.255.0 //PREFIX=24
GATEWAY=192.168.52.2
DNS1=8.8.8.8
DNS2=114.114.114.114
// IPADDR= 设置静态IP地址。
NETMASK= 设置子网掩码。
GATEWAY= 设置默认网关。
DNS1= 设置首选DNS服务器。
DNS2= 设置备用DNS服务器。 //
[root@localhost ~]# systemctl restart network //重启网卡服务
[root@localhost ~]# ping 192.168.52.1 //测试网络是否通顺
PING 192.168.52.1 (192.168.52.1) 56(84) bytes of data.
64 bytes from 192.168.52.1: icmp_seq=1 ttl=128 time=0.871 ms
64 bytes from 192.168.52.1: icmp_seq=2 ttl=128 time=0.487 ms
64 bytes from 192.168.52.1: icmp_seq=3 ttl=128 time=0.347 ms
3.2添加新网卡
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
将已有的网卡配置导入
只需进行少量修改
systemctl restart network #重启网络服务
四.多网卡绑定bond
4.1 什么是bond
bond(网络绑定或链路聚合),将多个网络接口绑定在一起,形成一个虚拟的网络接口。
bond技术可以增加带宽、提高连接可靠性和实现负载均衡。
4.2 Bonding 聚合链路工作模式
模式 | 名称 | 工作原理 | 适用场景 |
---|---|---|---|
mode=0 | balance-rr | 轮询(Round Robin):数据包依次从每个网卡发送。 | 负载均衡,但可能乱序(不推荐 TCP) |
mode=1 | active-backup | 主备模式:只有一个网卡活跃,其他备用,故障时自动切换。 | 高可用性(默认推荐) |
mode=2 | balance-xor | XOR 哈希:根据源/目标 MAC/IP/端口计算哈希,固定流走固定网卡。 | 负载均衡(需交换机支持) |
mode=3 | broadcast | 广播:所有数据包从所有网卡发送。 | 冗余性(极少使用) |
mode=4 | 802.3ad | LACP 动态聚合:需交换机支持 802.3ad,自动协商聚合链路。 | 企业级负载均衡 + 冗余 |
mode=5 | balance-tlb | 自适应发送负载均衡:根据当前负载分配流量,接收仅走主卡。 | 无需交换机支持 |
mode=6 | balance-alb | 自适应负载均衡:发送和接收都智能分配(需 ARP 协商)。 | 智能负载均衡(家用/小型网络) |
4.3 模拟实现bond mod=1
1)添加网卡
ifconfig #查看是否添加成功新网卡
2)编辑网卡配置文件
cd /etc/sysconfig/network-scripts #切换到配置文件所在目录 方便编辑
##添加ifcfg-bond0文件##
vim ifcfg-bond0
NAME=bond0
TYPE=bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.91.22
NETMASK=255.255.255.0
GATEWAY=192.168.91.2
DNS1=8.8.8.8
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
#miimon指定链路监测时间间隔。如果miimon=100,那么系统每100ms 监测一次链路连接状态,
如果有一条线路不通就转入另一条线路
#fail_over_mac=1" 永远使用活着的 网卡的mac地址
##修改ifcfg-ens33文件##
vim ifcfg-ens33
BOOTPROTO=static #none=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
MASTER=bond0 #主网卡为bond0
SLAVE=yes #自身为备网卡
vim ifcfg-ens36
NAME=ens36
DEVICE=ens36
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
systemctl restart network #重启网络服务,应用修改
3)查看bond0状态,看看是否配置成功
cat /proc/net/bonding/bond0 #查看bond0状态
ifconfig ens33 down #关闭ens33接口 模拟出错
cat /proc/net/bonding/bond0 #查看bond0状态
五.tcpdump 抓包工具
5.1命令格式
//格式
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 端口范围
常见选项
选项 | 说明 |
---|---|
-i <网卡> | 指定监听的网卡(如 eth0 , wlan0 , any ) |
-n | 禁用 DNS 解析(直接显示 IP,提升速度) |
-nn | 禁用端口解析(不显示 http /ssh 等协议名)直接显示ip和端口号 |
-c <数量> | 抓取指定数量的包后停止(如 -c 10 抓 10 个包) |
-w <文件> | 保存抓包数据到 pcap 文件(可用 Wireshark 分析) |
-r <文件> | 读取 pcap 文件(分析已保存的数据) |
-v | 显示详细信息(TTL、校验和等) |
-C | 需要与w 配合使用 指定单个文件的大小 百万字节 |
-Q | 过滤数据包的方向 in out inout |
-s | 指定数据包的大小 |
-D | 显示所有可用的列表 |
-q | 简洁的输出 |
-t | 在每行的输出中,不显示时间 |
-tt | 输出一个时间戳 |
-ttt | 每行之间的时间间隔 |
-tttt | 详细日期 |
(1) 指定网卡抓包
tcpdump -i eth0 # 监听 eth0 网卡
tcpdump -i any # 监听所有网卡
输出格式讲解:
第一列:时分毫秒 11:53:55.288476
第二例:网络协议ip
第三列:发送方IP地址+端口号 ip地址:192.168.91.1 端口号:47496 >表示数据流向
第四列:主机名协议 主机名:localhost.localdomain 协议:ssh
第五列: seq号 ack号 win窗口长度 tcp的标志位
#查看网卡
[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 enth0
#监听特定主机,监听主机10.0.0.100 的通信包,注意:出、入的包都会被监听。
tcpdump host 10.0.0.100
#特定来源、目标地址的通信
#特定来源
tcpdump src host hostname
#特定目标地址
tcpdump dst host hostname
#如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听
tcpdump host hostname
#面试题
请抓取源地址是10.0.0.6目的地址是10.0.0.7经过eth0网卡的icpm协议包
[root@centos8 ~]#tcpdump -i eth0 -nn icmp and src host 10.0.0.6 and dst host 10.0.0.7
tcpdump -i ens33 -nn icmp and src host 10.0.0.6 and dst host 10.0.0.7
//
参数/过滤条件 作用
-i ens33 监听网卡 ens33(通常是 Linux 的默认以太网接口)
-nn 禁用 DNS 和端口解析,直接显示 IP 和端口号(提升可读性和性能)
icmp 只捕获 ICMP 协议 的数据包(如 Ping 请求/响应)
src host 10.0.0.6 只显示 源 IP 为 10.0.0.6 的包
dst host 10.0.0.7 只显示 目标 IP 为 10.0.0.7 的包
and 逻辑与,组合多个过滤条件
这条命令通常用于:
监控两台主机间的 Ping 通信(如 10.0.0.6 Ping 10.0.0.7)。
排查网络连通性问题(检查 ICMP 包是否能正常到达目标)。
分析 ICMP 包的往返时间(RTT)。
//
#特定端口
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 src 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
2. 过滤规则
(1)按 IP 过滤
tcpdump host 192.168.1.1 # 抓取与 192.168.1.1 相关的流量
tcpdump src 192.168.1.1 # 仅抓取来源 IP
tcpdump dst 192.168.1.1 # 仅抓取目标 IP
(2) 按端口过滤
tcpdump port 80 # 抓取 80 端口(HTTP)
tcpdump src port 22 # 抓取来源 22 端口(SSH)
tcpdump dst port 443 # 抓取目标 443 端口(HTTPS)
(3) 按协议过滤
tcpdump icmp # 抓取 ICMP(Ping 包)
tcpdump tcp # 抓取 TCP 流量
tcpdump udp # 抓取 UDP 流量
(4) 组合过滤
tcpdump "host 192.168.1.1 and port 80" # 抓取 192.168.1.1 的 80 端口流量
tcpdump "tcp and src 192.168.1.1" # 抓取来自 192.168.1.1 的 TCP 流量