Linux网络配置


修改网络地址

方法一 使用nmtui命令

[root@localhost ~]# nmtui

image-20240110222848979

image-20240110222933894

image-20240110223032103

方法二 修改配置文件

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet     # TYPE:网络类型,这里是以太网
PROXY_METHOD=none  # PROXY_METHOD:代理方式,这里是没有代理
BROWSER_ONLY=no    # BROWSER_ONLY:是否仅限浏览器使用代理
BOOTPROTO=none    #BOOTPROTO:启动时获取 IP 地址的方式,这里是不启用
DEFROUTE=yes      # DEFROUTE:默认路由是否可用
IPV4_FAILURE_FATAL=no # IPV4_FAILURE_FATAL:IPv4 是否必须要配置成功
IPV6INIT=yes      # IPV6INIT:是否启用 IPv6
IPV6_AUTOCONF=yes  # IPV6_AUTOCONF:是否启用 IPv6 自动获取地址
IPV6_DEFROUTE=yes  # IPV6_DEFROUTE:IPv6 是否启用默认路由
IPV6_FAILURE_FATAL=no # IPV6_FAILURE_FATAL:IPv6 是否必须要配置成功
IPV6_ADDR_GEN_MODE=stable-privacy # IPV6_ADDR_GEN_MODE:IPv6 地址生成方式,这里是稳定随机地址
NAME=ens33 # NAME:网络接口名称
UUID=7ebb3482-92bd-490c-9c87-018203161ea3 # UUID:网络接口 UUID
DEVICE=ens33 # DEVICE:网络接口设备名称
ONBOOT=yes  # ONBOOT:是否在系统启动时自动启用该网络接口
IPADDR=192.168.8.10 # IPADDR:IPv4 地址
PREFIX=24 # PREFIX:IPv4 掩码长度
GATEWAY=192.168.8.2 # GATEWAY:IPv4 网关地址
DNS1=8.8.8.8 # DNS1:首选 DNS 服务器地址
IPV6_PRIVACY=no # IPV6_PRIVACY:是否开启 IPv6 隐私模式。

补充:

在给定的网络配置文件中,UUID(Universally Unique Identifier)是网络接口的唯一标识符。每个网络接口都会被分配一个独特的 UUID,用于标识和区分不同的网络接口。在这个配置文件中,UUID 是 “7ebb3482-92bd-490c-9c87-018203161ea3”。

# 修改IP
IPADDR=192.168.8.11
# 修改子网掩码
NETMASK=255.255.255.0
# 修改DNS1
DNS1=114.114.114.114

修改完成后,需要重启网络服务以使配置生效。可以运行以下命令来重启网络服务:

sudo systemctl restart network

查看ip信息

[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.8.11  netmask 255.255.255.0  broadcast 192.168.8.255
        inet6 fe80::36e:c73c:d10e:4fdb  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0a:5f:d2  txqueuelen 1000  (Ethernet)
        RX packets 103  bytes 13371 (13.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 131  bytes 17811 (17.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

网络配置文件

/etc/NetworkManager/NetworkManager.conf

NetworkManager服务配置文件,如果没有特殊需求不建议调整,如果需要调整的话,调整之前备份,调整完成重新启动服务

/etc/sysconfig/network-scripts/ifcfg-xx网卡配置文件

网卡配置文件中的关键参数
[root@zuolaoshi ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet" 网卡类型
BOOTPROTO="dhcp"    IP获取方式dhcp/staticnone
DEFROUTE="yes"      是否设置为IPV4默认路由
NAME="ens33"    连接名称
UUID="b5ecf570-543c-4da7-b082-bdc073b56acb" 网卡识别号
DEVICE="ens33"  设备名称
ONBOOT="yes"        是否开机自动启动此网络连接


额外设置参数
NM_CONTROLLED=yes   是否被NetworkManager服务管理默认yes
IPADDR          ip地址
NETMASK         子网掩码
GATEWAY         定义网关
DNS1            dns地址   优先级高于/etc/resolv.conf
DNS2            dns地址
USERCTL         是否允许普通用户控制此设备
PEERDNS         是否允许自动修改dns配置文件/etc/resolv.conf
PREFIX          掩码长度

/etc/hostname 主机名配置文件

[root@zuolaoshi ~]# cat /etc/hostname 
zuolaoshi

/etc/resolv.conf DNS配置文件

[root@zuolaoshi ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.17.2
nameserver 202.106.0.20
nameserver 114.114.114.114

其它命令

  • ifconfig命令:查看网卡信息
[root@zuolaoshi ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500     连接信息
        inet 192.168.1.55  netmask 255.255.255.0  broadcast 192.168.1.255   IPV4地址信息
        inet6 fe80::ea62:91c6:114:18bb  prefixlen 64  scopeid 0x20<link>    IPV6地址信息
        ether 00:0c:29:11:47:97  txqueuelen 1000  (Ethernet)    mac地址
        RX packets 174914  bytes 51397660 (49.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0   接收到的数据包统计
        TX packets 24446  bytes 3114546 (2.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  发送的数据包统计
# 停用网卡
[root@zuolaoshi ~]# ifconfig ens37 down
# 启用网卡
[root@zuolaoshi ~]# ifconfig ens37 up
# 设置一个临时IP
[root@zuolaoshi ~]# ifconfig ens37 192.168.18.100
  • route命令:设置路由
[root@zuolaoshi ~]# route
    -n   以数字的形式显示路由信息
    add/del  添加/删除路由信息需要配合下面参数使用
    -net     指定为一个网络
    -host    指定为一台主机
    netmask  指定掩码
    gw   指定网关
    dev  指定设备

Destination    Gateway      Genmask             Flags   Metric Ref  Use  Iface
0.0.0.0         192.168.1.1 0.0.0.0         UG      102    0    0    ens33
192.168.1.0     0.0.0.0     255.255.255.0 U         102    0    0    ens33
192.168.20.0  0.0.0.0     255.255.255.0 U       100    0    0    ens37

主要信息
Destination     目的地址    
Gateway         网关
Genmask          掩码
Flags            标识 U=启用H=主机G=网关  
Iface           接口
添加路由信息
[root@zuolaoshi ~]#route add -net 192.168.20.0/24 dev ens37
删除路由信息
[root@zuolaoshi ~]#route del -net 192.168.20.0/24   dev ens37

dhclient获取与释放IP地址
[root@zuolaoshi ~]# dhclient -r ens37
[root@zuolaoshi ~]# dhclient ens37
  • ping连通性测试工具
[root@zuolaoshi ~]# ping
    c           指定次数
    n           以数字的形式显示结果
    f           洪水ping,以最快的速度收发数据包,慎用

[root@zuolaoshi ~]# ping -c 5 -n www.163.com
PING z163ipv6.v.bsgslb.cn (111.202.34.27) 56(84) bytes of data.
64 bytes from 111.202.34.27: icmp_seq=1 ttl=128 time=5.25 ms
64 bytes from 111.202.34.27: icmp_seq=2 ttl=128 time=8.54 ms
64 bytes from 111.202.34.27: icmp_seq=3 ttl=128 time=6.22 ms
64 bytes from 111.202.34.27: icmp_seq=4 ttl=128 time=5.78 ms
64 bytes from 111.202.34.27: icmp_seq=5 ttl=128 time=5.60 ms

--- z163ipv6.v.bsgslb.cn ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 13ms
rtt min/avg/max/mdev = 5.253/6.278/8.536/1.173 ms

Netstat 简介

Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。如果你想确认系统上的 Web 服务有没有起来,你可以查看80端口有没有打开。以上功能使 netstat 成为网管和系统管理员的必备利器。在这篇教程中,我会列出几个例子,教大家如何使用 netstat 去查找网络连接信息和系统开启的端口号

以下的简单介绍来自 netstat 的 man 手册:

netstat 打印网络连接、路由表、连接的数据统计、伪装连接以及广播域成员。

1. 列出所有连接

第一个要介绍的,是最简单的命令:列出所有当前的连接。使用 -a 选项即可。

# netstat -a 

上述命令列出 tcp, udp 和 unix 协议下所有套接字的所有连接。然而这些信息还不够详细,管理员往往需要查看某个协议或端口的具体连接情况。

2. 只列出 TCP 或 UDP 协议的连接

使用 -t 选项列出 TCP 协议的连接:

# netstat -at

使用 -u 选项列出 UDP 协议的连接:

# netstat -au

上面同时显示了 IPv4 和 IPv6 的连接。

3. 禁用反向域名解析,加快查询速度

默认情况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名。这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。

# netstat -an

上述命令列出所有 TCP 协议的连接,没有使用域名解析技术。So easy ? 非常好。

4. 只列出监听中的连接

任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来。使用 -l 选项列出正在监听的套接字。

# netstat -tnl

现在我们可以看到处于监听状态的 TCP 端口和连接。如果你查看所有监听端口,去掉 -t 选项。如果你只想查看 UDP 端口,使用 -u 选项,代替 -t 选项。

注意:不要使用 -a 选项,否则 netstat 会列出所有连接,而不仅仅是监听端口。

5. 获取进程名、进程号以及用户 ID

查看端口和连接的信息时,能查看到它们对应的进程名和进程号对系统管理员来说是非常有帮助的。举个栗子,Apache 的 httpd 服务开启80端口,如果你要查看 http 服务是否已经启动,或者 http 服务是由 apache 还是 nginx 启动的,这时候你可以看看进程名。

使用 -p 选项查看进程信息。

# netstat -nlpt

使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。

相比进程名和进程号而言,查看进程的拥有者会更有用。使用 -ep 选项可以同时查看进程名和用户名。

# netstat -ltpe

上面列出 TCP 协议下的监听套接字,同时显示进程信息和一些额外信息。

这些额外的信息包括用户名和进程的索引节点号。这个命令对网管来说很有用。

注意 - 假如你将 -n-e 选项一起使用,User 列的属性就是用户的 ID 号,而不是用户名。

6. 打印统计数据

netstat 可以打印出网络统计数据,包括某个协议下的收发包数量。

下面列出所有网络包的统计情况:

# netstat -sIp

如果想只打印出 TCP 或 UDP 协议的统计数据,只要加上对应的选项(-t-u)即可,so easy。

7. 显示内核路由信息

使用 -r 选项打印内核路由信息。打印出来的信息与 route 命令输出的信息一样。我们也可以使用 -n 选项禁止域名解析。

# netstat -rn

8. 打印网络接口

netstat 也能打印网络接口信息,-i 选项就是为这个功能而生。

# netstat -i

上面输出的信息比较原始。我们将 -e 选项和 -i 选项搭配使用,可以输出用户友好的信息。

# netstat -ie

上面的输出信息与 ifconfig 输出的信息一样。

9. netstat 持续输出

我们可以使用 netstat 的 -c 选项持续输出信息。

# netstat -ct

这个命令可持续输出 TCP 协议信息。

10. 显示多播组信息

选项 -g 会输出 IPv4 和 IPv6 的多播组信息。

# netstat -g

更多用法

目前为止我们列出了 netstat 的基本用法,现在让我们一起来 geek 吧~

打印 active 状态的连接

active 状态的套接字连接用 "ESTABLISHED" 字段表示,所以我们可以使用 grep 命令获得 active 状态的连接:

# netstat -atnp | grep ESTA

配合 watch 命令监视 active 状态的连接:

# watch -d -n0 "netstat -atnp | grep ESTA"

查看服务是否在运行

如果你想看看 http,smtp 或 ntp 服务是否在运行,使用 grep。

$ sudo netstat -aple | grep ntp 

从这里可以看到 ntp 服务正在运行。使用 grep 命令你可以查看 http 或 smtp 或其它任何你想查看的服务。

好了,netstat 的大部分功能都介绍过了,如果你想知道 netstat 更高级的功能,阅读它的手册吧(man netstat)。

使用nmcli命令设置网卡信息

一、什么是 nmcli

nmcli 是 Linux 下通过命令行管理网络连接的工具,基于 NetworkManager(图形化网络管理工具的后台服务),支持有线、无线、VPN 等连接配置,适合服务器或无图形界面的环境。

二、前提条件

1.检查 NetworkManager 服务

systemctl status NetworkManager  # 查看状态
systemctl start NetworkManager   # 启动服务(若未运行)

2.确保工具已安装

  • Ubuntu/Debian:sudo apt install network-manager
  • CentOS/RHEL:sudo yum install NetworkManager

三、核心语法与常用选项

基础格式

nmcli [选项] [子命令] [参数]

常用选项

选项 含义
-a 显示所有可用连接
-p 以易读的格式显示输出
--terse 简洁输出(适合脚本使用)

四、基础操作案例

案例 1:查看网络设备状态

nmcli device status  # 查看所有网络设备(网卡、无线等)的状态

输出示例:

DEVICE  TYPE      STATE         CONNECTION  
enp0s3  ethernet  connected     Wired connection 1  
wlp0s2  wifi      disconnected  --                
lo      loopback  unmanaged     --                
  • STATE:设备状态(connected 已连接,disconnected 未连接,unmanaged 未被 NetworkManager 管理)
  • CONNECTION:关联的连接名称(若有)

案例 2:查看网络连接详情

nmcli connection show  # 列出所有已保存的连接

输出示例(关键字段):

  • NAME:连接名称(如 Wired connection 1
  • UUID:唯一标识符(用于脚本)
  • TYPE:连接类型(ethernet 有线,wifi 无线)

查看特定连接详情:

nmcli connection show "Wired connection 1"

案例 3:管理有线连接(以 DHCP 为例)

1.创建有线连接(自动获取 IP)

nmcli connection add \
   type ethernet \          # 连接类型为有线
   con-name "Wired-DHCP" \  # 自定义连接名称
   ifname enp0s3           # 网卡名称(通过 `nmcli device status` 查看)

2.激活连接

nmcli connection up "Wired-DHCP"

3.断开连接

nmcli connection down "Wired-DHCP"

4.删除连接

nmcli connection delete "Wired-DHCP"

案例 4:连接到无线网络(WiFi)

1.扫描可用 WiFi 网络

nmcli device wifi list  # 列出所有可用 SSID

输出示例(重点看 SSIDSIGNAL 信号强度):

SSID             BSSID            SIGNAL  RATE        CHAN  HT  FREQ     TYPE      SECURITY  
MyWiFi           12:34:56:78:9A   70      650 Mbit/s  6     HT20 2.412 GHz Infrastru WPA2  

2.连接到指定 WiFi(需密码)

nmcli device wifi connect "MyWiFi" password "12345678"
  • 若连接成功,状态变为 connected

3.查看已保存的 WiFi 密码(需管理员权限)

nmcli connection show "MyWiFi" | grep -i password  # 密码可能加密,部分系统需解密

案例 5:静态 IP 配置(有线/无线通用)

假设需要配置:

  • IP:192.168.1.100
  • 子网掩码:24(即 255.255.255.0
  • 网关:192.168.1.1
  • DNS:8.8.8.8114.114.114.114

1.创建静态连接

nmcli connection add \
    type ethernet \          # 或 wifi(无线需额外指定 SSID)
    con-name "Static-IP" \
    ifname enp0s3 \
    ip4 192.168.1.100/24 \   # IP + 子网掩码
    gw4 192.168.1.1 \        # 网关
    dns4 8.8.8.8 114.114.114.114  # DNS服务器

2.激活连接

nmcli connection up "Static-IP"

案例 6:临时修改网络参数(不保存配置)

1.临时启用/禁用网卡

nmcli device connect enp0s3  # 启用网卡
nmcli device disconnect enp0s3  # 禁用网卡

2.临时设置 IP(重启后失效)

nmcli device ip set enp0s3 192.168.1.200/24 192.168.1.1

五、常见问题与注意事项

1.权限问题 - 大部分操作需 sudo(管理员权限),除非是普通用户的无线连接。

2.网卡名称 - 通过 nmcli device statusip addr 查看正确的网卡名称(如 enp0s3wlp0s2)。

3.NetworkManager 与传统工具冲突 - 若使用 ifconfigroute 等工具,可能与 NetworkManager 管理的连接冲突,建议统一用 nmcli 管理。

4.无线连接失败 - 检查 SSID 和密码是否正确,信号是否过弱,无线网卡是否被禁用(可用 nmcli device set wlp0s2 wifi on 启用)。

六、总结

nmcli 是 Linux 命令行下管理网络的高效工具,核心在于掌握 连接(connection)设备(device) 的关系:

  • 连接:存储配置(如 IP、DNS 等),可激活到任意设备。
  • 设备:物理网卡(如有线、无线),需关联到连接才能工作。

实战:

查看网卡信息
[root@zuolaoshi ~]# nmcli 
ens33: 已连接 to ens33 #设备状态和名称
  "Intel 82545EM"   #设备型号
  ethernet (e1000), 00:0C:29:11:47:97, 硬件, mtu 1500
  ip4 默认
  inet4 192.168.1.55/24
  route4 0.0.0.0/0
  route4 192.168.1.0/24
  inet6 fe80::ea62:91c6:114:18bb/64
  route6 fe80::/64
  route6 ff00::/8

为网卡设置静态IP
[root@zuolaoshi ~]# nmcli connection add type ethernet con-name ens-test1 ifname ens37 ipv4.addresses 192.168.18.100/24 ipv4.gateway 192.168.18.1 ipv4.method manual 
连接 "ens-test1" (da7fdc9a-e7cc-4a1c-8b2c-7751ed2fc4d2) 已成功添加。


启用新添加的连接
[root@zuolaoshi ~]# nmcli connection up ens-test1 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/16) 


查看连接状态
[root@zuolaoshi ~]# nmcli connection 
NAME       UUID            TYPE      DEVICE
ens33      b5ecf5...          ethernet  ens33
ens-test1  da7fdc...          ethernet  ens37
ens37      077945...          ethernet  --

为网卡设置动态IP
[root@zuolaoshi ~]# nmcli connection add type ethernet con-name ens-test2 ifname ens37 ipv4.method auto
连接 "ens-test2" (25b9dd2f-a4c0-452d-bd22-992cf12b55b2) 已成功添加。
[root@zuolaoshi ~]# nmcli connection up ens-test2 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/17)
[root@zuolaoshi ~]# nmcli connection 
NAME       UUID              TYPE      DEVICE 
ens33      b5ec...                   ethernet  ens33  
ens-test2  25b9...                   ethernet  ens37  
ens37      0779...                   ethernet  --     
ens-test1  da7f...                   ethernet  --     


交互式设置IP地址
[root@zuolaoshi ~]# nmcli connection edit ens-test1 
nmcli> goto ipv4.addresses 
nmcli ipv4.addresses> change
编辑 "addresses" 值:192.168.20.100/24
您是否也要将 "ipv4.method" 设为 "manual"?[yes]:yes
nmcli ipv4.addresses> back
nmcli ipv4> save
成功地更新了连接 "ens-test1" (da7fdc9a-e7cc-4a1c-8b2c-7751ed2fc4d2)。
nmcli ipv4> activate 
正在监视连接激活(按任意键继续)
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/18)

nmcli ipv4> quit

[root@zuolaoshi ~]# nmcli 
ens37: 已连接 to ens-test1
  "Intel 82545EM"
  ethernet (e1000), 00:0C:29:11:47:A1, 硬件, mtu 1500
  ip4 默认
  inet4 192.168.20.100/24
  route4 192.168.20.0/24
  route4 192.168.18.1/32
  route4 0.0.0.0/0
  inet6 fe80::11c3:e0a4:f62e:9f31/64
  route6 fe80::/64
  route6 ff00::/8


启用和停用
[root@zuolaoshi ~]# nmcli connection up ens-test1 
连接已成功激活(D-Bus 活动路径:...
[root@zuolaoshi ~]# nmcli connection down ens-test1 
成功停用连接 "ens-test1"(D-Bus 活动路...

删除连接
[root@zuolaoshi ~]# nmcli connection delete ens-test1 
成功删除连接 "ens-test1" (4fc43f65-ea53-43a1-85d4-692e425fcd7d)。
[root@zuolaoshi ~]# nmcli connection 
NAME   UUID     TYPE      DEVICE 
ens33  b5ec...  ethernet  ens33  
ens37  0779...  ethernet  ens37  
[root@zuolaoshi ~]# nmcli connection show
NAME   UUID     TYPE      DEVICE 
ens33  b5ec...  ethernet  ens33  
ens37  0779...  ethernet  ens37  

重新加载设置(不会立即生效)
[root@zuolaoshi ~]# nmcli connection reload

重新加载指定的设置(不会立即生效)
[root@zuolaoshi ~]# nmcli connection load /etc/sysconfig/network-scripts/ifcfg-ens37


生效方法

启用设备
[root@zuolaoshi ~]# nmcli connection up  ens37
连接已成功激活(D-Bus 活动路径...

或者

连接设备并更新设备
[root@zuolaoshi ~]# nmcli device connect ens37          
[root@zuolaoshi ~]# nmcli device reapply ens37


查看设备&查看设备的详细信息
[root@zuolaoshi ~]# nmcli device 
DEVICE  TYPE      STATE   CONNECTION 
ens37   ethernet  已连接  ens37      
ens33   ethernet  已连接  ens33      
lo      loopback  未托管  --         
[root@zuolaoshi ~]# nmcli device show ens33
GENERAL.DEVICE:                         ens33
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:11:47:97
GENERAL.MTU:                            1500
GENERAL.STATE:                          100(已连接)
GENERAL.CONNECTION:                     ens33
GENERAL.CON-PATH:         /org/freedesktop/NetworkMana...
WIRED-PROPERTIES.CARRIER:               
IP4.ADDRESS[1]:                         192.168.1.55/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:           dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 102
IP4.DNS[1]:             202.106.0.20
IP4.DNS[2]:             114.114.114.114
IP6.ADDRESS[1]:         fe80::ea62:91c6:114:18bb/64
IP6.GATEWAY:            --
IP6.ROUTE[1]:           dst = fe80::/64, nh = ::, mt = 102
IP6.ROUTE[2]:           dst = ff00::/8, nh = ::, mt = 256, table=255

连接/断开网卡
[root@zuolaoshi ~]# nmcli device connect/disconnect ens37

开启/关闭无线网络
[root@zuolaoshi ~]# nmcli radio all on/off

开启/关闭NetworkManager的网络管理功能
[root@zuolaoshi ~]# nmcli networking on/off

监控网络状态
[root@zuolaoshi ~]# nmcli monitor (ctrl+c结束)
ens37: 停用中
网络管理器现在处于 "已连接(仅本地)" 状态
连接性现在是 "受限"
ens37: 已断开

询问NetworkManager网络连接状态(默认等待30秒)
[root@zuolaoshi ~]# nm-online 
正在连接...............   30s [online]

ip命令快速入门

一、基础用法:查看网络信息

1. 查看所有网络接口

ip addr show  # 完整命令
ip a         # 简写(推荐)

输出解读

  • ens33:接口名称(常见名称还有eth0enp0s3等)
  • inet 192.168.1.100/24:IPv4地址(192.168.1.100)和子网掩码(/24代表255.255.255.0)
  • state UP:接口状态(DOWN表示禁用)
  • link/ether 00:0c:29:xx:xx:xx:MAC地址

2. 查看路由表

ip route show  # 完整命令
ip r          # 简写

输出示例

default via 192.168.1.1 dev ens33  # 默认网关
192.168.1.0/24 dev ens33  proto kernel  scope link  src 192.168.1.100  # 本地网段

二、核心操作:接口与IP管理

1. 启用/禁用接口

ip link set dev ens33 up    # 启用
ip link set dev ens33 down  # 禁用

2. 临时配置IP地址(重启后失效)

ip addr add 192.168.1.200/24 dev ens33

3. 删除临时IP

ip addr del 192.168.1.200/24 dev ens33

4. 配置多个IP地址(同一接口)

ip addr add 192.168.1.201/24 dev ens33
ip addr add 192.168.1.202/24 dev ens33

三、进阶操作:路由与网络配置

1. 添加临时路由(重启后失效)

ip route add 192.168.2.0/24 via 192.168.1.254  # 添加子网路由
ip route add default via 192.168.1.1           # 设置默认网关

2. 删除路由

ip route del 192.168.2.0/24 via 192.168.1.254
ip route del default via 192.168.1.1

3. 查看ARP缓存

ip neigh show  # 查看IP与MAC地址映射

四、永久配置:写入文件生效

1. 编辑网络配置文件

vi /etc/sysconfig/network-scripts/ifcfg-ens33

配置示例

TYPE=Ethernet
BOOTPROTO=static  # 静态IP(dhcp表示动态获取)
ONBOOT=yes        # 开机自动启用
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4

2. 重启网络服务使配置生效

sudo systemctl restart network

五、常用技巧与注意事项

1. 快速验证配置

ping 192.168.1.1       # 测试网关连通性
ping -c 4 www.baidu.com  # 测试外网连通性(-c 4表示发送4个数据包)

2. 权限要求

  • 普通用户需加sudo,如:sudo ip addr add ...
  • 建议直接切换到root用户:su -

3. 与传统命令对比

功能 ip命令 传统命令(已淘汰)
查看接口 ip a ifconfig
配置IP ip addr add ifconfig
查看路由 ip r route
查看ARP缓存 ip neigh show arp -a

4. 网络排错三板斧

1.检查接口状态ip a 确保接口UP

2.检查路由表ip r 确认网关存在

3.检查DNScat /etc/resolv.conf 确认DNS服务器配置

六、扩展知识:高级功能

1. 配置VLAN(虚拟局域网)

ip link add link ens33 name ens33.100 type vlan id 100
ip addr add 192.168.100.1/24 dev ens33.100
ip link set dev ens33.100 up

2. 网络命名空间(多网络环境隔离)

ip netns add myns        # 创建命名空间
ip netns exec myns ip a  # 在命名空间内执行命令

七、示例场景

场景1:临时搭建测试环境

# 启用接口
ip link set dev ens33 up
# 配置临时IP
ip addr add 192.168.1.200/24 dev ens33
# 设置网关
ip route add default via 192.168.1.1

场景2:修复网络故障

# 假设网关不可达,检查路由表
ip r
# 若默认网关丢失,重新添加
ip route add default via 192.168.1.1

总结:核心命令速查表

功能 命令示例
查看接口 ip a
启用接口 sudo ip link set dev ens33 up
配置IP sudo ip addr add 192.168.1.100/24 dev ens33
查看路由 ip r
配置网关 sudo ip route add default via 192.168.1.1
查看ARP缓存 ip neigh show
重启网络服务 sudo systemctl restart network

实际使用中建议配合sudo权限操作,并根据具体网络环境调整参数。对于生产环境,务必通过配置文件(/etc/sysconfig/network-scripts/)进行永久设置,避免临时配置丢失。

查看流量

在 Linux 中,查看系统流量的命令有多种,适用于不同场景(实时监控、历史统计、接口细分等)。以下是常用工具的详细介绍:

一、实时流量监控工具(直观可视化)

1. iftop:实时网络流量分析(推荐)

特点:以可视化界面实时显示各网络接口的流量,按带宽排序,显示源/目标 IP 和端口,支持过滤。
安装

yum install epel-release  # 启用 EPEL 源
yum install iftop

基本用法

iftop -i ens33  # 监控指定接口(如 ens33),不加 -i 则默认第一个活动接口

界面说明

  • 上半部分:实时流量图(每秒更新),TX(发送)、RX(接收)、TOTAL(总和)
  • 中间部分:按流量排序的 IP 对(左侧为目标,右侧为源)
  • 底部:累计流量统计(cum)和带宽刻度

常用快捷键: - P:显示/隐藏端口号 - f:过滤 IP 或端口(如输入 host 192.168.1.100) - h:显示帮助文档 - q:退出

2. nload:简洁的上下行流量监控

特点:分上下行(Incoming/Outgoing)显示实时流量,支持多接口切换,轻量易用。 安装

yum install nload

基本用法

nload ens33  # 监控指定接口,不加接口名则列出所有接口供选择

界面说明: - Incoming:接收流量(实时速率、累计总量) - Outgoing:发送流量(实时速率、累计总量) - 按 / 切换接口,按 q 退出

3. dstat:综合系统资源监控(含网络)

特点:不仅监控流量,还能查看 CPU、内存、磁盘等,适合全面分析。 安装

yum install dstat

基本用法

dstat -n  # 仅显示网络流量(-n 代表 network)
# 或显示更详细信息(含接口名、速率、包数)
dstat --net-total --udp --tcp

输出示例

---- network ----
recv   send
1.2M   800k

二、统计型流量查看(历史数据/接口详情)

1. netstat:网络统计信息(传统工具)

特点:显示网络连接、接口统计、路由表等,适合查看累计流量。 基本用法

netstat -i  # 查看所有接口的流量统计(含接收/发送包数、错误数)
# 或按接口筛选(如 ens33)
netstat -i ens33

输出解读: - Iface:接口名 - MTU:最大传输单元 - RX-OK/TX-OK:接收/发送的正确包数 - RX-ERR/TX-ERR:错误包数(需关注是否有异常)

2. sar:系统活动报告(含历史流量)

特点:基于系统日志(/var/log/sa/)分析历史流量,适合排查周期性流量问题。 安装

yum install sysstat  # 一般默认安装,若没有则手动安装

基本用法

sar -n DEV 1 5  # 实时监控(每 1 秒采样,共 5 次)
# 查看过去 24 小时的流量统计(每天数据存于 saXX 文件)
sar -n DEV -f /var/log/sa/sa15  # sa15 代表 15 号的日志

输出示例

09:00:00 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s
09:00:01 AM       ens33     123.00     45.00     12.00      3.00

3. ss:套接字统计(替代 netstat)

特点:更高效的网络连接查看工具,可显示 TCP/UDP 状态和流量。 基本用法

ss -i  # 显示所有套接字的流量统计(接收/发送队列、字节数)
ss -tun  # 显示 TCP/UDP 连接的端口和流量(需结合其他工具分析)

三、按进程/端口监控流量(精准定位)

1. iotop:监控进程网络流量(需额外工具)

特点:类似 top,显示各进程的网络收发数据,需安装扩展插件。 安装

yum install iotop  # 基础版仅监控磁盘 I/O,需配合 `python3-dkmod` 实现网络监控(较复杂,CentOS 7 兼容性一般,推荐用其他工具)

2. tcpdump:抓包分析(适合排查异常流量)

特点:通过抓包实时分析网络数据,需结合过滤条件(如 IP、端口)。 基本用法

tcpdump -i ens33  # 抓取 ens33 接口的所有数据包(实时打印,按 Ctrl+C 停止)
tcpdump -i ens33 port 80  # 仅抓取 80 端口(HTTP)的流量

四、总结:常用命令速查表

场景 命令示例 说明
实时可视化流量 sudo iftop -i ens33 图形化显示源/目标 IP 和流量
简洁上下行监控 nload ens33 分发送/接收显示实时速率
综合资源监控 dstat -n 含网络、CPU、磁盘等信息
接口统计数据 netstat -i 查看接口累计包数/错误数
历史流量分析 sar -n DEV 1 5 基于日志的实时/历史统计
抓包分析 tcpdump -i ens33 port 80 过滤特定端口的数据包

五、注意事项

1.权限要求:多数实时监控工具需 sudoroot 权限(如 iftopnload)。

2.接口名称:通过 ip a 确认接口名(如 ens33eth0)。

3.生产环境:抓包工具(如 tcpdump)可能影响性能,使用时需谨慎。

根据需求选择工具:
- 快速查看实时流量:首选 nload(简洁)或 iftop(可视化)。
- 分析历史流量或系统资源:用 sardstat
- 排查异常连接:用 tcpdumpss 结合端口过滤。