1
0
mirror of synced 2024-11-22 13:06:02 +03:00
setup-ipsec-vpn/README-zh.md
hwdsl2 0c8f117fd9 Update docs
[ci skip]
2017-01-21 12:13:27 -06:00

14 KiB
Raw Blame History

IPsec VPN 服务器一键安装脚本

Build Status GitHub Stars Docker Stars Docker Pulls

使用 Linux 脚本一键快速搭建自己的 IPsec VPN 服务器。支持 IPsec/L2TP 和 Cisco IPsec 协议,可用于 Ubuntu/Debian/CentOS 系统。你只需要提供自己的 VPN 登录凭证,然后运行脚本自动完成安装。

IPsec VPN 可以加密你的网络流量,以防止在通过因特网传送时,你和 VPN 服务器之间的任何人对你的数据的未经授权的访问。在使用不安全的网络时,这是特别有用的,例如在咖啡厅,机场或旅馆房间。

我们将使用 Libreswan 作为 IPsec 服务器,以及 xl2tpd 作为 L2TP 提供者。

» 相关教程: IPsec VPN Server Auto Setup with Libreswan

其他语言版本: English, 简体中文.

目录

快速开始

首先,在你的 Linux 服务器* 上全新安装一个 Ubuntu LTSDebian 8 或者 CentOS 7/6 系统。

使用以下命令快速搭建 IPsec VPN 服务器:

wget https://git.io/vpnsetup -O vpnsetup.sh && sudo sh vpnsetup.sh

对于 CentOS 系统,将上面的 https://git.io/vpnsetup 换成 https://git.io/vpnsetup-centos

你的 VPN 登录凭证将会被自动随机生成,并在安装完成后在屏幕上显示。

如需了解其它安装选项,以及如何配置 VPN 客户端,请阅读以下部分。

* 一个专用服务器或者虚拟专用服务器 (VPS)。OpenVZ VPS 不受支持。

功能特性

  • 新: 增加支持更高效的 IPsec/XAuth ("Cisco IPsec") 模式
  • 新: 现在可以下载 VPN 服务器的预构建 Docker 镜像
  • 全自动的 IPsec VPN 服务器配置,无需用户输入
  • 封装所有的 VPN 流量在 UDP 协议,不需要 ESP 协议支持
  • 可直接作为 Amazon EC2 实例创建时的用户数据使用
  • 自动确定服务器的公网 IP 以及私有 IP 地址
  • 包含 sysctl.conf 优化设置,以达到更佳的传输性能
  • 测试通过: Ubuntu 16.04/14.04/12.04 Debian 8 和 CentOS 7/6

系统要求

一个新创建的 Amazon EC2 实例,使用这些 AMI 之一:

请参见 详细步骤 以及 EC2 定价细节

-或者-

一个专用服务器或者虚拟专用服务器 (VPS),全新安装以上操作系统之一。另外也可使用 Debian 7 (Wheezy),但是必须首先运行另一个脚本。 OpenVZ VPS 不受支持,用户可以尝试使用 Shadowsocks 或者 OpenVPN

这也包括各种公共云服务中的 Linux 虚拟机,比如 DigitalOcean, Vultr, Linode, Google Compute Engine, Amazon Lightsail, Microsoft Azure, IBM SoftLayer, RackspaceVMware vCloud Air

Deploy to Azure Install on DigitalOcean Deploy to Linode

» 我想建立并使用自己的 VPN ,但是没有可用的服务器

⚠️ 不要 在你的 PC 或者 Mac 上运行这些脚本!它们只能用在服务器上!

安装说明

Ubuntu & Debian

首先,更新你的系统: 运行 apt-get update && apt-get dist-upgrade 并重启。这一步是可选的,但推荐。

要安装 VPN请从以下选项中选择一个

选项 1: 使用脚本随机生成的 VPN 登录凭证 (完成后会在屏幕上显示):

wget https://git.io/vpnsetup -O vpnsetup.sh && sudo sh vpnsetup.sh

选项 2: 编辑脚本并提供你自己的 VPN 登录凭证:

wget https://git.io/vpnsetup -O vpnsetup.sh
nano -w vpnsetup.sh
[替换为你自己的值: YOUR_IPSEC_PSK, YOUR_USERNAME 和 YOUR_PASSWORD]
sudo sh vpnsetup.sh

选项 3: 将你自己的 VPN 登录凭证定义为环境变量:

# 所有变量值必须用 '单引号' 括起来
# *不要* 在值中使用这些字符:  \ " '
wget https://git.io/vpnsetup -O vpnsetup.sh && sudo \
VPN_IPSEC_PSK='你的IPsec预共享密钥' \
VPN_USER='你的VPN用户名' \
VPN_PASSWORD='你的VPN密码' sh vpnsetup.sh

DigitalOcean 用户可以参考这个分步指南,由 Tony Tran 编写。

注: 如果无法通过 wget 下载,你也可以打开 vpnsetup.sh (或者 vpnsetup_centos.sh),然后点击右方的 Raw 按钮。按快捷键 Ctrl-A 全选, Ctrl-C 复制,然后粘贴到你喜欢的编辑器。

CentOS & RHEL

首先,更新你的系统: 运行 yum update 并重启。这一步是可选的,但推荐。

按照与上面相同的步骤,但是将 https://git.io/vpnsetup 换成 https://git.io/vpnsetup-centos

下一步

配置你的计算机或其它设备使用 VPN 。请参见:

配置 IPsec/L2TP VPN 客户端
配置 IPsec/XAuth ("Cisco IPsec") VPN 客户端

如何配置 IKEv2 VPN: Windows 7 和更新版本

如果在连接过程中遇到错误,请参见 故障排除

开始使用自己的专属 VPN ! 🎉🚀

重要提示

其他语言版本: English, 简体中文.

Windows 用户 在首次连接之前需要修改一次注册表,以解决 VPN 服务器 和/或 客户端与 NAT (比如家用路由器)的兼容问题。

同一个 VPN 账户可以在你的多个设备上使用。但是由于 IPsec/L2TP 的局限性,如果你需要同时连接在同一个 NAT 后面(比如家用路由器)的多个设备到 VPN 服务器,你必须仅使用 IPsec/XAuth 模式

如果需要添加,修改或者删除 VPN 用户账户,请参见 管理 VPN 用户

对于有外部防火墙的服务器(比如 EC2/GCE),请打开 UDP 端口 500 和 4500以及 TCP 端口 22 (用于 SSH

在 VPN 已连接时,客户端配置为使用 Google Public DNS。如果偏好其它的域名解析服务,请编辑 /etc/ppp/options.xl2tpd/etc/ipsec.conf 并替换 8.8.8.88.8.4.4。然后重启服务器。

如果需要在安装后更改 IPTables 规则,请编辑 /etc/iptables.rules 和/或 /etc/iptables/rules.v4 (Ubuntu/Debian),或者 /etc/sysconfig/iptables (CentOS)。然后重启服务器。

在使用 IPsec/L2TP 连接时VPN 服务器在虚拟网络 192.168.42.0/24 内具有 IP 192.168.42.1

这些脚本在更改现有的配置文件之前会先做备份,使用 .old-日期-时间 为文件名后缀。

升级Libreswan

提供两个额外的脚本 vpnupgrade.shvpnupgrade_centos.sh,可用于升级 Libreswan 更改日志 | 通知列表)。请在运行前根据需要修改 swan_ver 变量。检查已安装版本: ipsec --version.

# Ubuntu & Debian
wget https://git.io/vpnupgrade -O vpnupgrade.sh
# CentOS & RHEL
wget https://git.io/vpnupgrade-centos -O vpnupgrade.sh

问题和反馈

  • 有问题需要提问?请先搜索已有的留言,在 这个 Gist 以及 我的博客
  • VPN 的相关问题可在这些邮件列表提问: [1] [2],或者看相关文章: [1] [2] [3] [4] [5]
  • 如果你发现了一个可重复的程序漏洞,请提交一个 GitHub Issue

卸载说明

请参见 卸载 VPN

另见

授权协议

版权所有 (C) 2014-2017 Lin Song View my profile on LinkedIn
基于 Thomas Sarlandie 的工作 (版权所有 2012)

这个项目是以 知识共享署名-相同方式共享3.0 许可协议授权。
必须署名: 请包括我的名字在任何衍生产品,并且让我知道你是如何改善它的!