---
title: Wireguard与Network Manager
description: 
---

## 要求
* 基本的命令行知识。
* 安装有 Network Manager 1.16 或更高版本的 Linux 发行版。

## 注意

Network Manager 将 Wireguard 连接视为本机网络连接。它们不会显示在 VPN 连接列表中。如果您需要在 VPN 连接列表中显示，请改用 OpenVPN 或 StrongSWAN。

## 版本检查

我们先检查一下是否安装了 Network Manager 1.16 或更高版本：

```
❯ nmcli -v
nmcli tool, version 1.22.10
```

## Wireguard 配置

下载我们的 [wireguard_servers.zip](/config/wireguard/zip)。

解压缩 ZIP 文件：

```
❯ unzip wireguard-servers.zip 
Archive:  wireguard-servers.zip
  inflating: AT Vienna 2020-05-12.conf  
  inflating: AU Sydney 2020-05-12.conf  
  inflating: AU Sydney 3 2020-05-12.conf  
... etc.
```

## 导入 Wireguard 配置

Network Manager 要求文件名必须是有效的 Wireguard 接口名称。例如：wg0.conf、wg1.conf、...、wg1000.conf。

让我们导入 AT Vienna 的 Wireguard 配置：

```
❯ mv AT\ Vienna\ 2020-05-12.conf vienna-wg0.conf

❯ nmcli connection import type wireguard file vienna-wg0.conf
Connection 'vienna-wg0' (5b56bced-f8cc-49d3-8537-207f279fd6dc) successfully added.
```

注意：此时不要导入多个配置。您将在下一步中明白原因。

## 连接/断开连接

在导入连接之后，Network Manager 会立即连接到 VPN。

要断开 VPN 连接：

```
❯ nmcli connection down vienna-wg0
Connection 'vienna-wg0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/25)
```

要再次连接到 VPN：

```
❯ nmcli connection up vienna-wg0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/27)
```

## 删除连接

我们建议您删除未使用、旧的或冗余的 Wireguard 接口：

```
❯ nmcli connection show
NAME                         UUID                                  TYPE       DEVICE     
Wired connection 1           dd530962-d349-353f-abaa-a81595677d23  ethernet   enp4s0     
vienna-wg0                   8d752c4d-a7f4-4def-bbb3-bad23e3c8bb8  wireguard  vienna-wg0 

❯ nmcli connection delete vienna-wg0
Connection 'vienna-wg0' (8d752c4d-a7f4-4def-bbb3-bad23e3c8bb8) successfully deleted.

❯ nmcli connection show
NAME                         UUID                                  TYPE       DEVICE     
Wired connection 1           dd530962-d349-353f-abaa-a81595677d23  ethernet   enp4s0
```

## 推荐：自动设置路由

在大多数情况下，您希望将所有流量路由到 VPN。您可以通过启用 auto-default-route 选项来让 NetworkManager 自动处理这个问题：

```
❯ nmcli connection modify vienna-wg0 wireguard.ip4-auto-default-route true
```

然后（重新）连接到 VPN。

## 连接详细信息

*可选*。

每个连接都有一些可以更改的属性。

让我们看看我们有哪些选项：

```
❯ nmcli connection show vienna-wg0
connection.id:                          AT Vienna
connection.uuid:                        b6b3f8b2-5e4f-4adf-b95c-311b29c87fc1
connection.stable-id:                   --
connection.type:                        vpn
connection.interface-name:              --
connection.autoconnect:                 no
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
...etc.
```

## 可选：自动连接

您可能已经注意到了 **connection.autoconnect** 这个选项。它实际上就是您想的那样：在计算机启动时自动连接到 VPN。

要启用此选项：

```
❯ nmcli connection modify vienna-wg0 connection.autoconnect yes
```

要再次禁用它：

```
❯ nmcli connection modify vienna-wg0 connection.autoconnect no
```

注意：我们建议您**不要**在笔记本电脑上使用此选项。它与酒店、星巴克等地方使用的登录界面（强制登录门户）不兼容。

## 可选：重命名连接

我们更喜欢给连接起一个更有意义的名称：

```
❯ nmcli connection modify vienna-wg0 connection.id "AT Vienna"

❯ nmcli connection show
NAME                         UUID                                  TYPE       DEVICE     
Wired connection 1           dd530962-d349-353f-abaa-a81595677d23  ethernet   enp4s0     
AT Vienna                    8d752c4d-a7f4-4def-bbb3-bad23e3c8bb8  wireguard  vienna-wg0 
```

这意味着您从现在开始需要使用 **“AT Vienna”** 而不是 **vienna-wg0** 在命令中。

## 可选：缩略命令

为了提高效率，我们已经向您展示了完整的 nmcli 命令。大多数命令可以使用缩写形式。

一些例子：

```
❯ nmcli c i type wireguard file vienna-wg0.conf
Connection 'vienna-wg0' (71639a6e-fe83-4003-986c-6aef946fd39b) successfully added.

❯ nmcli c d vienna-wg0
Connection 'vienna-wg0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/29)

❯ nmcli c de vienna-wg0 
Connection 'vienna-wg0' (71639a6e-fe83-4003-986c-6aef946fd39b) successfully deleted.
```

等等。