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


16

假设我从运行Ubuntu的Linode那里获得了虚拟专用服务器,如何轻松设置PPTP VPN,以便Ubuntu客户端可以连接到它?

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

Answers:


28

绝对最低服务器设置

以下是获得在Ubuntu下运行的基本PPTP VPN服务器所需的绝对最低限度说明。然后,客户端将能够VPN连接到服务器并路由其Internet流量,以使其通过服务器到达Internet。与往常一样,请查阅完整的文档以了解所有操作。

首先,安装所需的软件:

sudo apt-get install pptpd

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

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网络上的用户可以将其数据包路由到Internet:

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

注意:本指南假定服务器上没有配置防火墙。如果服务器上有防火墙(例如UFW),请查阅相关文档

第四,对于每个VPN用户,在文件/ etc / ppp / chap-secrets中创建一个帐户。用$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”,然后单击“ 添加”。在下一个屏幕上,选择PPTP作为VPN类型,然后单击创建

在此处输入图片说明

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

现在,单击“ 高级”

在此处输入图片说明

在此窗口中,启用“使用点对点加密(MPPE)”并选择128位安全性。禁用MSCHAP身份验证(启用MSCHAPv2)。

最后,单击确定,然后单击保存以关闭上一个窗口。

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

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

笔记

如果您连接到的本地网络使用的是192.168.0.0/24和192.168.1.0/24子网,那么您将遇到问题,因为默认情况下PPTP服务器会使用该子网。您将必须配置PPTP以使用pptpd.conf中的不同子网。

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


4

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

首先登录到VPS面板并启用TUN / TAPPPP。如果您没有这样的选项,请与您的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,则需要用venet0替换eth0。

我建议跑步

sudo iptables-save

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

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

systemctl enable pptpd

我建议安装iptables-persistent,这样即使重新启动后规则仍会保留

sudo apt-get install -y iptables-persistent

链接不会随处可见,主要是我永远不会释放该域名,其次是我的托管服务器,其次相信我:DI真的不能只是在这里复制粘贴教程而已。
卢卡,

恐怕我们在此站点上不接受仅链接的答案。因此,如您所见,此答案可能很快就会被删除,它已经在审阅队列中(我之前的评论中的链接)。

Zanna非常感谢!@Paranoid Panda好,那么您应该删除我上面有2个投票的答案,因为它包含链接:P
Luka

1
这里的问题答案仅是链接。这意味着,如果链接由于任何原因而断开(即使该链接据说永远不会断开),答案也将变为无效。既然答案已经变得自给自足了(并使用链接作为参考),答案就可以了。该问题的答案目前已被删除,除非它像您的帖子一样被改编。
卡兹·沃尔夫

1
非常欢迎您,感谢您完成本教程。下次不要害怕发表这么长的文章。这是完全可以接受的。
Zanna

3

遵循本教程:带有Ubuntu的PPTP VPN服务器

  1. 在软件选择下,选择OpenSSH服务器(用于计算机的远程管理),并为实际的pptpd软件包选择手动软件包。如果您需要更多服务,例如,如果您还想将计算机用作网络服务器,则当然可以选择其他软件。出于安全性考虑,我通常建议人们在关键环境中进行设置时,每台计算机只能从外部可访问服务中运行一项,但这实际上取决于您。

  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伪装: sudo nano /etc/rc.local

    在“退出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服务器没有直接连接到Internet,则可能需要将端口1723 TCP和GRE转发到您的VPN服务器的LAN IP。请参阅路由器的手册或portforward.com,以获取特定于供应商的说明。同样,您可能需要在中分配静态ip /etc/network/interfaces

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.