假设我从运行Ubuntu的Linode那里获得了虚拟专用服务器,如何轻松设置PPTP VPN,以便Ubuntu客户端可以连接到它?
默认情况下,Ubuntu提供连接到这些PPTP网络的功能。我想以一种非常容易连接的方式进行设置(即,无需在客户端上安装任何软件包)。
假设我从运行Ubuntu的Linode那里获得了虚拟专用服务器,如何轻松设置PPTP VPN,以便Ubuntu客户端可以连接到它?
默认情况下,Ubuntu提供连接到这些PPTP网络的功能。我想以一种非常容易连接的方式进行设置(即,无需在客户端上安装任何软件包)。
Answers:
绝对最低服务器设置
以下是获得在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服务器来查询所有域名查找。花点时间阅读完整的文档,以了解如何更改此设置以及许多其他设置。
我写的本教程将指导您完成。它应该可以帮助您避免使用VPS的人犯的常见错误。
首先登录到VPS面板并启用TUN / TAP和PPP。如果您没有这样的选项,请与您的ISP联系以为您启用此选项。
首先安装此软件包:
sudo apt-get install pptpd
因为我们不希望我们的VPN公开,所以我们将创建用户。
我正在使用VI,您可以使用NANO或任何您喜欢的文本编辑器
vi /etc/ppp/chap-secrets
格式是
[username] [service] [password] [ip]
例
john pptpd johnspassword *
*
表示允许从所有IP地址进行访问,仅当您具有静态IP时才指定IP。
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个客户端。
/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
这是重要的部分,如果您使用的是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
遵循本教程:带有Ubuntu的PPTP VPN服务器
在软件选择下,选择OpenSSH服务器(用于计算机的远程管理),并为实际的pptpd软件包选择手动软件包。如果您需要更多服务,例如,如果您还想将计算机用作网络服务器,则当然可以选择其他软件。出于安全性考虑,我通常建议人们在关键环境中进行设置时,每台计算机只能从外部可访问服务中运行一项,但这实际上取决于您。
在手动选择中,导航到未安装的软件包> 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伪装:
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”更改为另一个接口,具体取决于配置为连接到计算机上互联网的接口。
最后,取消注释此行
/etc/sysctl.conf
:net.ipv4.ip_forward=1
重启
如果您的VPN服务器没有直接连接到Internet,则可能需要将端口1723 TCP和GRE转发到您的VPN服务器的LAN IP。请参阅路由器的手册或portforward.com,以获取特定于供应商的说明。同样,您可能需要在中分配静态ip
/etc/network/interfaces
。