nmcli 网络管理工具(待完善)

   Red Hat Enterprise Linux 7 与 CentOS 7 中默认的网络服务由 NetworkManager 提供,这是动态控制及配置网络的守护进程,它用于保持当前网络设备及链接处于工做状态,同时也支持传统的 ifcfg 类型的配置文件。bash

   NetworkManager 能够用于如下类型的链接:Ethernet,VLANS,Bridges,Bonds,Teams,Wi-Fi,mobile boradband(如移动3G)以及 IP-over-InfiniBand。针对与这些网络类型,NetworkManager 能够配置他们的网络别名,IP 地址,静态路由,DNS,×××链接以及不少其它的特殊参数。网络

   能够用命令行工具 nmcli 来控制 NetworkManager。ide

   在CentOS / RHEL 7中网络管理命令行工具,也叫nmcli。常常使用ifconfig的用户应该在CentOS 7中避免使用ifconfig了。nmcli的功能要强大、复杂的多。工具

## 使用语法oop

[root@CentOS7 ~]# nmcli helpui

Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }this

OPTIONS
-t[erse] terse output(简洁的输出)
-p[retty] pretty output(所有输出)
-m[ode] tabular|multiline output mode(输出模式 可选 tabular、multiline)
-f[ields] <field1,field2,...>|all| common specify fields to output(指定输出字段)
-e[scape] yes|no escape columns separators in values(在值中转义列分隔符)
-n[ocheck] don't check nmcli and NetworkManager versions(不要检查nmcli和网络管理器版本)
-a[sk] ask for missing parameters(找失踪的参数)
-w[ait] <seconds> set timeout waiting for finishing operations(设置超时等待完成操做)
-v[ersion] show program version(显示程序版本)
-h[elp] print this help(打印帮助)
OBJECT
g[eneral] NetworkManager's general status and operations(网络管理器的通常状态和操做)
n[etworking] overall networking control(总体网络控制)
r[adio] NetworkManager radio switches(使用无线网络)
c[onnection] NetworkManager's connections(使用其余网络)
d[evice] devices managed by NetworkManager(网络设备管理) 

OBJECT和COMMAND能够用全称也能够用简称,最少能够只用一个字母,建议用头三个字母。spa

OBJECT里面咱们平时用的最多的就是connection和device,这里须要简单区分一下connection和device。命令行

如connection能够简写为con;3d

 device可简写为dev。

device        - 指网络接口,物理网卡

connection       - 指链接,偏重于逻辑设置


多个connection能够应用到同一个device,但同一时间只能启用其中一个connection。

这样的好处是针对一个网络接口,咱们能够设置多个网络链接,好比静态IP和动态IP,再根据须要up相应的connection。

要获得系统中全部接口的地址信息

## 查看设备信息

[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a3:93:f4 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.140/24 brd 192.168.10.255 scope global eno16777736
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea3:93f4/64 scope link
valid_lft forever preferred_lft forever
 
## 查看当前设备
[root@localhost ~]# nmcli connection show
NAME        UUID                        TYPE        DEVICE
eno123      7b3f7a19-0f5e-4bb1-85ab-ac77d5b46f88  802-3-ethernet  eno16777736

 

获得特定链接的详情

[root@localhost ~]# nmcli connection show  eno16777736
connection.id:                          eno16777736
connection.uuid:                        13756690-ac77-b776-4fc1-f5535cee6f16
connection.stable-id:                   --
connection.interface-name:              eno16777736
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.timestamp:                   1513912633
connection.read-only:                   no
connection.permissions:
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:
connection.gateway-ping-timeout:        0
connection.metered:                     unknown
connection.lldp:                        -1 (default)
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          yes
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:                     auto
802-3-ethernet.s390-subchannels:
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:
802-3-ethernet.wake-on-lan:             1 (default)
802-3-ethernet.wake-on-lan-password:    --
ipv4.method:                            manual
ipv4.dns:
ipv4.dns-search:
ipv4.dns-options:                       (default)
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.10.140/24
ipv4.gateway:                           192.168.10.2
ipv4.routes:
ipv4.route-metric:                      -1
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-timeout:                      0
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.never-default:                     no
ipv4.may-fail:                          no
ipv4.dad-timeout:                       -1 (default)
ipv6.method:                            auto
ipv6.dns:
ipv6.dns-search:
ipv6.dns-options:                       (default)
ipv6.dns-priority:                      0
ipv6.addresses:
ipv6.gateway:                           --
ipv6.routes:
ipv6.route-metric:                      -1
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.addr-gen-mode:                     eui64
ipv6.dhcp-send-hostname:                yes
ipv6.dhcp-hostname:                     --
ipv6.token:                             --
GENERAL.NAME:                           eno16777736
GENERAL.UUID:                           13756690-ac77-b776-4fc1-f5535cee6f16
GENERAL.DEVICES:                        eno16777736
GENERAL.STATE:                          activated
GENERAL.DEFAULT:                        yes
GENERAL.DEFAULT6:                       no
GENERAL.×××:                            no
GENERAL.ZONE:                           --
GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/5
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/1
GENERAL.SPEC-OBJECT:                    /
GENERAL.MASTER-PATH:                    --
IP4.ADDRESS[1]:                         192.168.10.140/24
IP4.GATEWAY:                            192.168.10.2
IP6.ADDRESS[1]:                         fe80::20c:29ff:fea3:93f4/64
IP6.GATEWAY:


获得网络设备状态

[root@localhost ~]# nmcli device status
DEVICE       TYPE      STATE      CONNECTION
eno16777736  ethernet    connected      eno16777736
lo        loopback    unmanaged       --

 

配置新链接

## 使用“dhcp”建立新的链接
[root@localhost ~]# nmcli connection add con-name "enodhcp" type ethernet ifname eno16777736
Connection 'enodhcp' (edd1525f-9c81-49bb-b98a-e76ad1314ab5) successfully added.

connection add         – 添加新的链接
con-name "enodhcp"     – 链接名(可自定义)
type                   – 设备类型
ifname                 – 接口名(指定网卡名称)

## 不经过dhcp分配IP,使用“static”添加地址
[root@localhost ~]# nmcli connection add con-name "enostatic" ifname eno16777736 autoconnect no type ethernet ip4 192.168.10.145 gw4 192.168.10.2
Connection 'enostatic' (8e69d847-03d7-47c7-8623-bb112f5cc842) successfully added.

connection add         – 添加新的链接
con-name "enostatic"   – 链接名(可自定义)
type ethernet          – 设备类型
ifname                 – 接口名(指定网卡名称)
ip4                    - IP地址
gw4                    - 网关

## 更新链接;这里若是你是用终端链接的话更新以后,当前终端会被卡死。断开从新用新的IP地址链接就能够
[root@localhost ~]# nmcli connection up enostatic
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)

## 再查看网卡信息,IP地址已经改变
[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:a3:93:f4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.145/32 brd 192.168.10.145 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::c7f7:1818:2ffc:f9ea/64 scope link 
       valid_lft forever preferred_lft forever

## 查看路由配置,这样能够直观的看到链接信息。
[root@localhost ~]# ip route 
default via 192.168.10.140 dev eno16777736 proto static metric 100
192.168.10.140/24 dev eno16777736 proto kernel scope link src 192.168.10.145 metric 100 

## 添加DNS设置到静态链接中
[root@localhost ~]# nmcli connection modify "enostatic" ipv4.dns 114.114.114.114

## 增长更多的DNS;由于是新添加额外的dns,全部在使用"+"号(+ipv4.dns),而不是ip4.dns。增长IP同理
[root@localhost ~]# nmcli connection modify "enostatic" +ipv4.dns 8.8.8.8

## 添加一个额外的ip地址
[root@localhost ~]# nmcli connection modify "enostatic" +ipv4.addresses 192.168.10.146/24