0
点赞
收藏
分享

微信扫一扫

openEuler管理网络-使用nmcli命令配置ip

25 openEuler管理网络-使用nmcli命令配置ip

image-20221219190513462 说明: 使用nmcli命令配置的网络配置可以立即生效且系统重启后配置也不会丢失。

25.1 nmcli介绍

nmcli是NetworkManager的一个命令行工具,它提供了使用命令行配置由NetworkManager管理网络连接的方法。nmcli命令的基本格式为:

 nmcli [OPTIONS] OBJECT { COMMAND | help }

其中,OBJECT选项可以是general、networking、radio、connection或device等。在日常使用中,最常使用的是-t, --terse(用于脚本)、-p, --pretty选项(用于用户)及-h, --help选项,用户可以使用“ nmcli help”获取更多参数及使用信息。

# nmcli help

常用命令使用举例如下:

  • 显示NetworkManager状态:

    # nmcli general status

    例如示例命令如下:

    [root@superman-21 ~]# nmcli general status
    STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
    已连接 完全 已启用 已启用 已启用 已启用
    [root@superman-21 ~]#
  • 显示所有连接:

    # nmcli connection show

    例如示例命令如下:

    [root@superman-21 ~]# nmcli connection show
    NAME UUID TYPE DEVICE
    ens33 4bc92b9f-a640-4e34-9c2d-06250344adfe ethernet ens33
    virbr0 2b23e76a-1338-4082-8444-1f2787503ad1 bridge virbr0
    [root@superman-21 ~]#
  • 只显示当前活动连接,如下所示添加 -a, --active:

    # nmcli connection show -a
    # nmcli connection show --active

    例如示例命令如下:

    [root@superman-21 ~]# nmcli connection show -a
    NAME UUID TYPE DEVICE
    ens33 4bc92b9f-a640-4e34-9c2d-06250344adfe ethernet ens33
    virbr0 2b23e76a-1338-4082-8444-1f2787503ad1 bridge virbr0
    [root@superman-21 ~]#
    [root@superman-21 ~]# nmcli connection show --active
    NAME UUID TYPE DEVICE
    ens33 4bc92b9f-a640-4e34-9c2d-06250344adfe ethernet ens33
    virbr0 2b23e76a-1338-4082-8444-1f2787503ad1 bridge virbr0
    [root@superman-21 ~]#
  • 显示由NetworkManager识别到设备及其状态:

    # nmcli device status

    例如示例命令如下:

    [root@superman-21 ~]# nmcli device status
    DEVICE TYPE STATE CONNECTION
    ens33 ethernet 已连接 ens33
    virbr0 bridge 连接(外部) virbr0
    lo loopback 未托管 --
    virbr0-nic tun 未托管 --
    [root@superman-21 ~]#
  • 使用nmcli工具启动和停止网络接口,在root权限下执行如下命令:

    # nmcli connection up id ens33
    # nmcli device disconnect ens33

    例如示例命令如下:

    [root@superman-21 ~]# nmcli connection up id ens33 
    Commection successfully activated (D-Bus active path: /org/freedesktopNetwprkfanager/ictiveComection/4)
    [root@superman-21 ~]#
    [root@superman-21 ~]# nmcli device disconnect ens33
    device 'ens33' successfully disconnected.
    [root@superman-21 ~]#

25.2 设备管理

25.2.1 连接到设备

使用如下命令,NetworkManager将连接到对应网络设备,尝试找到合适的连接配置,并激活配置。

# nmcli device connect $IFNAME  

如果不存在相应的配置连接,NetworkManager将创建并激活具有默认设置的新配置文件。

25.2.2 断开设备连接

使用如下命令,NetworkManager将断开设备连接,并防止设备自动激活。

# nmcli device disconnect $IFNAME  

25.3 设置网络连接

列出目前可用的网络连接:

[root@superman-21 ~]# nmcli con show
NAME UUID TYPE DEVICE
ens33 4bc92b9f-a640-4e34-9c2d-06250344adfe ethernet ens33
virbr0 2b23e76a-1338-4082-8444-1f2787503ad1 bridge virbr0
[root@superman-21 ~]#

image-20221219190513462 说明: 输出结果中的NAME字段代表连接ID(名称)。

添加一个网络连接会生成相应的配置文件,并与相应的设备关联。检查可用的设备,方法如下:

[root@superman-21 ~]# nmcli dev status
DEVICE TYPE STATE CONNECTION
ens33 ethernet 已连接 ens33
virbr0 bridge 连接(外部) virbr0
lo loopback 未托管 --
virbr0-nic tun 未托管 --
[root@superman-21 ~]#
25.3.1 配置动态IP连接
25.3.1.1 配置IP

要使用 DHCP 分配网络时,可以使用动态IP配置添加网络配置文件,命令格式如下:

# nmcli connection add type ethernet con-name connection-name ifname interface-name

例如创建名为net-test的动态连接配置文件,在root权限下使用以下命令:

[root@superman-21 ~]# nmcli connection add type ethernet con-name ens33 ifname ens33
连接 ens33 (05729c25-f385-4572-bf29-322cc1cfce36) 已成功添加。
[root@superman-21 ~]#

NetworkManager 会将参数 connection.autoconnect 设定为 yes,并将设置保存到 “/etc/sysconfig/network-scripts/ifcfg-net-test”文件中,在该文件中会将BOOTPROTO设置为dhcp、ONBOOT 设置为 yes。

25.3.1.2 激活连接并检查状态

在root权限下使用以下命令激活网络连接:

[root@superman-21 ~]# nmcli con up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4
[root@superman-21 ~]#

检查这些设备及连接的状态,使用以下命令:

[root@superman-21 ~]# nmcli device status
DEVICE TYPE STATE CONNECTION
ens33 ethernet 已连接 ens33
virbr0 bridge 连接(外部) virbr0
lo loopback 未托管 --
virbr0-nic tun 未托管 --
[root@superman-21 ~]#
25.3.2 配置静态IP连接
25.3.2.1 配置IP

添加静态 IPv4 配置的网络连接,可使用以下命令:

# nmcli connection add type ethernet con-name connection-name ifname interface-name ip4 address gw4 address

image-20221219190513462 说明: 如果要添加 IPv6 地址和网关信息,使用 ip6 和 gw6 选项。

例如创建名为 net-static的静态连接配置文件,在root权限下使用以下命令:

[root@superman-21 ~]# nmcli con add type ethernet con-name ens33 ifname ens33 ip4 192.168.0.21/24 gw4 192.168.0.1
连接 ens33 (05b7a99b-2d5f-4bf5-9a78-3a459e338d85) 已成功添加。
[root@superman-21 ~]#

还可为该设备同时指定 IPv6 地址和网关,示例如下:

[root@superman-21 ~]# nmcli con add type ethernet con-name ens33 ifname ens33 ip4 192.168.0.21/24 gw4 192.168.0.1 ip6 2001:470:18:ac4::2/64 gw6 2001:470:19:ac4::/64
连接 ens33 (c4516c31-9f66-4611-99c6-60197324693d) 已成功添加。
[root@superman-21 ~]#

NetworkManager 会将其内部参数 ipv4.method 设定为 manual,将 connection.autoconnect 设定为yes,并将设置写入 /etc/sysconfig/network-scripts/ifcfg-my-office 文件,其中会将对应 BOOTPROTO 设定为 none,将 ONBOOT 设定为 yes。

设定两个 IPv4 DNS 服务器地址,在root权限下使用以下命令:

[root@superman-21 ~]# nmcli con mod ens33 ipv4.dns 202.102.224.68 114.114.114.114
[root@superman-21 ~]#

设置两个 IPv6 DNS 服务器地址,在root权限下使用以下命令:

[root@superman-21 ~]# nmcli con mod ens33 ipv6.dns 2001:4860:4860::8888 2001:4860:4860::8844
[root@superman-21 ~]#
25.3.2.2 激活连接并检查状态

激活新的网络连接,在root权限下使用以下命令:

[root@superman-21 ~]# nmcli con up ens33 ifname ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5
[root@superman-21 ~]#

检查这些设备及连接的状态,使用以下命令:

[root@superman-21 ~]# nmcli device status
DEVICE TYPE STATE CONNECTION
ens33 ethernet 已连接 ens33
virbr0 bridge 连接(外部) virbr0
lo loopback 未托管 --
virbr0-nic tun 未托管 --
[root@superman-21 ~]#

查看配置的连接详情,使用以下命令(使用 -p, --pretty 选项在输出结果中添加标题和分段):

[root@superman-21 ~]# nmcli -p con show ens33
===============================================================================
连接配置集详情 (ens33)
===============================================================================
connection.id: ens33
connection.uuid: 4bc92b9f-a640-4e34-9c2d-06250344adfe
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: ens33
connection.autoconnect: 是
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0(default)
connection.auth-retries: -1
connection.timestamp: 1671872503
connection.read-only: 否
connection.permissions: --
connection.zone: --
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1(default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
connection.metered: 未知
connection.lldp: default
connection.mdns: -1(default)
connection.llmnr: -1(default)
connection.wait-device-timeout: -1
-------------------------------------------------------------------------------
802-3-ethernet.port: --
802-3-ethernet.speed: 0
802-3-ethernet.duplex: --
802-3-ethernet.auto-negotiate: 否
802-3-ethernet.mac-address: --
802-3-ethernet.cloned-mac-address: --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-blacklist: --
802-3-ethernet.mtu: 自动
802-3-ethernet.s390-subchannels: --
802-3-ethernet.s390-nettype: --
802-3-ethernet.s390-options: --
802-3-ethernet.wake-on-lan: default
802-3-ethernet.wake-on-lan-password: --
802-3-ethernet.accept-all-mac-addresses:-1(default)
-------------------------------------------------------------------------------
ipv4.method: manual
ipv4.dns: 202.102.224.68,114.114.114.114
ipv4.dns-search: --
ipv4.dns-options: --
ipv4.dns-priority: 0
ipv4.addresses: 192.168.0.21/24
ipv4.gateway: 192.168.0.1
ipv4.routes: --
ipv4.route-metric: -1
ipv4.route-table: 0 (unspec)
ipv4.routing-rules: --
ipv4.ignore-auto-routes: 否
ipv4.ignore-auto-dns: 否
ipv4.dhcp-client-id: --
ipv4.dhcp-iaid: --
ipv4.dhcp-timeout: 0 (default)
ipv4.dhcp-send-hostname: 是
ipv4.dhcp-hostname: --
ipv4.dhcp-fqdn: --
ipv4.dhcp-hostname-flags: 0x0(none)
ipv4.never-default: 否
ipv4.may-fail: 是
ipv4.required-timeout: -1 (default)
ipv4.dad-timeout: -1 (default)
ipv4.dhcp-vendor-class-identifier: --
ipv4.dhcp-reject-servers: --
-------------------------------------------------------------------------------
ipv6.method: auto
ipv6.dns: 2001:4860:4860::8888,2001:4860:4860::8844
ipv6.dns-search: --
ipv6.dns-options: --
ipv6.dns-priority: 0
ipv6.addresses: --
ipv6.gateway: --
ipv6.routes: --
ipv6.route-metric: -1
ipv6.route-table: 0 (unspec)
ipv6.routing-rules: --
ipv6.ignore-auto-routes: 否
ipv6.ignore-auto-dns: 否
ipv6.never-default: 否
ipv6.may-fail: 是
ipv6.required-timeout: -1 (default)
ipv6.ip6-privacy: -1(unknown)
ipv6.addr-gen-mode: stable-privacy
ipv6.ra-timeout: 0 (default)
ipv6.dhcp-duid: --
ipv6.dhcp-iaid: --
ipv6.dhcp-timeout: 0 (default)
ipv6.dhcp-send-hostname: 是
ipv6.dhcp-hostname: --
ipv6.dhcp-hostname-flags: 0x0(none)
ipv6.token: --
-------------------------------------------------------------------------------
proxy.method: none
proxy.browser-only: 否
proxy.pac-url: --
proxy.pac-script: --
-------------------------------------------------------------------------------
===============================================================================
激活连接详情 (4bc92b9f-a640-4e34-9c2d-06250344adfe)
===============================================================================
GENERAL.NAME: ens33
GENERAL.UUID: 4bc92b9f-a640-4e34-9c2d-06250344adfe
GENERAL.DEVICES: ens33
GENERAL.IP-IFACE: ens33
GENERAL.STATE: 已激活
GENERAL.DEFAULT: 是
GENERAL.DEFAULT6: 否
GENERAL.SPEC-OBJECT: --
GENERAL.VPN: 否
GENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/5
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/1
GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
-------------------------------------------------------------------------------
IP4.ADDRESS[1]: 192.168.0.21/24
IP4.GATEWAY: 192.168.0.1
IP4.ROUTE[1]: dst = 192.168.0.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.0.1, mt = 100
IP4.DNS[1]: 202.102.224.68
IP4.DNS[2]: 114.114.114.114
-------------------------------------------------------------------------------
IP6.ADDRESS[1]: fe80::9393:f6ae:ced9:7759/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
IP6.DNS[1]: 2001:4860:4860::8888
IP6.DNS[2]: 2001:4860:4860::8844
-------------------------------------------------------------------------------

===============================================================================
连接配置集详情 (ens33)
===============================================================================
connection.id: ens33
connection.uuid: 8bb45a92-91b7-475b-a265-e5ce906af465
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: ens33
connection.autoconnect: 是
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0(default)
connection.auth-retries: -1
connection.timestamp: 0
connection.read-only: 否
connection.permissions: --
connection.zone: --
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1(default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
connection.metered: 未知
connection.lldp: default
connection.mdns: -1(default)
connection.llmnr: -1(default)
connection.wait-device-timeout: -1
-------------------------------------------------------------------------------
802-3-ethernet.port: --
802-3-ethernet.speed: 0
802-3-ethernet.duplex: --
802-3-ethernet.auto-negotiate: 否
802-3-ethernet.mac-address: --
802-3-ethernet.cloned-mac-address: --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-blacklist: --
802-3-ethernet.mtu: 自动
802-3-ethernet.s390-subchannels: --
802-3-ethernet.s390-nettype: --
802-3-ethernet.s390-options: --
802-3-ethernet.wake-on-lan: default
802-3-ethernet.wake-on-lan-password: --
802-3-ethernet.accept-all-mac-addresses:-1(default)
-------------------------------------------------------------------------------
ipv4.method: auto
ipv4.dns: --
ipv4.dns-search: --
ipv4.dns-options: --
ipv4.dns-priority: 0
ipv4.addresses: --
ipv4.gateway: --
ipv4.routes: --
ipv4.route-metric: -1
ipv4.route-table: 0 (unspec)
ipv4.routing-rules: --
ipv4.ignore-auto-routes: 否
ipv4.ignore-auto-dns: 否
ipv4.dhcp-client-id: --
ipv4.dhcp-iaid: --
ipv4.dhcp-timeout: 0 (default)
ipv4.dhcp-send-hostname: 是
ipv4.dhcp-hostname: --
ipv4.dhcp-fqdn: --
ipv4.dhcp-hostname-flags: 0x0(none)
ipv4.never-default: 否
ipv4.may-fail: 是
ipv4.required-timeout: -1 (default)
ipv4.dad-timeout: -1 (default)
ipv4.dhcp-vendor-class-identifier: --
ipv4.dhcp-reject-servers: --
-------------------------------------------------------------------------------
ipv6.method: auto
ipv6.dns: --
ipv6.dns-search: --
ipv6.dns-options: --
ipv6.dns-priority: 0
ipv6.addresses: --
ipv6.gateway: --
ipv6.routes: --
ipv6.route-metric: -1
ipv6.route-table: 0 (unspec)
ipv6.routing-rules: --
ipv6.ignore-auto-routes: 否
ipv6.ignore-auto-dns: 否
ipv6.never-default: 否
ipv6.may-fail: 是
ipv6.required-timeout: -1 (default)
ipv6.ip6-privacy: -1(unknown)
ipv6.addr-gen-mode: stable-privacy
ipv6.ra-timeout: 0 (default)
ipv6.dhcp-duid: --
ipv6.dhcp-iaid: --
ipv6.dhcp-timeout: 0 (default)
ipv6.dhcp-send-hostname: 是
ipv6.dhcp-hostname: --
ipv6.dhcp-hostname-flags: 0x0(none)
ipv6.token: --
-------------------------------------------------------------------------------
proxy.method: none
proxy.browser-only: 否
proxy.pac-url: --
proxy.pac-script: --
-------------------------------------------------------------------------------

===============================================================================
连接配置集详情 (ens33)
===============================================================================
connection.id: ens33
connection.uuid: c4516c31-9f66-4611-99c6-60197324693d
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: ens33
connection.autoconnect: 是
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0(default)
connection.auth-retries: -1
connection.timestamp: 0
connection.read-only: 否
connection.permissions: --
connection.zone: --
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1(default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
connection.metered: 未知
connection.lldp: default
connection.mdns: -1(default)
connection.llmnr: -1(default)
connection.wait-device-timeout: -1
-------------------------------------------------------------------------------
802-3-ethernet.port: --
802-3-ethernet.speed: 0
802-3-ethernet.duplex: --
802-3-ethernet.auto-negotiate: 否
802-3-ethernet.mac-address: --
802-3-ethernet.cloned-mac-address: --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-blacklist: --
802-3-ethernet.mtu: 自动
802-3-ethernet.s390-subchannels: --
802-3-ethernet.s390-nettype: --
802-3-ethernet.s390-options: --
802-3-ethernet.wake-on-lan: default
802-3-ethernet.wake-on-lan-password: --
802-3-ethernet.accept-all-mac-addresses:-1(default)
-------------------------------------------------------------------------------
ipv4.method: manual
ipv4.dns: --
ipv4.dns-search: --
ipv4.dns-options: --
ipv4.dns-priority: 0
ipv4.addresses: 192.168.0.21/24
ipv4.gateway: 192.168.0.1
ipv4.routes: --
ipv4.route-metric: -1
ipv4.route-table: 0 (unspec)
ipv4.routing-rules: --
ipv4.ignore-auto-routes: 否
ipv4.ignore-auto-dns: 否
ipv4.dhcp-client-id: --
ipv4.dhcp-iaid: --
ipv4.dhcp-timeout: 0 (default)
ipv4.dhcp-send-hostname: 是
ipv4.dhcp-hostname: --
ipv4.dhcp-fqdn: --
ipv4.dhcp-hostname-flags: 0x0(none)
ipv4.never-default: 否
ipv4.may-fail: 是
ipv4.required-timeout: -1 (default)
ipv4.dad-timeout: -1 (default)
ipv4.dhcp-vendor-class-identifier: --
ipv4.dhcp-reject-servers: --
-------------------------------------------------------------------------------
ipv6.method: manual
ipv6.dns: --
ipv6.dns-search: --
ipv6.dns-options: --
ipv6.dns-priority: 0
ipv6.addresses: 2001:470:18:ac4::2/64
ipv6.gateway: --
ipv6.routes: --
ipv6.route-metric: -1
ipv6.route-table: 0 (unspec)
ipv6.routing-rules: --
ipv6.ignore-auto-routes: 否
ipv6.ignore-auto-dns: 否
ipv6.never-default: 否
ipv6.may-fail: 是
ipv6.required-timeout: -1 (default)
ipv6.ip6-privacy: -1(unknown)
ipv6.addr-gen-mode: stable-privacy
ipv6.ra-timeout: 0 (default)
ipv6.dhcp-duid: --
ipv6.dhcp-iaid: --
ipv6.dhcp-timeout: 0 (default)
ipv6.dhcp-send-hostname: 是
ipv6.dhcp-hostname: --
ipv6.dhcp-hostname-flags: 0x0(none)
ipv6.token: --
-------------------------------------------------------------------------------
proxy.method: none
proxy.browser-only: 否
proxy.pac-url: --
proxy.pac-script: --
-------------------------------------------------------------------------------
[root@superman-21 ~]#
25.3.3 添加 Wi-Fi 连接

有两种方式添加Wi-Fi 连接。

方法1,通过网络接口连接wifi

连接到由SSID或BSSID指定的wifi网络。命令如下,该命令找到匹配的连接或创建一个连接,然后在设备上激活它。

# nmcli device wifi connect $SSID password $PASSWORD ifname $IFNAME  
# nmcli --ask device wifi connect $SSID

方法2,通过配置文件连接Wi-Fi

  1. 使用以下命令查看可用 Wi-Fi 访问点:
# nmcli dev wifi list
  1. 使用以下命令生成使用的静态 IP 配置,但允许自动 DNS 地址分配的 Wi-Fi 连接:
# nmcli con add con-name Wifi ifname wlan0 type wifi ssid MyWifi ip4 192.168.100.101/24 gw4 192.168.100.1
  1. 请使用以下命令设定 WPA2 密码,例如 “answer”:
# nmcli con modify Wifi wifi-sec.key-mgmt wpa-psk
# nmcli con modify Wifi wifi-sec.psk answer
  1. 使用以下命令更改 Wi-Fi 状态:
# nmcli radio wifi [ on | off ]
25.3.4 更改属性

请使用以下命令检查具体属性,比如 mtu:

# nmcli connection show id 'Wifi' | grep mtu
802-11-wireless.mtu: auto

使用如下命令更改设置的属性:

# nmcli connection modify id 'Wifi' 802-11-wireless.mtu 1350

使用如下命令确认更改:

# nmcli connection show id 'Wifi' | grep mtu
802-11-wireless.mtu: 1350

25.4 配置静态路由

  • 使用nmcli命令为网络连接配置静态路由,使用命令如下:

    [root@superman-21 ~]# nmcli connection modify ens33 +ipv4.routes 192.168.122.0/24 10.10.0.1  
    [root@superman-21 ~]#
  • 使用编辑器配置静态路由,使用如下命令:

    [root@superman-21 ~]# nmcli con edit type ethernet con-name ens33

    ===| nmcli 交互式连接编辑器 |===

    正在添加新的 802-3-ethernet 连接

    输入 help 或 ? 查看可用的命令。
    输入 print 来显示所有的连接属性。
    输入 describe [<设置>.<属性>] 来获得详细的属性描述。

    您可编辑下列设置:connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, hostname, tc, proxy
    nmcli> set ipv4.routes 192.168.122.0/24 10.10.10.1
    nmcli> save persistent
    使用 autoconnect=yes 保存该连接。这样会立即激活该连接。
    您仍要保存吗? (yes/no) [yes] yes
    连接 ens33 (24868b8f-fe3e-491f-a776-4a3cd85422f6) 已成功保存。
    nmcli> quit
    [root@superman-21 ~]#

image-20230225204021132

举报

相关推荐

0 条评论