如何在自己的 Ubuntu 服务器上设置 PPTP VPN?

如何在自己的 Ubuntu 服务器上设置 PPTP VPN?

假设我有一个虚拟专用服务器,来自利诺德,运行 Ubuntu,如何轻松设置 PPTP VPN 以便 Ubuntu 客户端可以连接到它?

默认情况下,Ubuntu 提供连接到这些 PPTP 网络的功能。我希望以这样一种方式进行设置,使其非常容易连接(即无需在客户端上安装任何软件包)。

答案1

绝对最小的服务器设置

以下是在 Ubuntu 下运行基本 PPTP VPN 服务器所需的绝对最低限度的说明。然后,客户端将能够通过 VPN 进入服务器并路由其互联网流量,以便通过服务器传输到互联网。与往常一样,请咨询完整文档了解一切正在发生的事情。

首先,安装所需的软件:

sudo apt-get install pptpd

其次,ip_forward通过取消注释以下行,在内核中启用 IPv4:/etc/sysctl.conf

sudo sed -i -r 's/^\s*#(net\.ipv4\.ip_forward=1.*)/\1/' /etc/sysctl.conf
# Reload the config file to have the change take effect immediately.
sudo -i sysctl -p

第三,启用 NAT(如果尚未启用),以便私有 VPN 网络上的用户可以将其数据包路由到互联网:

OUTIF=`/sbin/ip route show to exact 0/0 | sed -r 's/.*dev\s+(\S+).*/\1/'`
sudo -i iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE
# Enable NAT on boot from the rc.local script.
CMD="iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE"
sudo sed -i "\$i$CMD\n" /etc/rc.local

笔记:本指南假设您的服务器上未配置防火墙。如果您的服务器上有防火墙,例如联邦水务局,请查阅相关文件反而。

第四,为每个 VPN 用户在文件中创建一个帐户/etc/ppp/chap-秘密. 替换$USER为您想要为该 VPN 用户使用的实际用户名。

KEY=`head -c 20 /dev/urandom | sha1sum | nawk '{print $1}'`
echo "$USER pptpd $KEY *" | sudo tee -a /etc/ppp/chap-secrets

最后,您已准备好...

配置客户端

在里面网络管理器小程序, 选择VPN 连接配置 VPN,然后点击添加. 在下一个屏幕上选择点对点隧道协议对于 VPN 类型,然后单击创造

在此处输入图片描述

在此窗口中,输入服务器的主机名或 IP 以及您添加到的用户名和密钥/etc/ppp/chap-秘密服务器上的文件。

现在点击先进的

在此处输入图片描述

在此窗口中,启用“使用点对点加密(MPPE)”并选择128 位安全。禁用移动安全认证计划身份验证(离开远程管理连接验证 (MSCHAP)已启用)。

最后,点击好的进而节省关闭前一个窗口。

您现在可以进入网络管理器小程序 → 测试 VPN 连接VPN 连接并选择您刚刚创建的连接。确保您收到一条消息,提示 VPN 连接成功,然后浏览到IP查询网站验证您的 IP 现在是否显示为服务器的 IP。

如果您收到一条消息,提示 VPN 连接到服务器失败:首先,请验证您是否正确输入了客户端设置;其次,检查客户端是否与服务器上的 TCP 端口 1723 具有网络连接;最后,检查日志文件/var/log/消息在服务器上查找更多线索。如果您的 VPN 连接成功,但随后无法从客户端浏览任何网站,请咨询这个非常有用的诊断指南在 pptpd 网站上。

笔记

如果您连接的本地网络使用 192.168.0.0/24 和 192.168.1.0/24 子网,您将遇到问题,因为这是 PPTP 服务器默认使用的。您必须配置 PPTP 以使用不同的子网pptpd配置文件

您可能还想进行许多其他配置更改。例如,所有域名查询仍将使用本地 DNS 服务器进行查询,而不是通过 PPTP 服务器。请花点时间阅读完整文档了解如何更改此设置以及其他设置。

答案2

我写的这个教程将指导您完成此过程。它应该可以帮助您避免使用 VPS 的人常犯的错误。

首先登录您的 VPS 面板并启用调谐/分接公共部门伙伴关系。如果您没有此选项,请联系您的 ISP 为您启用此功能。

在此处输入图片描述

首先安装这个包:

sudo apt-get install pptpd

因为我们不想让 VPN 公开,所以我们将创建用户。
我使用的是 VI,您可以使用 NANO 或任何您喜欢的文本编辑器

vi /etc/ppp/chap-secrets

格式为

[username] [service] [password] [ip]

例子

john pptpd johnspassword *

*表示允许从所有 IP 地址访问,如果有静态 IP,则仅指定 IP。

编辑 PPTPD 设置

vi /etc/pptpd.conf

查找 localip 和 remoteip 设置。删除#两者的(注释字符),以便这些设置能够被识别。将 localip 更改为您的服务器 IP。如果您不知道您的服务器 IP,您可以在 VPS 控制面板中查找。

remoteip 基本上是客户端(连接到 VPN 的计算机)将被分配的 IP 范围。例如,如果您想要以下 IP 范围:192.168.120.231-235,您的 VPN 服务器将能够为客户端分配 192.168.120.232、192.168.120.233、192.168.120.234 和 192.168.120.235。您可以自行决定在此字段中使用什么。

我个人选择这个设置:

localip 10.0.0.1
remoteip 10.0.0.100-200

所以我可以让大约 200 个客户端连接。

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

ms-dns 8.8.8.8
ms-dns 8.8.4.4

您可以将其添加到文件末尾或者找到这些行,取消注释它们并将 IP 更改为您想要的公共 DNS。

设置转发

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

net.ipv4.ip_forward = 1

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

为 iptables 创建 NAT 规则

这是很重要的一部分,如果你正在使用 VPS,你可能不会使用 eth0,而是使用 venet0,你应该通过运行来检查你拥有哪个接口ifconfig

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

再次,如果您使用的是 VPS,则需要将 eth0 替换为 venet0。

我建议跑步

sudo iptables-save

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

您可以运行此命令,以便 VPN 服务在启动时启动

systemctl enable pptpd

我建议安装 iptables-persistent,这样规则在重启后仍然有效

sudo apt-get install -y iptables-persistent

答案3

按照本教程操作:Ubuntu 上的 PPTP VPN 服务器

  1. 在软件选择下,选择 OpenSSH 服务器(用于远程管理机器)并手动选择实际的 pptpd 包。如果您想要更多服务,例如,如果您还想将计算机用作 Web 服务器,您当然可以选择附加软件。出于安全原因,如果在关键环境中设置,我通常建议人们每台机器只运行一个外部可访问的服务,但这实际上取决于您。

  2. 在手动选择中导航至未安装软件包 > net您将在其中找到 pptpd。选择它并按两次“g”以安装该包。

  3. 让安装完成并重新启动系统。

  4. 通过 SSH 进入您新设置的机器并sudo aptitude update && sudo aptitude safe-upgrade首先运行以更新所有软件包。如有必要,请重新启动。

  5. 打开 pptpd.conf 文件:sudo nano /etc/pptpd.conf根据您的需要调整底部的 IP 设置。在本地 IP 下,输入 VPN 服务器本地网络中的 IP(如果您不知道,请输入“sudo ifconfig”,它会显示您的网络接口和分配的 IP)。为此,我建议在 /etc/network/interfaces 或路由器配置中设置静态 IP。

  6. 如果需要,您可以更改主机名/etc/ppp/pptpd-options

  7. 指定您想要授予 VPN 访问权限的用户名和密码:sudo nano /etc/ppp/chap-secrets。如果您在之前的步骤中更改了主机名,请确保现在在server

    例子:

    # client        server  secret                  IP addresses
    eubolist   pptpd   myübersecretpassword   *
    

    与 pptp 一样,没有密钥文件,安全性完全取决于密码。这就是为什么您应该选择一个较长(例如 32 个字符)的随机密码。您可以在此处生成这样的密码。

  8. 现在我们需要设置 ip-masquerading:sudo nano /etc/rc.local

    在“exit 0”行上方添加以下几行

    # PPTP IP forwarding
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    

    另外,我建议您保护您的 SSH 服务器免受暴力攻击:

    #SSH Brute Force Protection
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j
    

    降低

    (也插入‘出口 0’上方)

    您可能需要将“eth 0”更改为另一个接口,具体取决于哪个接口配置为在您的机器上连接到互联网。

  9. 最后,取消注释此行/etc/sysctl.conf

    net.ipv4.ip_forward=1
    
  10. 重启

  11. 如果您的 vpn 服务器不直接连接到互联网,您可能需要将端口 1723 TCP 和 GRE 转发到 vpn 服务器的 LAN IP。请参阅路由器手册或 portforward.com 了解供应商特定说明。同样,您可能需要在 中分配静态 IP /etc/network/interfaces

相关内容