nmcli命令网络配置

目录

    • [1. 配置NetworkManager接管网络(选)](#1. 配置NetworkManager接管网络(选))
      • [1.1. NetworkManager工具](#1.1. NetworkManager工具)
      • [1.2. 自带netplan管理网络](#1.2. 自带netplan管理网络)
      • [1.2. 自带ifupdown管理网络](#1.2. 自带ifupdown管理网络)
      • [1.3. 测试nmcli管理网络](#1.3. 测试nmcli管理网络)
    • [2. nmcli有线网络配置(参数均可使用缩写)](#2. nmcli有线网络配置(参数均可使用缩写))
      • [2.1. 使用nmcli添加一个网卡并配置静态ip地址](#2.1. 使用nmcli添加一个网卡并配置静态ip地址)
      • [2.2. 查看网卡信息](#2.2. 查看网卡信息)
      • [2.3. 激活/关闭(连接/断开)网卡](#2.3. 激活/关闭(连接/断开)网卡)
      • [2.4. 使用nmcli修改一个网卡的地址](#2.4. 使用nmcli修改一个网卡的地址)
      • [2.5. 刷新网卡并查看信息](#2.5. 刷新网卡并查看信息)
      • [2.6. 使用nmcli添加一个网卡配置使其获取动态ip地址](#2.6. 使用nmcli添加一个网卡配置使其获取动态ip地址)
      • [2.7. 使用nmcli将已有的动态网卡配置修改为静态网卡配置](#2.7. 使用nmcli将已有的动态网卡配置修改为静态网卡配置)
      • [2.8. 使用nmcli将已有的静态网卡配置修改为动态网卡配置](#2.8. 使用nmcli将已有的静态网卡配置修改为动态网卡配置)
      • [2.9. 使用nmcli删除一个网卡配置信息](#2.9. 使用nmcli删除一个网卡配置信息)
      • [2.10. 使用nmcli为一张网卡配置多个ip地址(从地址)](#2.10. 使用nmcli为一张网卡配置多个ip地址(从地址))
      • [2.11. 使用nmcli修改网卡设备的连接名称](#2.11. 使用nmcli修改网卡设备的连接名称)
    • [3. nmcli无线网络配置(需要有无线网卡)](#3. nmcli无线网络配置(需要有无线网卡))
      • [3.1. 打开/关闭无线网络开关](#3.1. 打开/关闭无线网络开关)
      • [3.2. 查看无线网络开关状态:](#3.2. 查看无线网络开关状态:)
      • [3.3. 扫描可用的无线网络](#3.3. 扫描可用的无线网络)
      • [3.4. 连接到无线网络](#3.4. 连接到无线网络)
      • [3.6. 查看连接状态](#3.6. 查看连接状态)
      • 3.6.查看连接的详细信息

参考:

在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)

https://blog.csdn.net/2509_94005029/article/details/154648221

1. 配置NetworkManager接管网络(选)

1.1. NetworkManager工具

如果系统默认自带了NetworkManager工具就不用做此步,如果是后期手动安装的就需要配置接管网络

bash 复制代码
# 安装Network-Manager并启动
[root@localhost ~]# apt install network-manager -y
[root@localhost ~]# systemctl restart NetworkManager
[root@localhost ~]# systemctl enable NetworkManager

配置NetworkManager接管网络

bash 复制代码
# 语法
nmcli net <on/off>
# 示例
[root@localhost ~]# nmcli net on

1.2. 自带netplan管理网络

如果是netplan管理网络的系统(如ubuntu22.04)需要在netplan中指定NetworkManager接管网络:

bash 复制代码
# 查看配置文件
[root@localhost ~]# ls /etc/netplan/
# 每个系统的文件名都不一样,我这里叫00-installer-config.yaml
[root@localhost ~]# vim /etc/netplan/00-installer-config.yam          
# 在version下添加,注意开头对齐: 
renderer: NetworkManager
# 保存退出
# 使配置应用到系统中
[root@localhost ~]# netplan apply

1.2. 自带ifupdown管理网络

如果是ifupdown管理网络的系统(如eve-ng或Ubuntu18.04)需要:

① 在NetworkManager配置中指定ifupdown也可管理网络,这样如果系统原先存在有网络连接,在NetworkManager接管后原网络连接依旧存在不改变:

bash 复制代码
[root@localhost ~]# vim /etc/NetworkManager/NetworkManager.conf
# 修改以下内容:
managed=true
# 保存退出

② 创建.yaml文件并修改(如果原先存在有后缀为.yaml的文件,直接修改即可,没有的话再创建)

bash 复制代码
[root@localhost ~]# vim /etc/netplan/interface.yaml
# 添加以下内容:
network:
    version: 2
    renderer: NetworkManager
# 保存退出

③ 暂时关闭系统网络服务后使得netplan配置在系统生效并重启NetworkManager服务

bash 复制代码
[root@localhost ~]# systemctl stop systemd-networkd
[root@localhost ~]# netplan apply
[root@localhost ~]# systemctl restart NetworkManager
[root@localhost ~]# systemctl restart systemd-networkd

1.3. 测试nmcli管理网络

使用nmcli -p device查看设备状态

bash 复制代码
[root@localhost ~]# nmcli -p device
============
  设备状态
============
DEVICE  TYPE      STATE   CONNECTION 
--------------------------------------------------
ens32   ethernet  已连接  有线连接 1 
lo      loopback  未托管  --         

2. nmcli有线网络配置(参数均可使用缩写)

2.1. 使用nmcli添加一个网卡并配置静态ip地址

语法:

bash 复制代码
nmcli con add con-name <连接名> ifname <网卡名> type <连接类型> ipv4.method manual ipv4.addresses <ipv4地址> ipv4.gateway <ipv4网关地址> ipv4.dns <ipv4 dns服务器>

**注意:**如果想要添加两个dns地址应该用双引号" "将两个地址包起来,表示两个地址都是DNS地址

示例:

bash 复制代码
[root@localhost ~]# nmcli con add con-name test ifname ens32 type ethernet ipv4.method manual ipv4.addresses 192.168.10.10/24 ipv4.gateway 192.168.10.2 ipv4.dns 192.168.10.2
 连接 "test" (3ceeec8a-d92c-42dd-ae10-2f5478eda991) 已成功添加

此时静态地址就配置完成了,如果不进行指定则NetworkManager默认会在接口创建的时候自动开启该接口,当然我们也可以指定某个接口的打开和关闭状态

2.2. 查看网卡信息

bash 复制代码
[root@localhost ~]# nmcli con show
NAME        UUID                                  TYPE      DEVICE 
test        3ceeec8a-d92c-42dd-ae10-2f5478eda991  ethernet  ens32  
有线连接 1   b640bf63-ac94-3547-be75-8fac06083304  ethernet  --    

2.3. 激活/关闭(连接/断开)网卡

语法:

bash 复制代码
nmcli con {up/down} <连接名>

示例:

bash 复制代码
[root@localhost ~]# nmcli con up test 
 连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)

2.4. 使用nmcli修改一个网卡的地址

语法:

bash 复制代码
nmcli con modify <连接名> ipv4.method manual ipv4.addresses <新的ipv4地址> ipv4.gateway <新的ipv4网关地址> ipv4.dns <dns服务器>

示例:

bash 复制代码
[root@localhost ~]# nmcli con modify ens33 ipv4.method manual ipv4.addresses 192.168.10.20/24 ipv4.gateway 192.168.10.2 ipv4.dns 192.168.10.2

2.5. 刷新网卡并查看信息

bash 复制代码
[root@localhost ~]# nmcli con up test
[root@localhost ~]# ip add

2.6. 使用nmcli添加一个网卡配置使其获取动态ip地址

语法:

bash 复制代码
nmcli con add con-name <连接名> ifname <网卡名> type <连接类型> ipv4.method auto

示例:

bash 复制代码
[root@localhost ~]# nmcli con add con-name test ifname ens32 type ethernet ipv4.method auto
nmcli con up test                        # 激活网卡

2.7. 使用nmcli将已有的动态网卡配置修改为静态网卡配置

语法:

bash 复制代码
nmcli con modify <连接名> ipv4.method manual ipv4.address <IP地址/子网掩码> ipv4.gateway <网关> ipv4.dns <dns地址>

示例:

bash 复制代码
[root@localhost ~]# nmcli con modify test ipv4.method manual ipv4.address 192.168.10.20/24 ipv4.gateway 192.168.10.2 ipv4.dns 192.168.10.2
nmcli con up test

2.8. 使用nmcli将已有的静态网卡配置修改为动态网卡配置

语法:

bash 复制代码
nmcli con modify <连接名> ipv4.method auto

示例方法①:

bash 复制代码
# 将已有的静态网卡配置修改为动态网卡配置
[root@localhost ~]# nmcli con modify test ipv4.method auto
[root@localhost ~]# nmcli con up test
# 将静态地址删除,否则使用ip add查看时会有两个地址出现
# 将test的静态地址设置为空,也就不存在了,只剩下了动态地址
[root@localhost ~]# nmcli connection modify test ipv4.addresses "" ipv4.gateway ""  ipv4.dns ""

PS:需要先获取到dhcp地址才能删除原静态配置,否则会提示"ipv4.method=manual 不允许这个属性为空"

示例方法②:

bash 复制代码
# 将原静态连接删除后直接添加新的动态地址配置
[root@localhost ~]# nmcli con del test
[root@localhost ~]# nmcli con add con-name test ifname ens32 type ethernet ipv4.method auto

2.9. 使用nmcli删除一个网卡配置信息

语法:

bash 复制代码
nmcli con del <连接名> 

示例:

bash 复制代码
[root@localhost ~]# nmcli con del test
 成功删除连接 "test" (3ceeec8a-d92c-42dd-ae10-2f5478eda991)

2.10. 使用nmcli为一张网卡配置多个ip地址(从地址)

首先需要先创建一个连接使其获得静态或动态ip地址才能在此基础上增加地址,这里不再讲述配置静态或动态地址的命令,直接进行增加地址的配置

语法:

bash 复制代码
nmcli con modify <连接名> +ipv4.address <ipv4地址> ipv4.gateway <网关> ipv4.dns <dns地址>

示例:

bash 复制代码
[root@localhost ~]# nmcli con modify ens32 +ipv4.address 192.168.10.160/24 ipv4.gateway 192.168.10.254 ipv4.dns 114.114.114.114
[root@localhost ~]# nmcli con up ens32

2.11. 使用nmcli修改网卡设备的连接名称

语法:

bash 复制代码
nmcli con modify <原连接名或UUID值> connection.id <新连接名>

示例:

bash 复制代码
# 先查看网卡设备的各项信息
[root@localhost ~]# nmcli con show
NAME        UUID                                  TYPE      DEVICE 
有线连接 1   b640bf63-ac94-3547-be75-8fac06083304  ethernet  ens32   
# 修改网卡设备的连接名称为ens32
[root@localhost ~]# nmcli con modify b640bf63-ac94-3547-be75-8fac06083304 connection.id ens32
# 再次查看网卡设备的各项信息,可以发现NAME这一栏的名称被修改了
[root@localhost ~]# nmcli con show
NAME        UUID                                  TYPE      DEVICE 
ens32       b640bf63-ac94-3547-be75-8fac06083304  ethernet  ens32   

3. nmcli无线网络配置(需要有无线网卡)

3.1. 打开/关闭无线网络开关

语法:

bash 复制代码
nmcli radio all <on/off>

示例:

bash 复制代码
[root@localhost ~]# nmcli radio all on

3.2. 查看无线网络开关状态:

语法:

bash 复制代码
nmcli radio <all--默认>

示例:

bash 复制代码
[root@localhost ~]# nmcli radio 
  WIFI-HW  WIFI    WWAN-HW  WWAN   
  已启用   已启用  已启用   已启用 

3.3. 扫描可用的无线网络

bash 复制代码
# 扫描可用的无线网络,列出所有可用的无线网络及其详细信息。
[root@localhost ~]# nmcli device wifi list

3.4. 连接到无线网络

① 如果您知道无线网络的 SSID(网络名称)和密码,可以直接连接:

语法:

bash 复制代码
nmcli dev wifi connect <SSID> password <network-password>

示例:

bash 复制代码
[root@localhost ~]# nmcli device wifi con 李李密制十三香 password MySkillstree
  设备 "wlx0013ef6f25bd" 成功以 "c2d01c8d-47e5-41ee-8a3c-171aaddf53a8" 激活。

② 如果您知道无线网络的 SSID(网络名称)但不想显示密码,可以加入-a 或 --ask参数,此参数会询问缺少的参数

语法:

bash 复制代码
nmcli -a device wifi con <SSID>

示例:

bash 复制代码
[root@localhost ~]# nmcli -a device wifi con 李李密制十三香
  密码: ????????????
  设备 "wlx0013ef6f25bd" 成功以 "afc44524-ba51-452b-ae51-21f2cd2b2f6f" 激活。

3.6. 查看连接状态

连接尝试后,可以检查连接状态:

bash 复制代码
[root@localhost ~]# nmcli connection show
  NAME            UUID                                   TYPE      DEVICE          
  李李密制十三香   afc44524-ba51-452b-ae51-21f2cd2b2f6f   wifi      wlx0013ef6f25bd

3.6.查看连接的详细信息

语法:

bash 复制代码
nmcli connection show <connetcion-name>

示例:

bash 复制代码
[root@localhost ~]# nmcli connection show  李李密制十三香
相关推荐
qq_420443272 小时前
AMD显卡在windows中通过WSL安装使用stable diffusion(WebUI和ComfyUI)
linux·windows·ubuntu·stable diffusion·wsl
无事好时节2 小时前
Linux 进程管理
linux
网络研究院2 小时前
2026年智能体人工智能的激增引发新的网络安全风险
网络·人工智能·安全·web安全·ai
Dev7z3 小时前
基于MATLAB的GA–PSO混合算法无线传感器网络节点部署优化研究
网络·算法·matlab
RisunJan3 小时前
Linux命令-grep命令(文本搜索工具)
linux·运维·服务器
ydswin3 小时前
Keepalived详解:原理、编译安装与高可用集群配置
linux
乾元3 小时前
AI 如何从配置历史与变更日志中推理出“变更引发的故障”——自动化根因分析的因果推理引擎
网络·人工智能·运维开发
sc.溯琛3 小时前
计算机网络试题分类及解析文档
网络
水天需0103 小时前
Vim 分屏操作详解
linux