萌新起步带你学Linux(五)网络管理

图形化配置

NetworkManager

systemctl start NetworkManager#启用图形配置
systemctl stop NetworkManager#禁用图形配置
systemctl disable --now NetworkManager#禁用开机启动并立即生效
systemctl enable --now NetworkManager#启用开机启动并立即生效

命令行配置

ifconfig

  • 在较新的 Linux 发行版(如 CentOS 8、Ubuntu 20.04+)中,ifconfig 已被弃用,推荐使用 ip 命令(属于 iproute2 工具包)。
  • 需安装 net-tools 包才能使用 ifconfig
### redhat系列
sudo yum -y install net-tools
选项作用
-a查看所有网卡的配置信息,包括未启用网卡
up启用网卡,ifconfig ens33 up,不会重新读取配置文件
down停用网卡,ifconfig ens33 down
  • 常用参数及选项
选项/参数用法示例说明
upifconfig eth0 up启用指定接口
downifconfig eth0 down禁用指定接口
IP地址 + netmaskifconfig eth0 192.168.1.100 netmask 255.255.255.0设置接口的 IPv4 地址和子网掩码
broadcastifconfig eth0 broadcast 192.168.1.255设置接口的广播地址
hw etherifconfig eth0 hw ether 00:11:22:33:44:55修改接口的 MAC 地址
mtuifconfig eth0 mtu 1500设置接口的最大传输单元(MTU)
接口名:别名ifconfig eth0:0 192.168.2.1为接口创建虚拟子接口(别名)
  • 输出说明
字段含义
flags接口状态标志(如 UP, BROADCAST 等)
inetIPv4 地址、子网掩码和广播地址
inet6IPv6 地址及相关配置
ether接口的 MAC 地址
RX packets接收的数据包统计(数量、字节、错误等)
TX packets发送的数据包统计(数量、字节、错误等)
[root@localhost network-scripts]# ifconfig ens160 #查看指定端口信息
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.25.202  netmask 255.255.255.0  broadcast 192.168.25.255
        inet6 fe80::20c:29ff:fe9b:6d3  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:9b:06:d3  txqueuelen 1000  (Ethernet)
        RX packets 33261  bytes 17279556 (16.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 35573  bytes 41020106 (39.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost ~]# ifconfig ens256 down #关闭网卡
[root@localhost ~]# ifconfig ens256 up #开启网卡
[root@localhost ~]# ifconfig ens256 192.168.25.218 netmask 255.255.255.0 #临时配置IP
[root@localhost ~]# ifconfig ens256 broadcast 192.168.25.255 #配置广播地址
[root@localhost ~]# ifconfig -a #查看所有接口简略信息
[root@localhost ~]# ifconfig | grep 'inet' | awk '{print $2}'#查看网卡所有ipv4地址
[root@localhost ~]# ifconfig ens256 0.0.0.0 #清空接口ip地址

ip

  • ip 命令是 Linux 中替代传统网络工具(如 ifconfig、route)的现代工具,属于 iproute2 软件包,适配复杂网络场景,支持命名空间、策略路由等高级功能。
  • 命令格式
ip [选项] 对象 { 子命令 | help }
#常见对象:address(IP 地址)、link(网络接口)、route(路由表)、neigh(ARP 表)、rule(策略路由)等。
#常用选项:-s(显示详细信息)、-4(IPv4)、-6(IPv6)。
子命令常用选项示例说明
ip addrshow, add, del, fluship addr show ip addr add 192.168.1.100/24 dev eth0管理 IP 地址
ip linkshow, set, up, downip link show ip link set eth0 up管理网络接口状态
ip routeshow, add, del, fluship route show ip route add default via 192.168.1.1管理路由表
ip neighshow, flush, add, delip neigh show ip neigh flush dev eth0管理 ARP/NDP 邻居表
ip -s-s(统计信息)ip -s link show eth0显示接口统计信息(收发包、错误等)
ip -4/-6-4(IPv4)、-6(IPv6)ip -4 addr show ip -6 route show过滤 IPv4 或 IPv6 信息
选项/子命令示例说明
显示所有接口地址ip addr showip a显示所有网络接口的详细地址信息。
显示指定接口地址ip addr show eth0仅显示 eth0 接口的地址信息。
添加 IPv4 地址sudo ip addr add 192.168.1.100/24 dev eth0eth0 添加 IPv4 地址(含子网掩码)。
添加 IPv6 地址sudo ip addr add 2001:db8::1/64 dev eth0eth0 添加 IPv6 地址。
删除 IP 地址sudo ip addr del 192.168.1.100/24 dev eth0删除 eth0 的指定 IP 地址。
清空接口所有地址sudo ip addr flush dev eth0移除 eth0 上的所有 IP 地址。
添加别名 IP 地址sudo ip addr add 192.168.1.200/24 dev eth0 label eth0:0eth0 创建别名 eth0:0 并分配 IP。
启用/禁用接口sudo ip link set eth0 up sudo ip link set eth0 down启用或禁用 eth0 接口。
简洁格式输出ip -br addrip -brief addr简化输出,仅显示接口名、状态和地址。
过滤 IPv4 地址ip -4 addr仅显示 IPv4 地址。
过滤 IPv6 地址ip -6 addr仅显示 IPv6 地址。
设置广播地址sudo ip addr add 192.168.1.100/24 brd + dev eth0自动计算并设置广播地址(brd + 表示自动)。
显示统计信息ip -s addr show eth0显示 eth0 的收发包统计及错误信息。
显示永久地址ip addr show permanent仅显示永久有效的 IP 地址(非临时配置)。
子命令/选项示例说明
显示路由表ip route show ip route list显示完整路由表(默认)
添加路由sudo ip route add 10.0.0.0/24 via 192.168.1.1 dev eth0添加静态路由到指定网络
删除路由sudo ip route del 10.0.0.0/24删除指定网络的路由
添加默认网关sudo ip route add default via 192.168.1.1设置默认路由(所有流量经此网关)
删除默认网关sudo ip route del default删除默认路由
添加特定主机路由sudo ip route add 203.0.113.5/32 via 192.168.1.1添加指向单个主机的路由
按接口显示路由ip route show dev eth0仅显示与 eth0 关联的路由
修改路由sudo ip route change default via 192.168.2.1修改默认网关为 192.168.2.1
刷新缓存路由sudo ip route flush cache清除路由缓存
显示路由表(简洁)ip route show table main显示主路由表(默认表)
指定路由表sudo ip route add 10.0.0.0/24 via 192.168.1.1 table 100将路由添加到自定义路由表(ID 100)
设置路由权重(metric)sudo ip route add 192.168.2.0/24 via 192.168.1.1 metric 50指定路由优先级(metric 值越小优先级越高)
### 管理接口与ip地址
# 显示所有接口的 IP 地址
ip addr show

# 为 eth0 添加 IPv4 地址
sudo ip addr add 192.168.1.100/24 dev eth0

# 删除 eth0 的 IPv4 地址
sudo ip addr del 192.168.1.100/24 dev eth0

# 启用/禁用接口
sudo ip link set eth0 up
sudo ip link set eth0 down

### 管理路由
# 显示路由表
ip route show

# 添加默认网关
sudo ip route add default via 192.168.1.1

# 添加静态路由
sudo ip route add 10.0.0.0/24 via 192.168.1.2

# 删除路由
sudo ip route del 10.0.0.0/24

###管理邻居表
# 显示 ARP 表
ip neigh show

# 清除 eth0 的所有 ARP 缓存
sudo ip neigh flush dev eth0

 ### 统计信息
 # 显示 eth0 的详细统计信息
ip -s link show eth0

# 显示所有接口的简要统计
ip -s link
[root@localhost ~]# ip link show #查看所有接口状态
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
[root@localhost ~]# ip l #查看所有接口状态
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
[root@localhost ~]# ip link set ens256 down#关闭网卡
[root@localhost ~]# ip link set ens256 up#开启网卡
[root@localhost ~]# ip -s link  show ens160 #查看接口统计信息
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:4d:c8:99 brd ff:ff:ff:ff:ff:ff
    RX:  bytes packets errors dropped  missed   mcast           
        448578    3581      0       0       0    1213 
    TX:  bytes packets errors dropped carrier collsns           
       2727778    2936      0       0       0       0 
    altname enp3s0
[root@localhost ~]# ip addr show#查看所有接口的ip地址
[root@localhost ~]# ip a#查看所有接口的ip地址
功能传统命令现代 ip 命令
显示接口信息ifconfigip link show
设置 IPifconfig eth0ip addr add
查看路由表route -nip route show
添加路由route addip route add
ARP 表查询arp -nip neigh show
VLAN 配置vconfigip link add type vlan
  • 通过 ip 命令,可以实现几乎所有 Linux 网络配置操作,尤其适合自动化脚本和复杂网络环境。推荐优先使用 ip 而非传统命令。

route路由配置

  • route 是 Linux 中用于查看和操作路由表的传统命令(逐渐被 ip route 取代,但仍广泛使用)
  • 基本语法
route [选项] [操作] [目标] [参数]
  • 常用选项及示例
选项/操作用法示例说明
查看路由表route -n显示数字格式的路由表(不解析主机名)
添加路由sudo route add -net 10.0.0.0/24 gw 192.168.1.1添加静态路由
删除路由sudo route del -net 10.0.0.0/24删除指定路由
添加默认网关sudo route add default gw 192.168.1.1设置默认网关
删除默认网关sudo route del default gw 192.168.1.1删除默认网关
指定网络接口sudo route add -net 172.16.0.0/16 gw 192.168.1.1 dev eth0通过指定接口添加路由
添加主机路由sudo route add -host 203.0.113.5 gw 192.168.1.1添加单个主机的路由
删除主机路由sudo route del -host 203.0.113.5删除单个主机的路由
显示 IPv6 路由route -A inet6 -n显示 IPv6 路由表(需系统支持)
route -n   # 推荐使用 -n 避免 DNS 解析延迟
sudo route add default gw 192.168.1.1 dev eth0 #添加默认网关

# 添加指向 10.0.0.0/24 网络的路由,网关为 192.168.1.1
sudo route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.1

# 删除到 10.0.0.0/24 网络的路由
sudo route del -net 10.0.0.0 netmask 255.255.255.0

# 添加指向特定主机 203.0.113.5 的路由
sudo route add -host 203.0.113.5 gw 192.168.1.1

nmcli

  • nmcli是NetworkManager的一个命令行工具,它提供了使用命令行配置NetworkManager管理网络连接的方法(nm 代表 NetworkManager,cli 代表 Command-Line)
  • 常用命令速查
类别命令/参数描述
连接管理nmcli con show显示所有网络连接配置
nmcli con show --active显示活动的网络连接
nmcli con up <name>激活指定连接
nmcli con down <name>停用指定连接
nmcli con add添加新连接(需配合参数)
设备管理nmcli dev status显示设备状态(如 WiFi、以太网)
nmcli dev wifi list扫描可用的 WiFi 网络
nmcli dev disconnect <iface>断开设备连接
监控nmcli mon实时监控网络活动
通用选项-p以更友好的格式输出
-t以简洁的机器可读格式输出
-f <fields>指定输出的字段(如 nmcli -f name,device con show
WiFi 操作nmcli radio wifi_name on打开 WiFi 设备
nmcli radio wifi_name off关闭 WiFi 设备
nmcli connection
  • 常用命令速查
命令说明
nmcli con show显示所有保存的连接配置
nmcli con show --active仅显示活动的连接
nmcli con show <连接名>查看指定连接的详细信息
nmcli con up <连接名>激活连接(若未指定,尝试自动连接)
nmcli con down <连接名>停用连接
nmcli con add创建新连接(需配合参数)
nmcli con delete <连接名>删除保存的连接配置
nmcli con modify <连接名>修改连接参数(如 IP、DNS 等)
nmcli con reload重新加载所有连接配置(修改配置文件后使用)
nmcli con edit <连接名>进入交互式编辑模式
#显示所有连接
nmcli con show
#创建静态 IP 的以太网连接,根据实际情况需求更改名称
nmcli con add type ethernet con-name "Static-Eth0" ifname eth0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 ipv4.method manual
##修改连接的 DNS 服务器
nmcli con modify "Office-WiFi" ipv4.dns "1.1.1.1,8.8.8.8"
nmcli con down "Office-WiFi" && nmcli con up "Office-WiFi"  # 重启生效

# 扫描 WiFi 网络
nmcli dev wifi list
# 连接到指定 WiFi(使用密码)
nmcli con add type wifi con-name "Home-WiFi" ifname wlan0 ssid "MyWiFi" wifi-sec.key-mgmt wpa-psk  wifi-sec.psk "mypassword"

#删除连接
nmcli con delete "Obsolete-Connection"

# 创建网桥
nmcli con add type bridge con-name "MyBridge" ifname br0
# 将 eth0 加入网桥
nmcli con add type ethernet slave-type bridge con-name "Bridge-Slave" ifname eth0 master br0
# 激活网桥
nmcli con up "MyBridge"

#配置 VLAN 接口
nmcli con add type vlan con-name "VLAN-100" ifname eth0.100 dev eth0 id 100 ipv4.addresses 10.0.100.10/24 ipv4.method manual

#设置连接优先级
nmcli con modify "Primary-WiFi" connection.autoconnect-priority 100
nmcli con modify "Backup-WiFi" connection.autoconnect-priority 50

#配置文件导入连接
nmcli con import type ethernet file /path/to/connection.nmconnection

#强制重新加载配置
nmcli con reload  # 适用于手动修改了配置文件后
nmcli device
命令/参数说明示例
nmcli dev status显示所有网络设备的状态(设备名、类型、状态、连接名称)nmcli dev status
nmcli dev show <设备名>显示指定设备的详细信息(IP、MAC、驱动等)nmcli dev show eth0
nmcli dev wifi list扫描并列出所有可用的 WiFi 网络(需 WiFi 设备已启用)nmcli dev wifi list
nmcli dev wifi connect <SSID>连接到指定 WiFi(需提供密码时使用 password 参数)nmcli dev wifi connect MyWiFi password 12345678
nmcli dev disconnect <设备名>强制断开设备连接(适用于无法通过 con down 停用的情况)nmcli dev disconnect eth0
nmcli dev connect <设备名>强制重新连接设备(适用于设备异常断开后恢复)nmcli dev connect wlan0
nmcli dev set <设备名> managed控制设备是否由 NetworkManager 管理(yes/nonmcli dev set eth0 managed no # 禁止管理 eth0
nmcli dev reapply <设备名>重新应用设备配置(适用于临时修改后恢复)nmcli dev reapply eth0
nmcli dev monitor实时监控设备状态变化(类似 nmcli mon,但专注设备事件)nmcli dev monitor

应用实例

centos7/rockey8配置静态ipv4
  • 通过配置文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.25.202
NETMASK=255.255.255.0
GATEWAY=192.168.25.2
DNS1=192.168.25.2
NAME=ens160
DEVICE=ens160                                                        
ONBOOT=yes
[root@localhost ~]# ifdown ens160 && ifup ens 160
  • 通过ip命令配置临时静态ip,重启后失效。可将命令写入配置文件变成开机重配
#临时配置,非持久化
[root@localhost ~]# ip addr add 192.168.25.203/24 dev ens37
[root@localhost ~]# ip link set ens37 down && ip lin set ens37 up
rockey9配置静态ipv4
  • 通过命令修改静态ip,持久化配置
#通过nmcli配置静态ip,根据具体网卡名称配置对应地址
[root@localhost ~]# nmcli con modif "ens160" ipv4.addresses 192.168.25.207/24 ipv4.gateway 192.168.25.2 ipv4.dns 192.168.25.2 ipv4.method manual
[root@localhost ~]# nmcli con down ens160 && nmcli con up ens160#重启网卡
  • 通过修改配置文件配置静态ip
[root@localhost system-connections]# vim /etc/NetworkManager/system-connections/ens160.nmconnection #修改配置文件,需要根据网卡名称修改对应文件名称
[ipv4]
address1=192.168.25.207/24,192.168.25.2
dns=192.168.25.2;
method=manual
[root@localhost ~]# nmcli con down ens160 && nmcli con up ens160
rockey8通过配置文件配置多ip
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-en160
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
ONBOOT=yes

# 第一个 IP 地址
IPADDR=192.168.25.202
PREFIX=24
GATEWAY=192.168.25.2
DNS1=192.168.25.2

# 第二个 IP 地址
IPADDR1=192.168.20.203
PREFIX1=24
[root@localhost ~]# nmcli c down ens160 && nmcli c up ens160
rockey9通过nmcli命令配置多ip
[root@localhost ~]# nmcli con modify ens160 +ipv4.addresses "192.168.25.204/24"
[root@localhost ~]# nmcli c down ens160 && nmcli c up ens160
bond网卡绑定技术
  • Bond(网卡绑定)是将多个物理网卡(NIC)聚合成一个逻辑接口的技术,用于实现 高可用性(HA)带宽叠加。通过 Bonding,可以提升网络吞吐量、冗余性和容错能力,确保单块网卡故障时网络不中断
  • bond技术模式信息
模式名称描述
0balance-rr(轮询)流量在多个网卡间轮询分发,提供负载均衡和容错,需交换机支持
1active-backup(主备)仅一个网卡活跃,其他为备份,故障时自动切换。无需交换机支持。 适合高可用场景。
2balance-xor(异或)根据源/目的 MAC 地址哈希选择网卡,同一会话的流量固定走一个网卡。需交换机支持。
3broadcast(广播)所有流量广播到所有网卡,仅用于特殊场景(如网络冗余)。
4802.3ad(动态聚合)基于 LACP(链路聚合协议)的动态聚合,需交换机开启 LACP 支持。 动态聚合(企业级推荐),需交换机配合。
5balance-tlb(自适应根据当前负载分配流量,发送流量负载均衡,接收流量仅通过主网卡。无需交换机支持。
6balance-alb(自适应)**发送和接收流量均负载均衡,通过 ARP 协商实现。无需交换机支持。**平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持
使用配置文件配置(基于rockey8)
  • 以下环境均在root用户下进行,若使用普通用户,可使用sudo命令提权

  • 环境准备

    • 使用在VMware虚拟机设置中为rockey8虚拟机添加两块网卡
[root@localhost net]# cat /etc/redhat-release#查看系统版本信息
Rocky Linux release 8.10 (Green Obsidian)
[root@localhost net]# dnf install -y NetworkManager-tui net-tools #安装必要工具
Repository extras is listed more than once in the configuration
  • 使用传统network-scripts配置bond
  • 配置bond0文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0#配置文件
TYPE=Bond
DEVICE=bond0
NAME=bond0
BONDING_MASTER=yes
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.25.201
NETMASK=255.255.255.0
GATEWAY=192.168.25.2
DNS1=192.168.25.2
BONDING_OPTS="mode=6 miimon=100"
  • 配置从属网卡,根据自己网卡名称更改配置内容
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
BOOTPROTO=none
DEVICE=ens160
NAME=eth160
TYPE=Ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens256
BOOTPROTO=none
DEVICE=ens256
NAME=eth256
TYPE=Ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
###重启网络
#### 使用nmcli
[root@localhost ~]# systemctl restart NetworkManager
[root@localhost ~]# nmcli #待补充


##旧版使用命令和环境
[root@localhost ~]# yum -y install epel-release
[root@localhost ~]# yum -y install network-scripts
[root@localhost ~]# systemctl disable --now NetworkManager
[root@localhost ~]# systemctl enable --now network
[root@localhost ~]# ifdown ens160 && ifup ens160 &^Cifdown ens256 && ifup ens256 && ifup bond0

使用nmcli配置工具配置(基于rockey9)
  • 配置自适应路由
  • 添加bond0虚拟主网卡
nmcli connection add type bond con-name bond0 ifname bond0 mode balance-alb ipv4.method manual ipv4.addresses 192.168.25.208/24 ipv4.gateway 192.168.25.2 ipv4.dns 192.168.25.2 bond.options "mode=6,miimon=100"

###配置balance-alb,如需配置802.3ad需要交换机支持
[root@localhost ~]# nmcli connection add type bond con-name bond0 ifname bond0 mode balance-alb ipv4.method manual ipv4.addresses 192.168.25.208/24 ipv4.gateway 192.168.25.2 ipv4.dns 192.168.25.2 bond.options "mode=6,miimon=100"
Connection 'bond0' (1d234417-311d-4236-bf9d-ad682cc23935) successfully added.
  • 为bond0配置从网卡
nmcli connection add type ethernet slave-type bond con-name xxxx ifname xxx master bond0

###ens224与ens256为VMware为虚拟机新增的网卡
[root@localhost ~]# nmcli connection add type ethernet slave-type bond con-name ens224 ifname ens224 master bond0
Connection 'ens224' (8a193036-c517-444a-9af2-98eca950000d) successfully added.
[root@localhost ~]#  nmcli connection add type ethernet slave-type bond con-name  ens256 ifname ens256 master bond0
Connection 'ens256' (1b54e667-e2d4-4587-93a8-6b149d93eacc) successfully added.

网络连接查看

netstat

  • netstat(Network Statistics)是用于查看 网络连接状态路由表接口统计信息 的命令行工具。尽管在较新系统中推荐使用 ss 替代,但 netstat 仍是排查网络问题的经典工具。 ss(更高效,直接读取内核数据)
选项说明常用组合
-a显示所有连接(包括监听和非监听)netstat -a
-t仅显示 TCP 协议连接netstat -t
-u仅显示 UDP 协议连接netstat -u
-n以数字形式显示地址和端口(禁用 DNS 解析)netstat -tn
-l仅显示监听中的端口(Listen)netstat -l
-p显示进程 ID 和程序名(需 root 权限)netstat -p
-r显示内核路由表netstat -r(等同 route -n
-i显示网络接口统计信息(收发数据包、错误等)netstat -i
-s按协议汇总统计信息(TCP/UDP/ICMP 等)netstat -s
-c持续输出(实时刷新)netstat -ct
状态说明
ESTABLISHED已建立的连接(正常数据传输中)。
LISTEN服务正在监听端口(等待连接请求)。
TIME_WAIT连接已关闭,等待处理延迟数据包(防止残留数据干扰新连接)。
CLOSE_WAIT远程已关闭连接,本地等待关闭操作(可能需检查程序是否释放资源)。
SYN_SENT客户端发起连接请求(等待服务端响应)。
[root@localhost ~]#netstat -naplt#tcp
[root@localhost ~]#netstat -naplu#upd
[root@localhost ~]#netstat -unaplt#tcp+udp

#持续监控 TCP 连接变化
[root@localhost ~]# watch -n 1 "netstat -ant | grep ESTABLISHED"

#检测异常外联连接
netstat -ant | grep ESTABLISHED | awk '{print $5}' | sort | uniq -c

#检查服务是否监听正确地址
netstat -tln | grep 0.0.0.0:3306

ss

  • ss(Socket Statistics)是 Linux 系统下替代 netstat 的高效网络工具,用于查看 套接字连接状态网络接口统计路由信息。它直接读取内核数据,速度更快,功能更强大
选项说明
-t显示 TCP 连接
-u显示 UDP 连接
-l显示监听中的端口(LISTEN 状态)
-n禁用域名解析(显示 IP 和端口号)
-a显示所有连接(包括监听和非监听)
-p显示进程信息(需要 root 权限
-s显示统计信息(汇总 TCP/UDP 状态)
-4仅显示 IPv4 连接
-6仅显示 IPv6 连接
-o显示计时器信息(如连接保持时间)
-i显示 TCP 内部信息(如拥塞控制算法)
# 查看所有 TCP 连接
ss -tna

# 显示进程和用户信息
sudo ss -tnap

# 显示所有 ESTABLISHED 状态的 TCP 连接
ss -tn state established

# 显示 TIME-WAIT 状态的连接
ss -tn state time-wait

# 查看统计信息
ss -s

# 分析 TCP 内部参数
ss -ti

linux下抓包工具

tcpdump
  • tcpdump 是 Linux 系统下的命令行网络抓包工具,能够捕获和分析网络接口上的数据包,用于调试网络问题、安全分析及协议学习。
  • 常用选项
选项说明
-i <接口>指定监听的网络接口(如 eth0any 表示所有接口)。
-n禁用域名解析(IP 和端口显示为数字)。
-nn禁用域名和端口服务名解析(完全显示数字)。
-v显示详细信息(-vv-vvv 更详细)。
-c <数量>捕获指定数量的包后退出。
-w <文件>将抓包数据保存到文件(如 .pcap 格式,可用 Wireshark 分析)。
-r <文件>读取抓包文件并分析。
-s <长度>设置抓包长度(默认 262144 字节,-s 0 表示抓完整包)。
-A以 ASCII 格式显示包内容(适合 HTTP 分析)。
-X同时以十六进制和 ASCII 显示包内容。
# 捕获 eth0 接口的所有流量(Ctrl+C 停止)
sudo tcpdump -i eth0

# 捕获并显示 IP 和端口号(禁用解析)
sudo tcpdump -nni eth0

# 捕获 10 个包后退出
sudo tcpdump -c 10 -i eth0

# 保存抓包数据到文件
sudo tcpdump -i eth0 -w capture.pcap
  • 过滤表达式
    • 用单引号包裹表达式避免 Shell 解析错误
表达式说明
host 192.168.1.100过滤与指定 IP 相关的流量(源或目标)。
src 192.168.1.100过滤源 IP 为 192.168.1.100 的流量。
dst 192.168.1.100过滤目标 IP 为 192.168.1.100 的流量。
port 80过滤端口为 80 的流量。
portrange 8000-8080过滤端口范围在 8000-8080 的流量。
tcp / udp / icmp过滤指定协议。
net 192.168.1.0/24过滤指定子网的流量。
运算符说明示例
and (&&)逻辑与tcp and port 80
or (||)逻辑或udp or icmp
not (!)逻辑非not src 192.168.1.1
# 捕获 HTTP 流量(目标端口 80)
sudo tcpdump -nni eth0 'tcp dst port 80'

# 捕获来自 192.168.1.100 的 SSH 流量(端口 22)
sudo tcpdump -nni eth0 'src 192.168.1.100 and tcp port 22'

# 捕获 ICMP 包(如 ping 请求)
sudo tcpdump -nni eth0 icmp

# 捕获非 HTTP/HTTPS 的 TCP 流量
sudo tcpdump -nni eth0 'tcp and not (port 80 or port 443)'

# 捕获 TCP 三次握手(SYN/SYN-ACK/ACK)
sudo tcpdump -nni eth0 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'

# 捕获 TCP 连接关闭(FIN)
sudo tcpdump -nni eth0 'tcp[tcpflags] & tcp-fin != 0'

# 提取 HTTP 请求头
sudo tcpdump -Anni eth0 'tcp port 80' | grep -B1 "GET /"

# 捕获并实时显示 HTTP 请求
sudo tcpdump -nni eth0 -s 0 -l -A 'tcp port 80' | grep -E 'GET|POST|Host'

# 统计流量信息
# 统计每个 IP 的流量大小(按 Ctrl+C 终止后显示)
sudo tcpdump -nni eth0 -q -Q in -l | awk '{print $3}' | sort | uniq -c | sort -nr

# 检查arp欺骗
# 捕获 ARP 响应包并检查 IP-MAC 映射
sudo tcpdump -nni eth0 -e 'arp' | awk '/ARP Reply/{print $8 " -> " $10}'

# 保存抓包数据后用 Wireshark 打开
sudo tcpdump -i eth0 -w capture.pcap
wireshark capture.pcap
wireshark
  • 待补充
traceroute
  • traceroute(Windows 下为 tracert)用于追踪数据包从源主机到目标主机的路径,显示途径的每一跳(Hop)路由节点及延迟。它是网络故障排查的必备工具
选项说明示例
-n禁用 IP 地址反向解析(加快输出速度)traceroute -n example.com
-m <最大跳数>设置最大追踪跳数(默认 30)traceroute -m 20 example.com
-q <探测包数量>每跳发送的探测包数量(默认 3)traceroute -q 5 example.com
-w <超时秒数>设置等待响应的超时时间(默认 5 秒)traceroute -w 3 example.com
-I使用 ICMP 协议(Linux 默认 UDP,需 root 权限)sudo traceroute -I example.com
-T使用 TCP SYN 探测(需安装 tcptraceroutesudo tcptraceroute -T example.com 80
-p <端口>指定目标端口(TCP/UDP 协议时有效)traceroute -p 443 example.com
--sport <源端口>指定源端口(绕过防火墙策略)traceroute --sport 53 example.com
# 追踪到目标主机的路径(Linux/macOS)
traceroute example.com

# 安装 tcptraceroute
sudo apt install tcptraceroute

# 使用 TCP SYN 探测 80 端口
sudo tcptraceroute -T -p 80 example.com

# 安装 mtr(更强大的追踪工具)
sudo apt install mtr
# 实时监控路径和丢包率
mtr -n example.com

traceroute -nI 目标  # Linux 快速 ICMP 追踪
tcptraceroute -T 目标 80  # TCP 协议绕过限制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值