NordVPN

来自 ArchWiki

NordVPN 是一家个人虚拟专用网络服务提供商。NordVPN 的总部位于巴拿马。该国没有强制性数据保留法,也不参与五眼联盟或十四眼联盟。在 Linux 上,NordVPN 通过命令行工具运行。

创建账户

为了使用 NordVPN,您必须在 NordVPN 官方网站上创建自己的账户。 https://nordvpn.com

有不同的付款选项可供选择。

安装

NordVPN 可以使用软件包 nordvpn-binAUR 安装。

以下是一个 bash 命令序列,可用于配置您的环境以使用该软件包

# groupadd -r nordvpn
# gpasswd -a <username> nordvpn

systemd 服务

为了使用 NordVPN,您必须启用启动 nordvpnd.service 系统单元。

配置

以下是一些使用 NordVPN 的常用命令

登录/登出

$ nordvpn login

登录到您的 NordVPN 账户。

注意: 自 2022 年 4 月起,NordVPN 使用基于 Web 的登录,登录后不会返回终端。为了解决这个问题,请复制登录后链接(在浏览器登录后右键单击“继续”),该链接应以“nordvpn://”开头,并在终端中键入以下内容(将 nordvpnlink 替换为实际链接,并保留双引号)
$ nordvpn login --callback "nordvpnlink"

请参阅来自 nordvpn-bin AUR 的评论

或者,通过从您的账户仪表板生成的访问令牌登录,如下所示 NordVPN 仪表板

$ nordvpn login --token "tokencode"
$ nordvpn logout

从您的 NordVPN 账户登出。

启用 NordLynx (WireGuard)

NordVPN 引入了 NordLynx 技术,该技术基于 WireGuard 协议。与默认的 OpenVPN 技术相比,WireGuard 提供更低的延迟、更高的速度和更好的连接稳定性。由于 WireGuard 用户识别的性质,NordVPN 引入了 NordLynx,它在 WireGuard 之上实现了一个双 NAT 协议,以补充增强隐私。

使用以下命令启用它

$ nordvpn set technology nordlynx

查看所有可用技术

$ nordvpn set technology --help

连接到 VPN

将您连接到 VPN。

$ nordvpn connect [[country]/[server]/[country_code]/[city] or [country] [city]]
Provide a [country] argument to automatically connect to a specific country. For example: 'nordvpn set autoconnect on Australia'
Provide a [country_code] argument to automatically connect to a specific country. For example: 'nordvpn set autoconnect on us'
Provide a [city] argument to automatically connect to a specific city. For example: 'nordvpn set autoconnect on Budapest'

断开您与 VPN 的连接。

$ nordvpn disconnect

显示连接状态。

$ nordvpn status

设置

设置协议。

$ nordvpn set protocol [protocol]
Supported values for [protocol]: TCP, UDP
Example: nordvpn set protocol TCP

启用或禁用终止开关。此安全功能会在与 VPN 服务器的连接丢失时阻止您的设备访问安全 VPN 隧道之外的互联网。如果您开始注意到断开 VPN 连接后您的连接无法工作,这可能是由于终止开关功能存在错误,因此您必须禁用它。

$ nordvpn set killswitch [enabled]/[disabled]
Supported values for [disabled]: 0, false, disable, off, disabled
Example: nordvpn set killswitch off

Supported values for [enabled]: 1, true, enable, on, enabled
Example: nordvpn set killswitch on

启用或禁用 Threat Protection Lite (以前称为 Cyber​​Sec)。启用后,Threat Protection Lite 功能将自动阻止可疑网站,从而防止恶意软件或其他网络威胁感染您的设备。此外,不会出现花哨的广告。有关其工作原理的更多信息:https://nordvpn.com/features/threat-protection/

注意: 启用 Threat Protection Lite 会禁用自定义 DNS,反之亦然。
$ nordvpn set threatprotectionlite [enabled]/[disabled]
Supported values for [disabled]: 0, false, disable, off, disabled
Example: nordvpn set threatprotectionlite off

Supported values for [enabled]: 1, true, enable, on, enabled
Example: nordvpn set threatprotectionlite on

启用或禁用自动连接。启用后,此功能将在操作系统启动时自动尝试连接到 VPN。

$ nordvpn set autoconnect [enabled]/[disabled] [[country]/[server]/[country_code]/[city] or [country] [city]]
Supported values for [disabled]: 0, false, disable, off, disabled
Example: nordvpn set autoconnect off

Supported values for [enabled]: 1, true, enable, on, enabled
Example: nordvpn set autoconnect on

Provide a [country] argument to automatically connect to a specific country. For example: 'nordvpn set autoconnect on Australia'
Provide a [country_code] argument to automatically connect to a specific country. For example: 'nordvpn set autoconnect on us'
Provide a [city] argument to automatically connect to a specific city. For example: 'nordvpn set autoconnect on Budapest'

设置 DNS 服务器。

$ nordvpn set dns [servers]/[disabled]
Supported values for [disabled]: 0, false, disable, off, disabled
Example: nordvpn set dns off

Arguments [servers] is a list of IP addresses separated by space
Example: nordvpn set dns 0.0.0.0 1.2.3.4

从白名单中添加或删除选项。

$ nordvpn whitelist command [command options] [arguments...]
Commands:
     add     Adds option to whitelist
     remove  Removes option from whitelist

显示当前设置。

$ nordvpn settings

服务器列表

显示城市列表。

$ nordvpn cities

显示国家/地区列表。

$ nordvpn countries

使用此命令显示特定国家/地区的城市。

$ nordvpn cities [country]
Example: nordvpn cities United_States

替代方法:使用 NetworkManager 连接到 NordVPN

安装

1. 安装 networkmanagernetworkmanager-openvpn

2. 使用 NordVPN 服务器页面选择合适的服务器:https://nordvpn.com/servers/ 在 NordVPN 站点上下载相应的 OpenVPN 配置文件:https://nordvpn.com/ovpn/ 将文件保存到用户主目录中或将来访问时易于记忆的其他位置。

配置

1. 右键单击桌面环境中的 NetworkManager 小程序,然后单击编辑连接。单击出现的网络连接窗口左下角的加号。

2. 当您选择连接类型时,单击下拉菜单并一直向下滚动,直到到达“导入已保存的 VPN 配置”。选择该选项。现在,单击创建。

3. 导航到您之前将所有 OpenVPN 文件解压缩到的目录,然后打开该文件夹中的一个文件。一般来说,您将需要打开与您特别想要的连接相关联的文件。

4. 打开其中一个 OpenVPN 文件后,出现的窗口应为“正在编辑 <连接类型>”。键入您的 NordVPN 用户名和密码。密码框中有一个图标,指示凭据的用户权限;根据需要更改设置(如果您不想每次连接都输入密码,则选择“为所有用户保存”)。

避免 DNS 泄漏

为了防止 DNS 泄漏,您必须

1. 单击“IPv4 设置”。

2. 对于方法,选择“仅自动(VPN)地址”,并在“DNS 服务器”中手动输入 NordVPN DNS 地址“103.86.96.100, 103.86.99.100”(以逗号分隔)。

3. 单击“正在编辑 <连接类型>”窗口左下角的保存。

自动连接到 VPN

1. 右键单击桌面环境中的 NetworkManager 小程序,然后单击编辑连接。

2. 双击您想要自动连接到 VPN 的以太网或 Wifi 连接

3. 在“常规”选项卡上,在您想要的每个连接中单击“使用此连接时自动连接到 VPN”,然后选择正确的配置文件。

4. 对您将与 VPN 一起使用的其他连接重复此操作。

禁用 IPv6

NordVPN 与 IPv6 不兼容。您可能需要完全禁用它

或者您也可以

1. 右键单击桌面环境中的 NetworkManager 小程序,然后单击编辑连接。

2. 双击您想要自动连接到 VPN 的以太网或 Wifi 连接

3. 在“ipv6”选项卡上,在方法框中选择“忽略”。

使用终止开关

NordVPN 终止开关不适用于此方法,您将必须使用 ufwiptables 创建自己的终止开关。

这是一个使用 UFW 的示例

测试您的配置

您可以使用这些网站

https://ipleak.net/

https://www.dnsleaktest.com/

https://ipv6leak.com/

故障排除

连接后无法访问互联网

如果网络阻止包括代理连接在内的所有 VPN 协议,则连接尝试可能会失败。尝试更改协议(例如,更改为 TCP)、使用混淆服务器或 NordLynx 协议。

$ nordvpn set technology openvpn
$ nordvpn set protocol tcp
$ nordvpn set obfuscate on

请注意,安装此类服务器的国家/地区列表要短得多。

或者,您的本地网络的子网可能存在冲突,例如

$ ip route
default via 10.1.1.1 dev enp0s31f6 proto dhcp metric 100 
10.0.0.0/8 dev enp0s31f6 proto kernel scope link src 10.1.2.86 metric 100 
10.5.0.0/16 dev nordlynx proto kernel scope link src 10.5.0.2

为了解决这个问题,请使用以下命令将您网络的子网列入白名单,例如

$ nordvpn whitelist add subnet 10.0.0.0/8

断开连接后无法访问互联网

通过 nordvpn d 断开连接后,计算机可能无法访问互联网,但 ping(例如 ping 8.8.8.8)仍然会成功。这很可能是 DNS 问题:连接到服务器后,本地 DNS 将被 NordVPN 的 DNS 覆盖,以确保与服务器的安全连接。断开连接后,DNS 将被删除,这可能会导致问题。这可能是由于终止开关功能存在错误,因此您可以禁用它,方法是写入

$ nordvpn set killswitch disabled

可能需要重启任何正在运行的网络管理器

通过终端连接时遇到问题

如果您在通过终端连接时遇到问题并收到连接错误,则需要将您的子网列入白名单并在 NordVPN 上打开一个端口。打开终端并检查您有哪些子网。

$ ip route
default via 10.1.1.1 dev enp0s31f6 proto dhcp metric 100 
10.0.0.0/8 dev enp0s31f6 proto kernel scope link src 10.1.2.86 metric 100
10.5.0.0/16 dev nordlynx proto kernel scope link src 10.5.0.2

第二个子网 (10.0.0.0/8) 是我们想要在 NordVPN 中列入白名单的子网,您可以使用以下命令执行此操作

$ nordvpn whitelist add subnet 10.0.0.0/8

如果您希望再次将子网列入黑名单,只需运行以下命令 

$ nordvpn whitelist remove subnet 10.0.0.0/8 

端口 22 是 SSH 工作所需的端口,您可以使用以下命令打开它 

$ nordvpn whitelist add port 22

如果您希望再次将端口列入黑名单,只需运行以下命令 

$ nordvpn whitelist remove port 22

另请参阅#设置 systemd-resolved 作为 DNS 解析器

终端上随机断开连接

重置终止开关

如果您在终端上随机断开与 NordVPN 的连接,并且不允许您重新连接,只需禁用并重新启用终止开关即可

$ nordvpn set killswitch off
$ nordvpn set killswitch on

大多数情况下,关闭终止开关后它将无法连接,NordVPN 的 Linux 应用程序目前非常不稳定。

重启守护进程

或者,重启 nordvpn.service 可以解决连接问题。

由于最近的更新,当守护进程重启时,`iptables` 策略不再被刷新。如果重启无法恢复连接,请先尝试使用以下命令刷新这些表

# iptables -F

设置 systemd-resolved 作为 DNS 解析器

这里需要注意的是,Linux 版 NordVPN 显然旨在使用 systemd-resolved,并且在使用不同的 DNS 解析器时可能会崩溃。您可以通过以下步骤切换到 systemd-resolved

移除 openresolv

启动/启用 systemd-resolved.service

备份现有的 resolv.conf

# mv /etc/resolv.conf /etc/resolv.conf.bak

创建指向 stub-resolv.conf 的符号链接

# ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

重启 nordvpnd.service

有关更多信息,请参阅原始来源 此处

安装 wireguard-tools

当使用 NordLynx(NordVPN 的 WireGuard 技术)时,有时连接仍然会断开,即使在使用 systemd-resolved 作为 DNS 解析器时也是如此。这是由于对 wireguard-tools 的一个未提及的依赖项造成的,应该安装它,然后可以重启 nordvpnd.service

终端命令执行延迟

在没有正常运行的通知系统的桌面系统上,执行终端命令(例如 nordvpn disconnect 和类似命令)后可能会有很长的延迟。这可以通过安装和初始化通知代理来解决。