如何使用PPTP设置您自己的VPN

来自菜鸟教程
跳转至:导航、​搜索

状态: 已弃用

本文已弃用,不再维护。

原因

Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命 (EOL) ,不再接收安全补丁或更新。

请参阅

本文可能仍可用作参考,但可能不遵循最佳实践或在此或其他 Ubuntu 版本上工作。 我们强烈建议您使用最近为您正在使用的 Ubuntu 版本编写的文章。

如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:


介绍

我们用户的常见问题之一是如何向他们的服务器添加另一个 IP 地址。 您可以通过创建 VPN 隧道将您自己的私有 IP 地址分配给您的 Droplet。 无论您是想构建自己的虚拟专用网络 (VPN),还是为该 IP 地址分配 SSL 证书,您都有多种选择。 从所有可能的选项中,最优化的是 PPTP 和 OpenVPN 之间。 点对点隧道协议 (PPTP) 允许您非常快速地实施自己的 VPN,并且与大多数移动设备兼容。 尽管 PPTP 不如 OpenVPN 安全,但它也更快并且使用更少的 CPU 资源。

第 1 步 - PPTP 安装

您必须选择一台服务器来负责向其他人处理 IP 并将您的所有服务器验证到您的 VPN 中。 这将成为您的 PPTP 服务器。

在 CentOS 6 x64 上:

rpm -i http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
yum -y install pptpd

在 Ubuntu 12.10 x64 上:

apt-get install pptpd

现在您应该编辑 /etc/pptpd.conf 并添加以下行:

localip 10.0.0.1
remoteip 10.0.0.100-200

其中 localip 是您的服务器的 IP 地址,remoteip 是将分配给连接到它的客户端的 IP。

接下来,您应该通过添加用户和密码来为 PPTP 设置身份验证。 只需将它们添加到 /etc/ppp/chap-secrets :

其中 client 是用户名,server 是服务类型——我们的例子是 pptpd,secret 是密码,IP 地址指定哪个 IP 地址可以进行身份验证。 通过在 IP 地址字段中设置“*”,您指定您将接受任何 IP 的用户名/密码对。

第 2 步 - 将 DNS 服务器添加到 /etc/ppp/pptpd-options

ms-dns 8.8.8.8
ms-dns 8.8.4.4

现在您可以启动 PPTP 守护进程:

service pptpd restart

验证它是否正在运行并接受连接:

第 3 步 - 设置转发

在您的 PPTP 服务器上启用 IP 转发非常重要。 这将允许您在使用 PPTP 设置的公共 IP 和私有 IP 之间转发数据包。 只需编辑 /etc/sysctl.conf 并添加以下行(如果它不存在):

net.ipv4.ip_forward = 1

要使更改生效,请运行 sysctl -p

第 4 步 - 为 iptables 创建 NAT 规则

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save

如果您还希望您的 PPTP 客户端相互通信,请添加以下 iptables 规则:

iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface eth0 -j ACCEPT

现在您的 PPTP 服务器也充当路由器。

如果你想限制哪些服务器可以连接到你的 Droplet,你可以设置一个 iptables 规则来限制 TCP 连接到端口 1723。

第 5 步 - 设置客户端

在您的客户端服务器上,安装 PPTP 客户端:

yum -y install pptp

第 6 步 - 添加必要的内核模块

modprobe ppp_mppe

创建一个新文件 /etc/ppp/peers/pptpserver 并添加以下行,将名称和密码替换为您自己的值:

pty "pptp 198.211.104.17 --nolaunchpppd"
name box1
password 24oiunOi24
remotename PPTP
require-mppe-128

其中 198.211.104.17 是我们的 PPTP 服务器的公共 IP 地址,用户名“box1”和密码“24oiunOi24”,我们在 PPTP 服务器上指定了 /etc/ppp/chap-secrets 文件。

现在我们可以“调用”这个 PPTP 服务器,因为这是一个点对点协议。 无论您在/etc/ppp/peers/ 中为您的对等文件命名的名称,都应该在下一行中使用。 由于我们调用了我们的文件 pptpserver:

pppd call pptpserver

您应该会看到来自 PPTP 服务器日志的成功连接:

在您的 PPTP 客户端上,通过 ppp0 接口设置到您的专用网络的路由:

ip route add 10.0.0.0/8 dev ppp0

您的接口 ppp0 应该出现在 PPTP 客户端服务器上,并且可以通过运行 ifconfig 来检查

现在您可以 ping 您的 PPTP 服务器和连接到此网络的任何其他客户端:

我们可以将我们的第二个 PPTP 客户端添加到此网络:

yum -y install pptp
modprobe ppp_mppe

添加到 /etc/ppp/peers/pptpserver (替换为您自己的名称和密码值):

pty "pptp 198.211.104.17 --nolaunchpppd"
name box2
password 239Aok24ma
remotename PPTP
require-mppe-128

现在在您的第二个客户端上运行以下命令:

pppd call pptpserver
ip route add 10.0.0.0/8 dev ppp0

您还可以 ping 第一个客户端,因为数据包将通过 PPTP 服务器并使用我们之前放置的 iptables 规则进行路由:

此设置允许您创建自己的虚拟专用网络:

如果您想让所有设备在一个网络上安全通信,这是一种快速的实现方式。

您可以将它与 Nginx、Squid、MySQL 和您能想到的任何其他应用程序一起使用。

由于流量是 128 位加密的,它比 OpenVPN 占用的 CPU 更少,并且仍然为您的流量提供更高级别的安全性。