2017-03-20 06:10:49 +03:00
# 配置 IPsec/L2TP VPN 客户端
2016-05-10 22:52:02 +03:00
2016-06-25 01:54:24 +03:00
*其他语言版本: [English ](clients.md ), [简体中文 ](clients-zh.md ).*
2016-05-10 22:52:02 +03:00
2019-02-05 09:24:32 +03:00
**注: 你也可以使用更高效的 [IPsec/XAuth 模式 ](clients-xauth-zh.md ) 连接,或者配置 [IKEv2 ](ikev2-howto-zh.md )。**
2016-05-10 22:52:02 +03:00
2019-02-10 01:24:19 +03:00
在成功 < a href = "../README-zh.md" target = "_blank" > 搭建自己的 VPN 服务器< / a > 之后, 按照下面的步骤来配置你的设备。IPsec/L2TP 在 Android, iOS, OS X 和 Windows 上均受支持,无需安装额外的软件。设置过程通常只需要几分钟。如果无法连接,请首先检查是否输入了正确的 VPN 登录凭证。
2016-05-10 22:52:02 +03:00
---
* 平台名称
* [Windows ](#windows )
2016-07-20 21:47:21 +03:00
* [OS X (macOS) ](#os-x )
2016-05-10 22:52:02 +03:00
* [Android ](#android )
2016-07-20 21:47:21 +03:00
* [iOS (iPhone/iPad) ](#ios )
2016-05-10 22:52:02 +03:00
* [Chromebook ](#chromebook )
2016-07-20 21:47:21 +03:00
* [Linux ](#linux )
2016-09-30 19:53:33 +03:00
* [故障排除 ](#故障排除 )
2016-05-10 22:52:02 +03:00
2016-09-10 00:45:39 +03:00
## Windows
2016-05-31 23:40:22 +03:00
2016-09-10 00:45:39 +03:00
### Windows 10 and 8.x
2016-05-31 23:40:22 +03:00
1. 右键单击系统托盘中的无线/网络图标。
2018-10-29 09:27:04 +03:00
1. 选择 **打开网络和共享中心** 。或者,如果你使用 Windows 10 版本 1709 或以上,选择 **打开"网络和 Internet"设置** ,然后在打开的页面中单击 **网络和共享中心** 。
2016-05-31 23:40:22 +03:00
1. 单击 **设置新的连接或网络** 。
1. 选择 **连接到工作区** ,然后单击 **下一步** 。
1. 单击 **使用我的Internet连接 (VPN)** 。
1. 在 **Internet地址** 字段中输入`你的 VPN 服务器 IP`。
1. 在 **目标名称** 字段中输入任意内容。单击 **创建** 。
2018-10-29 09:27:04 +03:00
1. 返回 **网络和共享中心** 。单击左侧的 **更改适配器设置** 。
2016-07-20 21:47:21 +03:00
1. 右键单击新创建的 VPN 连接,并选择 **属性** 。
2016-05-31 23:40:22 +03:00
1. 单击 **安全** 选项卡,从 **VPN 类型** 下拉菜单中选择 "使用 IPsec 的第 2 层隧道协议 (L2TP/IPSec)"。
2018-12-19 09:14:52 +03:00
1. 单击 **允许使用这些协议** 。选中 "质询握手身份验证协议 (CHAP)" 和 "Microsoft CHAP 版本 2 (MS-CHAP v2)" 复选框。
2016-05-31 23:40:22 +03:00
1. 单击 **高级设置** 按钮。
1. 单击 **使用预共享密钥作身份验证** 并在 **密钥** 字段中输入`你的 VPN IPsec PSK`。
1. 单击 **确定** 关闭 **高级设置** 。
1. 单击 **确定** 保存 VPN 连接的详细信息。
2018-12-10 09:33:46 +03:00
**注:** 在首次连接之前需要**修改一次注册表**。请参见下面的说明。
2018-11-09 09:00:58 +03:00
另外,除了按照以上步骤操作,你也可以运行下面的 Windows PowerShell 命令来创建 VPN 连接。将 `你的 VPN 服务器 IP` 和 `你的 VPN IPsec PSK` 换成你自己的值,用单引号括起来:
```console
# 不保存命令行历史记录
Set-PSReadlineOption – HistorySaveStyle SaveNothing
# 创建 VPN 连接
2018-12-19 09:14:52 +03:00
Add-VpnConnection -Name 'My IPsec VPN' -ServerAddress '你的 VPN 服务器 IP' -L2tpPsk '你的 VPN IPsec PSK' -TunnelType L2tp -EncryptionLevel Required -AuthenticationMethod Chap,MSChapv2 -Force -RememberCredential -PassThru
# 忽略 data encryption 警告(数据在 IPsec 隧道中已被加密)
2018-11-09 09:00:58 +03:00
```
2016-09-10 00:45:39 +03:00
### Windows 7, Vista and XP
2016-05-31 23:40:22 +03:00
2016-05-11 08:26:25 +03:00
1. 单击开始菜单,选择控制面板。
1. 进入 **网络和Internet** 部分。
2018-10-29 09:27:04 +03:00
1. 单击 **网络和共享中心** 。
2016-05-10 22:52:02 +03:00
1. 单击 **设置新的连接或网络** 。
2016-05-31 23:40:22 +03:00
1. 选择 **连接到工作区** ,然后单击 **下一步** 。
2016-05-10 22:52:02 +03:00
1. 单击 **使用我的Internet连接 (VPN)** 。
1. 在 **Internet地址** 字段中输入`你的 VPN 服务器 IP`。
1. 在 **目标名称** 字段中输入任意内容。
1. 选中 **现在不连接;仅进行设置以便稍后连接** 复选框。
1. 单击 **下一步** 。
1. 在 **用户名** 字段中输入`你的 VPN 用户名`。
1. 在 **密码** 字段中输入`你的 VPN 密码`。
1. 选中 **记住此密码** 复选框。
2016-05-31 23:40:22 +03:00
1. 单击 **创建** ,然后单击 **关闭** 按钮。
2018-10-29 09:27:04 +03:00
1. 返回 **网络和共享中心** 。单击左侧的 **更改适配器设置** 。
2016-07-20 21:47:21 +03:00
1. 右键单击新创建的 VPN 连接,并选择 **属性** 。
2016-08-26 09:52:55 +03:00
1. 单击 **选项** 选项卡,取消选中 **包括Windows登录域** 复选框。
2016-05-31 23:40:22 +03:00
1. 单击 **安全** 选项卡,从 **VPN 类型** 下拉菜单中选择 "使用 IPsec 的第 2 层隧道协议 (L2TP/IPSec)"。
2018-12-19 09:14:52 +03:00
1. 单击 **允许使用这些协议** 。选中 "质询握手身份验证协议 (CHAP)" 和 "Microsoft CHAP 版本 2 (MS-CHAP v2)" 复选框。
2016-05-10 22:52:02 +03:00
1. 单击 **高级设置** 按钮。
2016-05-19 06:16:11 +03:00
1. 单击 **使用预共享密钥作身份验证** 并在 **密钥** 字段中输入`你的 VPN IPsec PSK`。
2016-05-10 22:52:02 +03:00
1. 单击 **确定** 关闭 **高级设置** 。
1. 单击 **确定** 保存 VPN 连接的详细信息。
2016-05-13 09:46:26 +03:00
2017-02-08 06:12:31 +03:00
**注:** 在首次连接之前需要< a href = "#windows-错误-809" > 修改一次注册表< / a > ,以解决 VPN 服务器 和/或 客户端与 NAT (比如家用路由器)的兼容问题。
2017-01-18 09:54:53 +03:00
2016-09-10 00:45:39 +03:00
要连接到 VPN: 单击系统托盘中的无线/网络图标,选择新的 VPN 连接,然后单击 **连接** 。如果出现提示,在登录窗口中输入 `你的 VPN 用户名` 和 `密码` ,并单击 **确定** 。最后你可以到 < a href = "https://www.ipchicken.com" target = "_blank" > 这里</ a > 检测你的 IP 地址,应该显示为`你的 VPN 服务器 IP`。
2016-05-10 22:52:02 +03:00
2016-06-26 22:51:21 +03:00
如果在连接过程中遇到错误,请参见 < a href = "#故障排除" > 故障排除< / a > 。
2016-09-10 00:45:39 +03:00
## OS X
2016-05-10 22:52:02 +03:00
1. 打开系统偏好设置并转到网络部分。
1. 在窗口左下角单击 ** +** 按钮。
1. 从 **接口** 下拉菜单选择 **VPN** 。
1. 从 **VPN类型** 下拉菜单选择 **IPSec 上的 L2TP** 。
1. 在 **服务名称** 字段中输入任意内容。
1. 单击 **创建** 。
1. 在 **服务器地址** 字段中输入`你的 VPN 服务器 IP`。
1. 在 **帐户名称** 字段中输入`你的 VPN 用户名`。
1. 单击 **鉴定设置** 按钮。
1. 在 **用户鉴定** 部分,选择 **密码** 单选按钮,然后输入`你的 VPN 密码`。
2016-05-19 06:16:11 +03:00
1. 在 **机器鉴定** 部分,选择 **共享的密钥** 单选按钮,然后输入`你的 VPN IPsec PSK`。
2016-05-10 22:52:02 +03:00
1. 单击 **好** 。
1. 选中 **在菜单栏中显示 VPN 状态** 复选框。
2018-09-14 08:01:00 +03:00
1. ** (重要)** 单击 **高级** 按钮,并选中 **通过VPN连接发送所有通信** 复选框。
2016-05-13 09:46:26 +03:00
1. 单击 **TCP/IP** 选项卡,并在 **配置IPv6** 部分中选择 **仅本地链接** 。
2016-05-10 22:52:02 +03:00
1. 单击 **好** 关闭高级设置,然后单击 **应用** 保存VPN连接信息。
2016-09-10 00:45:39 +03:00
要连接到 VPN: 使用菜单栏中的图标,或者打开系统偏好设置的网络部分,选择 VPN 并单击 **连接** 。最后你可以到 < a href = "https://www.ipchicken.com" target = "_blank" > 这里</ a > 检测你的 IP 地址,应该显示为`你的 VPN 服务器 IP`。
2018-10-29 09:27:04 +03:00
如果在连接过程中遇到错误,请参见 < a href = "#故障排除" > 故障排除< / a > 。
2016-09-10 00:45:39 +03:00
## Android
2016-05-10 22:52:02 +03:00
1. 启动 **设置** 应用程序。
1. 在 **无线和网络** 部分单击 **更多...** 。
1. 单击 **VPN** 。
2016-05-13 09:46:26 +03:00
1. 单击 **添加VPN配置文件** 或窗口右上角的 ** +**。
2016-05-10 22:52:02 +03:00
1. 在 **名称** 字段中输入任意内容。
1. 在 **类型** 下拉菜单选择 **L2TP/IPSec PSK** 。
1. 在 **服务器地址** 字段中输入`你的 VPN 服务器 IP`。
2019-04-29 18:13:41 +03:00
1. 保持 **L2TP 密钥** 字段空白。
1. 保持 **IPSec 标识符** 字段空白。
2016-05-19 06:16:11 +03:00
1. 在 **IPSec 预共享密钥** 字段中输入`你的 VPN IPsec PSK`。
2016-05-10 22:52:02 +03:00
1. 单击 **保存** 。
1. 单击新的VPN连接。
1. 在 **用户名** 字段中输入`你的 VPN 用户名`。
1. 在 **密码** 字段中输入`你的 VPN 密码`。
1. 选中 **保存帐户信息** 复选框。
1. 单击 **连接** 。
2016-09-10 00:45:39 +03:00
VPN 连接成功后,会在通知栏显示图标。最后你可以到 < a href = "https://www.ipchicken.com" target = "_blank" > 这里< / a > 检测你的 IP 地址,应该显示为`你的 VPN 服务器 IP`。
2016-08-19 09:38:23 +03:00
2016-09-10 00:45:39 +03:00
如果在连接过程中遇到错误,请参见 < a href = "#故障排除" > 故障排除< / a > 。
2016-05-10 22:52:02 +03:00
2016-09-10 00:45:39 +03:00
## iOS
2016-05-10 22:52:02 +03:00
1. 进入设置 -> 通用 -> VPN。
1. 单击 **添加VPN配置...** 。
1. 单击 **类型** 。选择 **L2TP** 并返回。
1. 在 **描述** 字段中输入任意内容。
1. 在 **服务器** 字段中输入`你的 VPN 服务器 IP`。
1. 在 **帐户** 字段中输入`你的 VPN 用户名`。
1. 在 **密码** 字段中输入`你的 VPN 密码`。
2016-05-19 06:16:11 +03:00
1. 在 **密钥** 字段中输入`你的 VPN IPsec PSK`。
2016-05-10 22:52:02 +03:00
1. 启用 **发送所有流量** 选项。
2018-10-13 22:26:09 +03:00
1. 单击右上角的 **完成** 。
2016-05-10 22:52:02 +03:00
1. 启用 **VPN** 连接。
2016-09-10 00:45:39 +03:00
VPN 连接成功后,会在通知栏显示图标。最后你可以到 < a href = "https://www.ipchicken.com" target = "_blank" > 这里< / a > 检测你的 IP 地址,应该显示为`你的 VPN 服务器 IP`。
2018-10-29 09:27:04 +03:00
如果在连接过程中遇到错误,请参见 < a href = "#故障排除" > 故障排除< / a > 。
2016-09-10 00:45:39 +03:00
## Chromebook
2016-05-10 22:52:02 +03:00
1. 如果你尚未登录 Chromebook, 请先登录。
2016-05-13 09:46:26 +03:00
1. 单击状态区(其中显示你的帐户头像)。
2016-05-10 22:52:02 +03:00
1. 单击 **设置** 。
2016-05-11 08:26:25 +03:00
1. 在 **互联网连接** 部分,单击 **添加连接** 。
2016-05-10 22:52:02 +03:00
1. 单击 **添加 OpenVPN / L2TP** 。
1. 在 **服务器主机名** 字段中输入`你的 VPN 服务器 IP`。
1. 在 **服务名称** 字段中输入任意内容。
1. 在 **供应商类型** 下拉菜单选择 **L2TP/IPsec + 预共享密钥** 。
2016-05-19 06:16:11 +03:00
1. 在 **预共享密钥** 字段中输入`你的 VPN IPsec PSK`。
2016-05-10 22:52:02 +03:00
1. 在 **用户名** 字段中输入`你的 VPN 用户名`。
1. 在 **密码** 字段中输入`你的 VPN 密码`。
1. 单击 **连接** 。
2016-09-10 00:45:39 +03:00
VPN 连接成功后,网络状态图标上会出现 VPN 指示。最后你可以到 < a href = "https://www.ipchicken.com" target = "_blank" > 这里< / a > 检测你的 IP 地址,应该显示为`你的 VPN 服务器 IP`。
2017-05-30 23:01:26 +03:00
如果在连接过程中遇到错误,请参见 < a href = "#故障排除" > 故障排除< / a > 。
2016-09-10 00:45:39 +03:00
## Linux
2018-12-10 09:33:46 +03:00
### Ubuntu Linux
2019-06-02 05:22:34 +03:00
Ubuntu 18.04 (和更新版本)用户可以安装 < a href = "https://packages.ubuntu.com/search?keywords=network-manager-l2tp-gnome" target = "_blank" > network-manager-l2tp-gnome</ a > 软件包,然后通过 GUI 配置 IPsec/L2TP VPN 客户端。Ubuntu 16.04 用户可能需要添加 `nm-l2tp` PPA, 参见 < a href = "https://medium.com/@hkdb/ubuntu-16-04-connecting-to-l2tp-over-ipsec-via-network-manager-204b5d475721" target = "_blank" > 这里</ a > 。
2018-12-11 06:51:47 +03:00
2019-01-31 04:43:53 +03:00
1. 进入 Settings -> Network -> VPN。单击 ** +** 按钮。
2018-12-11 06:51:47 +03:00
1. 选择 **Layer 2 Tunneling Protocol (L2TP)** 。
1. 在 **Name** 字段中输入任意内容。
1. 在 **Gateway** 字段中输入`你的 VPN 服务器 IP`。
1. 在 **User name** 字段中输入`你的 VPN 用户名`。
1. 右键单击 **Password** 字段中的 ** ?**,选择 **Store the password only for this user** 。
1. 在 **Password** 字段中输入`你的 VPN 密码`。
1. 保持 **NT Domain** 字段空白。
1. 单击 **IPsec Settings...** 按钮。
1. 选中 **Enable IPsec tunnel to L2TP host** 复选框。
1. 保持 **Gateway ID** 字段空白。
1. 在 **Pre-shared key** 字段中输入`你的 VPN IPsec PSK`。
1. 展开 **Advanced** 部分。
1. 在 **Phase1 Algorithms** 字段中输入 `aes128-sha1-modp2048!` 。
1. 在 **Phase2 Algorithms** 字段中输入 `aes128-sha1-modp2048!` 。
2019-01-31 04:43:53 +03:00
1. 单击 **OK** ,然后单击 **Add** 保存 VPN 连接信息。
1. 启用 **VPN** 连接。
VPN 连接成功后,你可以到 < a href = "https://www.ipchicken.com" target = "_blank" > 这里< / a > 检测你的 IP 地址,应该显示为`你的 VPN 服务器 IP`。
### Fedora 和 CentOS
2019-02-10 01:24:19 +03:00
Fedora 28 (和更新版本)和 CentOS 7 用户可以使用更高效的 [IPsec/XAuth ](clients-xauth-zh.md#linux ) 模式连接。
2018-12-10 09:33:46 +03:00
### 其它 Linux
2018-12-19 09:14:52 +03:00
首先看 < a href = "https://github.com/nm-l2tp/network-manager-l2tp/wiki/Prebuilt-Packages" target = "_blank" > 这里</ a > 以确认 `network-manager-l2tp` 和 `network-manager-l2tp-gnome` 软件包是否在你的 Linux 版本上可用。如果可用,安装它们(选择使用 strongSwan) 并参见上面的说明。另外, 你也可以 [使用命令行配置 Linux VPN 客户端 ](#使用命令行配置-linux-vpn-客户端 )。
2018-05-13 23:26:14 +03:00
## 故障排除
*其他语言版本: [English ](clients.md#troubleshooting ), [简体中文 ](clients-zh.md#故障排除 ).*
2018-11-21 01:07:35 +03:00
* [Windows 错误 809 ](#windows-错误-809 )
2019-09-07 02:57:00 +03:00
* [Windows 错误 628 或 766 ](#windows-错误-628-或-766 )
2018-11-21 01:07:35 +03:00
* [Windows 10 升级 ](#windows-10-升级 )
* [Windows 8/10 DNS 泄漏 ](#windows-810-dns-泄漏 )
* [macOS VPN 流量 ](#macos-vpn-流量 )
2018-12-01 21:31:06 +03:00
* [iOS/Android 睡眠模式 ](#iosandroid-睡眠模式 )
2019-08-08 08:12:55 +03:00
* [iOS 13 连接问题 ](#ios-13-连接问题 )
2018-11-21 01:07:35 +03:00
* [Android 6 及以上版本 ](#android-6-及以上版本 )
2019-08-20 19:06:11 +03:00
* [Debian 10 内核 ](#debian-10-内核 )
2018-11-21 01:07:35 +03:00
* [Chromebook 连接问题 ](#chromebook-连接问题 )
2019-04-25 06:09:23 +03:00
* [访问 VPN 服务器的网段 ](#访问-vpn-服务器的网段 )
2018-11-21 01:07:35 +03:00
* [其它错误 ](#其它错误 )
* [额外的步骤 ](#额外的步骤 )
2018-05-13 23:26:14 +03:00
### Windows 错误 809
2019-09-07 02:57:00 +03:00
> 错误 809: 无法建立计算机与 VPN 服务器之间的网络连接,因为远程服务器未响应。
2018-05-13 23:26:14 +03:00
要解决此错误,在首次连接之前需要< a href = "https://documentation.meraki.com/MX-Z/Client_VPN/Troubleshooting_Client_VPN#Windows_Error_809" target = "_blank" > 修改一次注册表</ a > ,以解决 VPN 服务器 和/或 客户端与 NAT (比如家用路由器)的兼容问题。请下载并导入下面的 `.reg` 文件,或者打开 < a href = "http://www.cnblogs.com/xxcanghai/p/4610054.html" target = "_blank" > 提升权限命令提示符</ a > 并运行以下命令。**完成后必须重启计算机。**
- 适用于 Windows Vista, 7, 8.x 和 10 ([下载 .reg 文件](https://static.ls20.com/reg-files/v1/Fix_VPN_Error_809_Windows_Vista_7_8_10_Reboot_Required.reg))
```console
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f
```
- 仅适用于 Windows XP ([下载 .reg 文件](https://static.ls20.com/reg-files/v1/Fix_VPN_Error_809_Windows_XP_ONLY_Reboot_Required.reg))
```console
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\IPSec /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f
```
另外,某些个别的 Windows 系统配置禁用了 IPsec 加密,此时也会导致连接失败。要重新启用它,可以运行以下命令并重启。
- 适用于 Windows XP, Vista, 7, 8.x 和 10 ([下载 .reg 文件](https://static.ls20.com/reg-files/v1/Fix_VPN_Error_809_Allow_IPsec_Reboot_Required.reg))
```console
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\RasMan\Parameters /v ProhibitIpSec /t REG_DWORD /d 0x0 /f
```
2019-09-07 02:57:00 +03:00
### Windows 错误 628 或 766
2018-05-13 23:26:14 +03:00
2019-09-07 02:57:00 +03:00
> 错误 628: 在连接完成前, 连接被远程计算机终止。
2018-05-13 23:26:14 +03:00
2019-09-07 02:57:00 +03:00
> 错误 766: 找不到证书。使用通过 IPSec 的 L2TP 协议的连接要求安装一个机器证书。它也叫做计算机证书。
2018-05-13 23:26:14 +03:00
2019-09-07 02:57:00 +03:00
要解决这些错误,请按以下步骤操作:
1. 右键单击系统托盘中的无线/网络图标。
1. 选择 **打开网络和共享中心** 。或者,如果你使用 Windows 10 版本 1709 或以上,选择 **打开"网络和 Internet"设置** ,然后在打开的页面中单击 **网络和共享中心** 。
2018-05-13 23:26:14 +03:00
1. 单击左侧的 **更改适配器设置** 。右键单击新的 VPN 连接,并选择 **属性** 。
1. 单击 **安全** 选项卡,从 **VPN 类型** 下拉菜单中选择 "使用 IPsec 的第 2 层隧道协议 (L2TP/IPSec)"。
2019-09-07 02:57:00 +03:00
1. 单击 **允许使用这些协议** 。选中 "质询握手身份验证协议 (CHAP)" 和 "Microsoft CHAP 版本 2 (MS-CHAP v2)" 复选框。
2018-05-13 23:26:14 +03:00
1. 单击 **高级设置** 按钮。
1. 单击 **使用预共享密钥作身份验证** 并在 **密钥** 字段中输入`你的 VPN IPsec PSK`。
1. 单击 **确定** 关闭 **高级设置** 。
1. 单击 **确定** 保存 VPN 连接的详细信息。
![Select CHAP in VPN connection properties ](images/vpn-properties-zh.png )
2018-10-29 09:27:04 +03:00
### Windows 10 升级
2018-09-14 08:01:00 +03:00
2018-10-29 09:27:04 +03:00
在升级 Windows 10 版本之后 (比如从 1709 到 1803) , 你可能需要重新按照上面的 [Windows 错误 809 ](#windows-错误-809 ) 中的步骤修改注册表并重启。
2018-09-14 08:01:00 +03:00
2018-11-05 16:47:09 +03:00
### Windows 8/10 DNS 泄漏
2018-11-07 09:40:24 +03:00
Windows 8.x 和 10 默认使用 "smart multi-homed name resolution" (智能多宿主名称解析)。如果你的因特网适配器的 DNS 服务器在本地网段上,在使用 Windows 自带的 IPsec VPN 客户端时可能会导致 "DNS 泄漏"。要解决这个问题,你可以 < a href = "https://www.neowin.net/news/guide-prevent-dns-leakage-while-using-a-vpn-on-windows-10-and-windows-8/" target = "_blank" > 禁用智能多宿主名称解析< / a > ,或者配置你的因特网适配器以使用在你的本地网段之外的 DNS 服务器(比如 8.8.8.8 和 8.8.4.4)。在完成后< a href = "https://support.opendns.com/hc/en-us/articles/227988627-How-to-clear-the-DNS-Cache-" target = "_blank" > 清除 DNS 缓存< / a > 并且重启计算机。
2018-11-05 16:47:09 +03:00
2018-11-10 03:47:34 +03:00
另外,如果你的计算机启用了 IPv6, 所有的 IPv6 流量(包括 DNS 请求)都将绕过 VPN。要在 Windows 上禁用 IPv6, 请看< a href = "https://support.microsoft.com/zh-cn/help/929852/guidance-for-configuring-ipv6-in-windows-for-advanced-users" target = "_blank" > 这里< / a > 。
2018-09-14 08:01:00 +03:00
### macOS VPN 流量
OS X (macOS) 用户: 如果你成功地使用 IPsec/L2TP 模式连接,但是你的公有 IP 没有显示为 `你的 VPN 服务器 IP` ,请阅读上面的 [OS X ](#os-x ) 部分并完成这一步:单击 **高级** 按钮,并选中 **通过VPN连接发送所有通信** 复选框。然后重新连接 VPN。
2018-12-01 21:31:06 +03:00
### iOS/Android 睡眠模式
为了节约电池, iOS 设备 (iPhone/iPad) 在屏幕变黑(睡眠模式)之后不久就会自动断开 Wi-Fi 连接。这会导致 IPsec VPN 断开。该行为是被 < a href = "https://discussions.apple.com/thread/2333948" target = "_blank" > 故意设计的< / a > 并且不能被配置。如果你需要 VPN 在设备唤醒后自动重连,可以另外尝试使用 < a href = "https://github.com/Nyr/openvpn-install" target = "_blank" > OpenVPN< / a > ,它支持 < a href = "https://docs.openvpn.net/connecting/connecting-to-access-server-with-apple-ios/faq-regarding-openvpn-connect-ios/" target = "_blank" > 一些选项< / a > 比如 "Reconnect on Wakeup" 和 "Seamless Tunnel"。
Android 设备在进入睡眠模式不久后也会断开 Wi-Fi 连接,如果你没有启用选项 "睡眠期间保持 WLAN 开启" 的话。该选项在 Android 8 (Oreo) 中不再可用。 另外,你也可以尝试打开 "始终开启 VPN" 选项以保持连接。详情请看 < a href = "https://support.google.com/android/answer/9089766?hl=zh-Hans" target = "_blank" > 这里< / a > 。
2019-08-08 08:12:55 +03:00
### iOS 13 连接问题
如果你的 iOS 13 设备 (iPhone/iPad) 可以连接到 VPN 但是不能上网,请尝试以下步骤:编辑 VPN 服务器上的 `/etc/ipsec.conf` 。找到 `sha2-truncbug=yes` 并将它替换为 `sha2-truncbug=no` 。保存修改并运行 `service ipsec restart` 。
2018-05-13 23:26:14 +03:00
### Android 6 及以上版本
2018-10-27 08:49:41 +03:00
如果你无法使用 Android 6 或以上版本连接:
2018-05-13 23:26:14 +03:00
2018-09-14 08:01:00 +03:00
1. 单击 VPN 连接旁边的设置按钮,选择 "Show advanced options" 并且滚动到底部。如果选项 "Backward compatible mode" 存在(看下图),请启用它并重试连接。如果不存在,请尝试下一步。
2018-10-28 08:33:42 +03:00
1. 编辑 VPN 服务器上的 `/etc/ipsec.conf` 。找到 `sha2-truncbug=yes` 并将它替换为 `sha2-truncbug=no` 。保存修改并运行 `service ipsec restart` (< a href = "https://libreswan.org/wiki/FAQ#Configuration_Matters" target = "_blank" > 参见</ a > )
2018-05-13 23:26:14 +03:00
![Android VPN workaround ](images/vpn-profile-Android.png )
2019-08-20 19:06:11 +03:00
### Debian 10 内核
Debian 10 用户: 运行 `uname -r` 以检查你的服务器的 Linux 内核版本。如果它包含 `cloud` 字样,并且 `/dev/ppp` 不存在,则该内核缺少 `ppp` 支持从而不能使用 IPsec/L2TP 模式([IPsec/XAuth 模式](clients-xauth-zh.md) 不受影响)。
要解决此问题,你可以换用标准的 Linux 内核,通过安装比如 `linux-image-amd64` 软件包来实现。然后更新 GRUB 的内核默认值并重启。
2018-05-13 23:26:14 +03:00
### Chromebook 连接问题
2018-09-14 08:01:00 +03:00
Chromebook 用户: 如果你无法连接,请尝试以下步骤:编辑 VPN 服务器上的 `/etc/ipsec.conf` 。找到这一行 `phase2alg=...` 并在结尾加上 `,aes_gcm-null` 。保存修改并运行 `service ipsec restart` 。
2018-07-17 08:23:14 +03:00
2019-04-25 06:09:23 +03:00
### 访问 VPN 服务器的网段
如果要允许 VPN 客户端访问 VPN 服务器所在的网段,你需要在搭建 VPN 服务器之后手动添加 IPTables 规则。例如,如果网段是 `192.168.0.0/24` :
```
# For IPsec/L2TP
iptables -I FORWARD 2 -i ppp+ -d 192.168.0.0/24 -j ACCEPT
iptables -I FORWARD 2 -s 192.168.0.0/24 -o ppp+ -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# For IPsec/XAuth ("Cisco IPsec")
iptables -I FORWARD 2 -s 192.168.43.0/24 -d 192.168.0.0/24 -j ACCEPT
iptables -I FORWARD 2 -s 192.168.0.0/24 -d 192.168.43.0/24 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
```
为了让这些 IPTables 规则在重启后继续有效,你可以将它们添加到文件 `/etc/iptables.rules` 和/或 `/etc/iptables/rules.v4` (Ubuntu/Debian),或者 `/etc/sysconfig/iptables` (CentOS/RHEL)。
2018-05-13 23:26:14 +03:00
### 其它错误
如果你遇到其它错误,请参见以下链接:
* http://www.tp-link.com/en/faq-1029.html
* https://documentation.meraki.com/MX-Z/Client_VPN/Troubleshooting_Client_VPN#Common_Connection_Issues
* https://blogs.technet.microsoft.com/rrasblog/2009/08/12/troubleshooting-common-vpn-related-errors/
2019-08-08 08:12:55 +03:00
* https://stackoverflow.com/questions/25245854/windows-8-1-gets-error-720-on-connect-vpn
2018-05-13 23:26:14 +03:00
### 额外的步骤
请尝试下面这些额外的故障排除步骤:
首先,重启 VPN 服务器上的相关服务:
```bash
service ipsec restart
service xl2tpd restart
```
如果你使用 Docker, 请运行 `docker restart ipsec-vpn-server` 。
然后重启你的 VPN 客户端设备,并重试连接。如果仍然无法连接,可以尝试删除并重新创建 VPN 连接,按照本文档中的步骤操作。请确保输入了正确的 VPN 登录凭证。
检查 Libreswan (IPsec) 和 xl2tpd 日志是否有错误:
```bash
# Ubuntu & Debian
grep pluto /var/log/auth.log
grep xl2tpd /var/log/syslog
# CentOS & RHEL
grep pluto /var/log/secure
grep xl2tpd /var/log/messages
```
查看 IPsec VPN 服务器状态:
```bash
ipsec status
ipsec verify
```
显示当前已建立的 VPN 连接:
```bash
ipsec whack --trafficstatus
```
2018-12-10 09:33:46 +03:00
## 使用命令行配置 Linux VPN 客户端
2018-05-13 23:26:14 +03:00
2017-05-30 23:01:26 +03:00
以下步骤是基于 [Peter Sanford 的工作 ](https://gist.github.com/psanford/42c550a1a6ad3cb70b13e4aaa94ddb1c )。这些命令必须在你的 VPN 客户端上使用 `root` 账户运行。
2016-07-20 21:47:21 +03:00
2016-10-20 09:20:17 +03:00
要配置 VPN 客户端,首先安装以下软件包:
2016-08-11 23:56:00 +03:00
2017-02-05 23:48:11 +03:00
```bash
2016-10-25 22:44:45 +03:00
# Ubuntu & Debian
2016-10-20 09:20:17 +03:00
apt-get update
2016-10-25 22:44:45 +03:00
apt-get -y install strongswan xl2tpd
# CentOS & RHEL
yum -y install epel-release
2018-07-05 04:07:32 +03:00
yum --enablerepo=epel -y install strongswan xl2tpd
2016-10-25 22:44:45 +03:00
# Fedora
yum -y install strongswan xl2tpd
2016-10-20 09:20:17 +03:00
```
创建 VPN 变量 (替换为你自己的值):
2017-02-05 23:48:11 +03:00
```bash
2017-10-03 05:55:21 +03:00
VPN_SERVER_IP='你的VPN服务器IP'
VPN_IPSEC_PSK='你的IPsec预共享密钥'
VPN_USER='你的VPN用户名'
VPN_PASSWORD='你的VPN密码'
2016-10-20 09:20:17 +03:00
```
配置 strongSwan:
2017-05-02 21:37:58 +03:00
2017-02-05 23:48:11 +03:00
```bash
2016-10-20 09:20:17 +03:00
cat > /etc/ipsec.conf < < EOF
# ipsec.conf - strongSwan IPsec configuration file
# basic configuration
config setup
# strictcrlpolicy=yes
# uniqueids = no
# Add connections here.
# Sample VPN connections
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev1
authby=secret
2018-12-11 06:51:47 +03:00
ike=aes128-sha1-modp2048!
esp=aes128-sha1-modp2048!
2016-10-20 09:20:17 +03:00
conn myvpn
keyexchange=ikev1
left=%defaultroute
auto=add
authby=secret
type=transport
leftprotoport=17/1701
rightprotoport=17/1701
right=$VPN_SERVER_IP
EOF
cat > /etc/ipsec.secrets < < EOF
: PSK "$VPN_IPSEC_PSK"
EOF
chmod 600 /etc/ipsec.secrets
2016-10-25 22:44:45 +03:00
# For CentOS/RHEL & Fedora ONLY
mv /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.old 2>/dev/null
mv /etc/strongswan/ipsec.secrets /etc/strongswan/ipsec.secrets.old 2>/dev/null
ln -s /etc/ipsec.conf /etc/strongswan/ipsec.conf
ln -s /etc/ipsec.secrets /etc/strongswan/ipsec.secrets
2016-10-20 09:20:17 +03:00
```
配置 xl2tpd:
2017-05-02 21:37:58 +03:00
2017-02-05 23:48:11 +03:00
```bash
2016-10-20 09:20:17 +03:00
cat > /etc/xl2tpd/xl2tpd.conf < < EOF
[lac myvpn]
lns = $VPN_SERVER_IP
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes
EOF
cat > /etc/ppp/options.l2tpd.client < < EOF
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-chap
noccp
noauth
2016-10-25 22:44:45 +03:00
mtu 1280
mru 1280
noipdefault
2016-10-20 09:20:17 +03:00
defaultroute
usepeerdns
connect-delay 5000
2016-12-31 01:24:47 +03:00
name $VPN_USER
2016-10-25 22:44:45 +03:00
password $VPN_PASSWORD
2016-10-20 09:20:17 +03:00
EOF
2016-10-25 22:44:45 +03:00
chmod 600 /etc/ppp/options.l2tpd.client
2016-10-20 09:20:17 +03:00
```
至此 VPN 客户端配置已完成。按照下面的步骤进行连接。
2017-05-30 23:01:26 +03:00
**注:** 当你每次尝试连接到 VPN 时,必须重复下面的所有步骤。
2016-10-20 09:20:17 +03:00
创建 xl2tpd 控制文件:
2017-05-02 21:37:58 +03:00
2017-02-05 23:48:11 +03:00
```bash
2016-10-20 09:20:17 +03:00
mkdir -p /var/run/xl2tpd
touch /var/run/xl2tpd/l2tp-control
```
重启服务:
2017-05-02 21:37:58 +03:00
2017-02-05 23:48:11 +03:00
```bash
2016-10-20 09:20:17 +03:00
service strongswan restart
service xl2tpd restart
```
开始 IPsec 连接:
2017-05-02 21:37:58 +03:00
2017-02-05 23:48:11 +03:00
```bash
2016-10-25 22:44:45 +03:00
# Ubuntu & Debian
2016-10-20 09:20:17 +03:00
ipsec up myvpn
2016-10-25 22:44:45 +03:00
# CentOS/RHEL & Fedora
strongswan up myvpn
2016-10-20 09:20:17 +03:00
```
2016-10-25 22:44:45 +03:00
开始 L2TP 连接:
2017-05-02 21:37:58 +03:00
2017-02-05 23:48:11 +03:00
```bash
2016-10-25 22:44:45 +03:00
echo "c myvpn" > /var/run/xl2tpd/l2tp-control
2016-10-20 09:20:17 +03:00
```
运行 `ifconfig` 并且检查输出。现在你应该看到一个新的网络接口 `ppp0` 。
检查你现有的默认路由:
2017-05-02 21:37:58 +03:00
2017-02-05 23:48:11 +03:00
```bash
2016-10-20 09:20:17 +03:00
ip route
```
2016-10-23 22:32:07 +03:00
在输出中查找以下行: `default via X.X.X.X ...` 。记下这个网关 IP, 并且在下面的两个命令中使用。
2016-08-11 23:56:00 +03:00
2016-10-20 09:20:17 +03:00
从新的默认路由中排除你的 VPN 服务器 IP (替换为你自己的值):
2017-05-02 21:37:58 +03:00
2017-02-05 23:48:11 +03:00
```bash
2017-10-03 05:55:21 +03:00
route add 你的VPN服务器IP gw X.X.X.X
2016-10-20 09:20:17 +03:00
```
2016-08-11 23:56:00 +03:00
2017-10-03 05:55:21 +03:00
如果你的 VPN 客户端是一个远程服务器,则必须从新的默认路由中排除你的本地电脑的公有 IP, 以避免 SSH 会话被断开 (替换为< a href = "https://www.ipchicken.com" target = "_blank" > 实际值< / a > ) :
2017-05-02 21:37:58 +03:00
2017-02-05 23:48:11 +03:00
```bash
2017-10-03 05:55:21 +03:00
route add 你的本地电脑的公有IP gw X.X.X.X
2016-10-20 09:20:17 +03:00
```
2016-07-20 21:47:21 +03:00
2016-10-20 09:20:17 +03:00
添加一个新的默认路由,并且开始通过 VPN 服务器发送数据:
2017-05-02 21:37:58 +03:00
2017-02-05 23:48:11 +03:00
```bash
2016-10-20 09:20:17 +03:00
route add default dev ppp0
```
2016-07-20 21:47:21 +03:00
2016-10-20 09:20:17 +03:00
至此 VPN 连接已成功完成。检查 VPN 是否正常工作:
2017-05-02 21:37:58 +03:00
2017-02-05 23:48:11 +03:00
```bash
2016-10-30 02:30:35 +03:00
wget -qO- http://ipv4.icanhazip.com; echo
2016-07-20 21:47:21 +03:00
```
以上命令应该返回 `你的 VPN 服务器 IP` 。
2016-10-20 09:20:17 +03:00
2016-07-20 21:47:21 +03:00
要停止通过 VPN 服务器发送数据:
2017-05-02 21:37:58 +03:00
2017-02-05 23:48:11 +03:00
```bash
2016-10-20 09:20:17 +03:00
route del default dev ppp0
```
要断开连接:
2017-05-02 21:37:58 +03:00
2017-02-05 23:48:11 +03:00
```bash
2016-10-25 22:44:45 +03:00
# Ubuntu & Debian
2016-10-20 09:20:17 +03:00
echo "d myvpn" > /var/run/xl2tpd/l2tp-control
ipsec down myvpn
2016-07-20 21:47:21 +03:00
2016-10-25 22:44:45 +03:00
# CentOS/RHEL & Fedora
echo "d myvpn" > /var/run/xl2tpd/l2tp-control
strongswan down myvpn
```
2016-07-20 21:47:21 +03:00
2016-05-17 19:25:06 +03:00
## 致谢
2018-05-13 23:26:14 +03:00
本文档是在 < a href = "https://github.com/StreisandEffect/streisand" target = "_blank" > Streisand< / a > 项目文档基础上翻译和修改。该项目由 Joshua Lund 和其他开发者维护。
2016-05-17 19:25:06 +03:00
2016-05-11 08:26:25 +03:00
## 授权协议
2016-09-10 00:45:39 +03:00
注: 这个协议仅适用于本文档。
2019-01-12 20:34:10 +03:00
版权所有 (C) 2016-2019 Lin Song
2018-05-13 23:26:14 +03:00
基于 < a href = "https://github.com/StreisandEffect/streisand/blob/6aa6b6b2735dd829ca8c417d72eb2768a89b6639/playbooks/roles/l2tp-ipsec/templates/instructions.md.j2" target = "_blank" > Joshua Lund 的工作< / a > (版权所有 2014-2016)
2016-05-11 08:26:25 +03:00
本程序为自由软件,在自由软件联盟发布的< a href = "https://www.gnu.org/licenses/gpl.html" target = "_blank" > GNU 通用公共许可协议< / a > 的约束下,你可以对其进行再发布及修改。协议版本为第三版或(随你)更新的版本。
我们希望发布的这款程序有用, 但不保证, 甚至不保证它有经济价值和适合特定用途。详情参见GNU通用公共许可协议。