当前位置: 首页>>技术教程>>正文


将Ubuntu设置为VPN服务器的最简单方法

,

问题描述

我知道网上有很多关于设置VPN客户端和服务器的教程。

我发现一个简单/短的,我只对服务器部分感兴趣。

对于客户端,我将使用OS X,所以我更喜欢使用L2TP over IPsecPPTP的解决方案,因为我认为思科IPsec会花费一些东西。

我不想花太多时间来设置它。你知道,也许有人已经做了一个设置脚本:)

注意:我正在使用运行Ubuntu 12.04的EC2微型实例。

最佳解决思路

更新:截至Sierra,macOS不再支持PPTP VPN。此答案对于macOS客户端Sierra及其以后版本无效。

通过PoPToP的PPTP很容易

  1. apt-get install pptpd

  2. 编辑/etc/pptpd.conf,并将remoteip选项设置为您的DHCP服务器不支持的网络范围。

  3. 编辑/etc/ppp/chap-secrets并添加用户名和密码

例如

vpnuser pptpd vpnpassword *

这是设置pptp所需的全部资源。现在用您的OS X客户端进行测试。

次佳解决思路

WARNING: PPTP IS AN INSECURE PROTOCOL! Not only has the encryption been breached, but it sends your authentication in clear text and is easily intercepted. It has been estimated that the amount of time required to brute-force the password is roughly equivalent to the time required to brute-force a single DES key. Consider using OpenVPN or another VPN architecture instead of PPTP!

我使用this guide在我的Ubuntu 12.04服务器上设置了PPTP VPN服务器。


总结链接中的主要观点:

1:安装pptpdufwiptables可用于代替ufw,但为了便于使用,如果您不了解iptablesufw会更好。 sudo apt-get install pptpd ufw

2:打开需要的端口。该指南建议22(SSH)和1723为pptp vpn。

sudo ufw allow 22
sudo ufw allow 1723
sudo ufw enable

3:编辑/etc/ppp/pptpd-options。用你最喜欢的编辑器打开这个文件(我的nano,所以对我来说命令是sudo nano /etc/ppp/pptpd-options),如果你想让它在所有操作系统上都可以普遍使用,可以在它们前面加上#来注释掉这些行:

refuse-pap
refuse-chap
refuse-mschap

如果您想禁用加密,您可以对此行进行注释:require-mppe-128

4:在编辑/etc/ppp/pptpd-options时,添加VPN的DNS服务器。这个例子使用OpenDNS服务器:

ms-dns 208.67.222.222
ms-dns 208.67.220.220

5:编辑/etc/pptpd.conf。用你最喜欢的编辑器打开文件(我的nano,所以对我来说命令是sudo nano /etc/pptpd.conf)。您需要为系统添加本地VPN IP,因此请添加:

localip 10.99.99.99
remoteip 10.99.99.100-199

如果您的系统是VPS,请使用”localip”的公共IP。如果不在本地网络上,请使用您计算机的网络IP。如果这些IP存在于您的子网上,请使用不同的IP和范围!如果您不知道您的VPS的公共IP,请通过运行dig +short myip.opendns.com @resolver1.opendns.com来查找

6:编辑/etc/ppp/chap-secrets。用你最喜欢的编辑器打开文件(我的nano,所以对我来说命令是sudo nano /etc/ppp/chap-secrets),并添加auth数据。 /etc/ppp/chap-secrets的格式是:

[Username] [Service] [Password] [Allowed IP Address]

一个例子是:sampleuser pptpd samplepassword *

7:重新启动pptpd。在终端:sudo /etc/init.d/pptpd restart中运行此命令

8:编辑/etc/sysctl.conf。用你最喜欢的编辑器打开文件(我的nano,所以对我来说命令是sudo nano /etc/sysctl.conf)。 Un-comment /etc/sysctl.conf中的以下行(通过删除其开始处的#):net.ipv4.ip_forward=1重新加载配置:sudo sysctl -p

9:这一步假设你有ufw。编辑/etc/default/ufw并将选项DEFAULT_FORWARD_POLICYDROP更改为ACCEPT

10:这一步假设你有ufw。编辑/etc/ufw/before.rules,并在/etc/ufw/before.rules的开头或*filter规则(推荐)之前添加以下内容:

# NAT table rules
*nat

:POSTROUTING ACCEPT [0:0]
# Allow forward traffic to eth0
-A POSTROUTING -s 10.99.99.0/24 -o eth0 -j MASQUERADE

# Process the NAT table rules
COMMIT

如果您的内核版本为3.18或更高版本(可以通过运行uname -r来检查此内核),还可以在# drop INVALID packets ...行之前添加以下行:

-A ufw-before-input -p 47 -j ACCEPT

11:重新启动防火墙,刷新规则集并应用我们添加到/etc/ufw/*.rules文件的规则:sudo ufw disable && sudo ufw enable

警告:如果您有其他端口需要打开,例如,如果您的服务器托管网站,则需要使用HTTPS,您需要使用sudo ufw allow <PORT>单独将这些端口添加到允许的列表中

第三种解决思路

Ubuntu 12.04上的PPTP VPN示例

以下是在Ubuntu 12.04上设置基本PPTP VPN服务器的快速教程。

Install Necessary Packages

                          sudo apt-get install ppp pptpd

Configure PPTP IP Ranges on the Server

                          sudo nano /etc/pptpd.conf

最后添加以下几行

                          localip 10.89.64.1
                          remoteip 10.89.64.100-150

这将PPTP服务器设置为使用IP 10.89.64.1,同时将IP范围10.89.64.100分配到10.89.64.150到PPTP客户端。只要它们是专用IP地址并且不与您的服务器已经使用的IP地址冲突,就可以随意更改这些设置。

Configure DNS Servers to Use When Clients Connect to this PPTP Server

                          sudo nano /etc/ppp/pptpd-options

修改或在最后添加以下行

                          ms-dns 8.8.8.8
                          ms-dns 8.8.4.4

Create a PPTP User

                          sudo nano /etc/ppp/chap-secrets

Append a line at the bottom so your file looks something like:

                          # client    server  secret          IP addresses
                          test        pptpd   abcd1234        *

Configure NAT for PPTP Connections

如果没有这一步,您将能够连接,但您的连接将无法从此服务器加载任何网络连接。

                          sudo nano /etc/rc.local

在“退出0”行之前在右下角添加以下内容:

                          iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

假设eth0,您可以使用ifconfig来检查网络名称。

Enable IPv4 forwading:

                          sudo nano /etc/sysctl.conf

Uncomment the following line:

                          net.ipv4.ip_forward=1

Then reload the configuration:

                          sudo sysctl -p

Reboot your VPS and everything should work swimmingly from any PPTP client.


Client side configuration

对于Mac,请确保您添加了PPTP VPN连接。除此之外,您只需在身份验证设置中设置服务器地址,帐户名称和密码即可。这里没有痛苦。

对于Linux,NetworkManager添加VPN连接。确保你添加了PPTP VPN连接。我使用的配置在这里:

How To Debug and Fix PPTP/VPN Client Connection

vpn,ubuntu

And for Windows

vpn,ubuntu

第四种思路

在这个线程上的其他答案只是在我的情况下的部分答案。这是我在Ubuntu 12.04.3上的工作

sudo apt-get install pptpd

将以下内容添加到/etc/pptpd.conf(IP地址无关紧要,这是您的ppp0接口的唯一IP地址。)

localip 10.0.0.1
remoteip 10.0.0.100-200

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

ms-dns 8.8.8.8
ms-dns 8.8.4.4

启用IP转发

sudo vim /etc/sysctl.conf

取消注释此行

net.ipv4.ip_forward=1

保存更改

sudo sysctl -p /etc/sysctl.conf

编辑/etc /ppp /chap-secrets,以这种格式添加VPN用户:

# Secrets for authentication using CHAP
# client    server  secret          IP addresses
username pptpd supersecretpassword *

重新启动PPTP

service pptpd restart

运行ifconfig并找到你的默认接口,在我的情况下它是br0(我改变了它允许虚拟机在我的物理机器上共享接口,你的可能是en0)

vpn,ubuntu

备份iptables

iptables-save > ~/iptables.save

现在通过ifconfig显示你的iptables更改使用你的默认界面。

iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
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 br0 -j ACCEPT

在系统重新启动时保持其持久性;

sudo apt-get install iptables-persistent

在客户端计算机上添加VPN(Mac)

系统偏好设置>网络> [+]> VPN

vpn,ubuntu

vpn,ubuntu

然后选择认证设置>密码,然后在这里填写你的密码

vpn,ubuntu

第五种思路

这是一个非常好的项目,可以消除OpenVPN的痛苦:

https://github.com/Nyr/openvpn-install

只需运行它,它将安装打开的VPN并进行配置。最后它会弹出一个client.ovpn文件,您可以使用它来设置客户端。似乎工作得很好。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1014.html,未经允许,请勿转载。