如何使用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 更少,并且仍然为您的流量提供更高级别的安全性。