假设我有一个虚拟专用服务器,来自利诺德,运行 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 服务器
在软件选择下,选择 OpenSSH 服务器(用于远程管理机器)并手动选择实际的 pptpd 包。如果您想要更多服务,例如,如果您还想将计算机用作 Web 服务器,您当然可以选择附加软件。出于安全原因,如果在关键环境中设置,我通常建议人们每台机器只运行一个外部可访问的服务,但这实际上取决于您。
在手动选择中导航至未安装软件包 > net您将在其中找到 pptpd。选择它并按两次“g”以安装该包。
让安装完成并重新启动系统。
通过 SSH 进入您新设置的机器并
sudo aptitude update && sudo aptitude safe-upgrade
首先运行以更新所有软件包。如有必要,请重新启动。打开 pptpd.conf 文件:
sudo nano /etc/pptpd.conf
根据您的需要调整底部的 IP 设置。在本地 IP 下,输入 VPN 服务器本地网络中的 IP(如果您不知道,请输入“sudo ifconfig”,它会显示您的网络接口和分配的 IP)。为此,我建议在 /etc/network/interfaces 或路由器配置中设置静态 IP。如果需要,您可以更改主机名
/etc/ppp/pptpd-options
指定您想要授予 VPN 访问权限的用户名和密码:
sudo nano /etc/ppp/chap-secrets
。如果您在之前的步骤中更改了主机名,请确保现在在server
例子:
# client server secret IP addresses eubolist pptpd myübersecretpassword *
与 pptp 一样,没有密钥文件,安全性完全取决于密码。这就是为什么您应该选择一个较长(例如 32 个字符)的随机密码。您可以在此处生成这样的密码。
现在我们需要设置 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”更改为另一个接口,具体取决于哪个接口配置为在您的机器上连接到互联网。
最后,取消注释此行
/etc/sysctl.conf
:net.ipv4.ip_forward=1
重启
如果您的 vpn 服务器不直接连接到互联网,您可能需要将端口 1723 TCP 和 GRE 转发到 vpn 服务器的 LAN IP。请参阅路由器手册或 portforward.com 了解供应商特定说明。同样,您可能需要在 中分配静态 IP
/etc/network/interfaces
。