Nmcli 网络管理命令行工具基础
介绍 在本教程中，我们会在CentOS / RHEL 7中讨论网络管理工具（NetworkManager command line tool），也叫nmcli。那些使用ifconfig的用户应该在CentOS 7中避免使用ifconfig 了。 让我们用nmcli工具配置一些网络设置。 要得到系统中所有接口的地址信息 # ip addr show  示例输出： 1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN 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 prefe
nmcli
118.122.120.235
# 看 IP<br />
nmcli dev show eno????<br />
# 设 DNS<br />
nmcli connection modify &quot;static&quot; ipv4.dns &quot;1.2.3.4, 5.6.7.8&quot;
来自四川成都的 Chrome 45.0|GNU/Linux 用户
2015-09-17T13:19:33.000
27.19.148.130
老实说我觉得nmcli和firewall-cmd都是灾难。
来自湖北武汉的 Firefox 40.0|Fedora 用户
2015-09-17T21:54:23.000
222.209.108.250
没觉得，nmcli 可以一站式完成几乎所有网络配置。而 firewall-cmd 也很方便。不是所有人都精通 iptables。
来自四川成都的 Chrome 45.0|GNU/Linux 用户
2015-09-17T22:38:46.000
111.201.13.121
我是觉得，这么冗长的命令和参数，其实对于英语国家来说，毫无感觉，而对于非英语国家，总是不太友好。
linux [Chrome 45.0|Mac 10.10]
2015-09-18T09:27:42.000
118.122.120.235
现在 GNU 包的很多软件都同时支持短参数和长参数格式，甚至部分参数只有长的没有短的。长参数格式有一个好处是，具有一定的自解释功能，方便用户了解命令具体执行什么操作。而且像 nmcli 这些较新的命令，也支持参数缩写。比如 nmcli connection 可以缩写为 nmcli co。
来自四川成都的 Chrome 45.0|GNU/Linux 用户
2015-09-18T10:15:55.000
介绍 在本教程中，我们会在CentOS / RHEL 7中讨论网络管理工具（NetworkManager command line tool），也叫nmcli。那些使用ifconfig的用户应该在CentOS 7中避免使用ifconfig 了。 让我们用nmcli工具配置一些网络设置。 要得到系统中所有接口的地址信息 # ip addr show  示例输出： 1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN 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 prefe
![](/data/attachment/album/201509/17/105759s9i4i9wpkyw8ip09.jpg)


### 介绍


在本教程中，我们会在CentOS / RHEL 7中讨论<ruby> 网络管理命令行工具 <rp>  （ </rp> <rt>  NetworkManager command line tool </rt> <rp>  ） </rp></ruby>，也叫**nmcli**。那些使用**ifconfig**的用户应该在CentOS 7中避免使用**ifconfig** 了。


让我们用nmcli工具配置一些网络设置。


#### 要得到系统中所有接口的地址信息



```
[root@localhost ~]# ip addr show

```

**示例输出：**



```
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
 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:67:2f:4c brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.51/24 brd 192.168.1.255 scope global eno16777736
 valid_lft forever preferred_lft forever
 inet6 fe80::20c:29ff:fe67:2f4c/64 scope link 
 valid_lft forever preferred_lft forever

```

#### 检索与已连接的接口相关的数据包统计



```
[root@localhost ~]# ip -s link show eno16777736

```

**示例输出：**


![](/data/attachment/album/201509/17/105801w5ppjse4gpp8q2wp.png)


#### 得到路由配置



```
[root@localhost ~]# ip route

```

示例输出：



```
default via 192.168.1.1 dev eno16777736 proto static metric 100 
192.168.1.0/24 dev eno16777736 proto kernel scope link src 192.168.1.51 metric 100

```

#### 分析主机/网站路径



```
[root@localhost ~]# tracepath unixmen.com

```

输出像traceroute，但是更加完整。


![](/data/attachment/album/201509/17/105802rls9dmr97ggqm3qm.png)


### nmcli 工具


**nmcli** 是一个非常丰富和灵活的命令行工具。nmcli使用的情况有：


* **设备** – 正在使用的网络接口
* **连接** – 一组配置设置，对于一个单一的设备可以有多个连接，可以在连接之间切换。


#### 找出有多少连接服务于多少设备



```
[root@localhost ~]# nmcli connection show

```

![](/data/attachment/album/201509/17/105802yfaass94qukuqkk4.png)


#### 得到特定连接的详情



```
[root@localhost ~]# nmcli connection show eno1

```

**示例输出：**


![](/data/attachment/album/201509/17/105802upxvxpfxepvl0psl.png)


#### 得到网络设备状态



```
[root@localhost ~]# nmcli device status

```



---



```
 DEVICE               TYPE              STATE          CONNECTION 
eno16777736            ethernet      connected              eno1 
lo                     loopback      unmanaged               --

```

#### 使用“dhcp”创建新的连接



```
[root@localhost ~]# nmcli connection add con-name "dhcp" type ethernet ifname eno16777736

```

这里，


* **connection add** – 添加新的连接
* **con-name** – 连接名
* **type** – 设备类型
* **ifname** – 接口名


这个命令会使用dhcp协议添加连接


**示例输出：**



```
Connection 'dhcp' (163a6822-cd50-4d23-bb42-8b774aeab9cb) successfully added.

```

#### 不通过dhcp分配IP，使用“static”添加地址



```
[root@localhost ~]# nmcli connection add con-name "static" ifname eno16777736 autoconnect no type ethernet ip4 192.168.1.240 gw4 192.168.1.1

```

**示例输出：**



```
Connection 'static' (8e69d847-03d7-47c7-8623-bb112f5cc842) successfully added.

```

**更新连接：**



```
[root@localhost ~]# nmcli connection up eno1

```

再检查一遍，ip地址是否已经改变



```
[root@localhost ~]# ip addr show

```

![](/data/attachment/album/201509/17/105803yg4zwfi70m7fgi00.png)


#### 添加DNS设置到静态连接中



```
[root@localhost ~]# nmcli connection modify "static" ipv4.dns 202.131.124.4

```

#### 添加更多的DNS



```
[root@localhost ~]# nmcli connection modify "static" +ipv4.dns 8.8.8.8
```

**注意**：要使用额外的**+**符号，并且要是**+ipv4.dns**，而不是**ip4.dns**。


#### 添加一个额外的ip地址



```
[root@localhost ~]# nmcli connection modify "static" +ipv4.addresses 192.168.200.1/24

```

使用命令刷新设置：



```
[root@localhost ~]# nmcli connection up eno1

```

![](/data/attachment/album/201509/17/105804p999fmwnlddk6dsn.png)


你会看见，设置生效了。


完结。




---


via: <http://www.unixmen.com/basics-networkmanager-command-line-tool-nmcli/>


作者：Rajneesh Upadhyay 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](https://linux.cn/) 荣誉推出

