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


68

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

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

对于客户端,我将使用OS X,因此我更喜欢使用的解决方案,L2TP over IPsec或者PPTP因为我认为Cisco IPsec会花费一些钱。

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

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


3
注意:CISCO IPSec可以通过StrongSwan和许多配置来实现,但这很棘手。PPTP不再安全。IPSec上的ANd L2TP要求同时进行L2TP和IPSec配置。随意选择,尽管我的回答解释了PPTP
托马斯·沃德

Answers:


24

更新:从Sierra开始,macOS不再支持PPTP vpn。此答案对macOS Sierra及更高版本的客户端无效。

通过PoPToP进行PPTP很容易

  1. apt-get install pptpd
  2. 编辑/etc/pptpd.confremoteip选项并将其设置为网络上DHCP服务器不提供的范围。
  3. 编辑/etc/ppp/chap-secrets并添加用户名和密码

例如

vpnuser pptpd vpnpassword *

这就是设置pptp的全部步骤。现在,使用OS X客户端对其进行测试。


考虑到我将从任何位置连接到该服务器,我还想知道哪种localip和remoteip值是最安全的。使用192.168.0.和定义默认值192.168.1.可能是最坏的可能之一。
索林2012年

5月12日13:28:06 zork pppd [9447]:已加载插件/usr/lib/pptpd/pptpd-logwtmp.so。5月12日13:28:06 zork pppd [9447]:pppd 2.4.5由root,uid 0开始5月12日13:28:06 zork pppd [9447]:使用接口ppp0 5月12日13:28:06 zork pppd [9447] ]:连接:ppp0 <-> / dev / pts / 3 5月12日13:28:36 zork pppd [9447]:挂断(SIGHUP)5月12日13:28:36 zork pppd [9447]:调制解调器挂起5月12日13 :28:36 zork pppd [9447]:连接终止。5月12日13:28:36 zork pppd [9447]:退出。它尚不起作用!您的指南不完整(尚未);)
索林(Sorin

是的,这行不通。
bkerensa 2013年

1
没为我工作
泰勒·吉利斯2013年

@SorinSbarnea这些ip是私有的,永远不会通过互联网访问,所以我不知道您所说的“最安全”是什么意思。如果它们的IP地址范围与您要连接的咖啡馆或工作场所的IP地址范围不同,则将非常幸运。尝试192.168.42。* :)
Jay _silly_evarlast_ Wren

86

警告:PPTP是不安全的协议!不仅破坏了加密,而且以明文形式发送身份验证,并且很容易被拦截。据估计,暴力破解密码所需的时间大致等于暴力破解单个DES密钥所需的时间。考虑使用OpenVPN或其他VPN架构代替PPTP!

我使用本指南在Ubuntu 12.04服务器上设置PPTP VPN服务器。


总结一下链接中的要点:

1:安装pptpdufwiptables可以代替ufw使用,但是为了简便起见,ufw如果您不知道会更好iptables

sudo apt-get install pptpd ufw

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

sudo ufw允许22
须藤ufw允许1723
sudo ufw启用

3:编辑/etc/ppp/pptpd-options。使用您最喜欢的编辑器(mine的nano,所以对我来说是sudo nano /etc/ppp/pptpd-options)打开文件,并#在它们前面加一个注释掉这些行(如果您希望在所有操作系统上都能通用):

垃圾桶
垃圾堆
垃圾邮件

如果要禁用加密,可以在此行中添加注释: 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,因此添加:

本地10.99.99.99
远程IP 10.99.99.100-199

如果您的系统是VPS,则将公用IP用作“ localip”。如果不是,并且在本地网络上,请使用计算机的网络IP。如果子网中存在这些IP,请使用其他IP和范围!如果您不知道VPS的公共IP,请通过运行找到它dig +short myip.opendns.com @resolver1.opendns.com

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

[用户名] [服务] [密码] [允许的IP地址]

一个例子是: sampleuser pptpd samplepassword *

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

8:编辑/etc/sysctl.conf。用您喜欢的编辑器打开文件(我的是nano,所以对我来说命令是sudo nano /etc/sysctl.conf)。在中取消注释以下行(通过删除#开头的注释)/etc/sysctl.confnet.ipv4.ip_forward=1
重新加载配置: sudo sysctl -p

9:此步骤假设您有ufw。
编辑/etc/default/ufw并将选项DEFAULT_FORWARD_POLICY从更改DROPACCEPT

10:此步骤假设您有ufw。
编辑/etc/ufw/before.rules/etc/ufw/before.rules然后在*filter规则的开头或之前添加以下内容(推荐):

#NAT表规则
* nat

:发布接受[0:0]
#允许转发流量到eth0
-A POSTROUTING -s 10.99.99.0/24 -o eth0 -j假面舞会

#处理NAT表规则
承诺

如果您拥有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>


4
现在,我该怎么办:D我已经在服务器上工作了,不知道如何连接到服务器
杰米·赫特伯

1
@Jamie Ask Ubuntu上还有很多其他文档和条目,它们介绍了如何连接到VPN,更不用说Network Manager中的文档了。这个问题仅涉及设置VPN和服务器端。不是连接到它的一部分。
托马斯·沃德

:D超快速响应:DI认为我可能已经解决了,我必须设置错误。这表示ufw是活动的,并且允许大多数端口。我将发挥使用iptables看看这个让我反正
杰米Hutber

@Jamie我可以给你iptables命令,以便我回到家时更喜欢iptables而不是ufw。
托马斯·沃德

1
iptables / netfilter与ufw一起使用,对于最终用户来说,ufw在规则和命令处理方面更好。
托马斯·沃德

19

Ubuntu 12.04上的PPTP VPN示例

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

安装必要的软件包

                          sudo apt-get install ppp pptpd

在服务器上配置PPTP IP范围

                          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地址冲突,就可以根据需要更改它们。

配置DNS服务器以在客户端连接到此PPTP服务器时使用

                          sudo nano /etc/ppp/pptpd-options

修改在末尾添加以下行

                          ms-dns 8.8.8.8
                          ms-dns 8.8.4.4

创建一个PPTP用户

                          sudo nano /etc/ppp/chap-secrets

在底部添加一行,以便文件看起来像这样:

                          # client    server  secret          IP addresses
                          test        pptpd   abcd1234        *

为PPTP连接配置NAT

没有此步骤,您将能够连接,但是您的连接将无法从该服务器加载任何Web连接。

                          sudo nano /etc/rc.local

将以下内容添加到“ exit 0”行的右下方:

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

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

启用IPv4加密:

                          sudo nano /etc/sysctl.conf

取消注释以下行:

                          net.ipv4.ip_forward=1

然后重新加载配置:

                          sudo sysctl -p

重新启动您的VPS,任何PPTP客户端都可以正常运行。


客户端配置

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

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

如何调试和修复PPTP / VPN客户端连接

在此处输入图片说明

对于Windows

在此处输入图片说明


此方法在Ubuntu 12.04非服务器版本上是否也有效?客户端必须使用哪个IP地址连接到该VPN网络?
2013年

是的,它也适用于非服务器版本,您必须在客户端上使用服务器ip连接到vpn @Rasoul
Qasim

不起作用,Ubuntu服务器13.04。客户端一直在寻找DNS。
knutole

@knutole检查IPTables规则是否正确路由。确保您具有en0接口,并且未为其命名。您应该看到列出的公共IP地址。
尼克·伍德汉姆斯

好的,因此,在您的示例中,哪个IP是服务器ip?10.89.64.1吗?然后,在Ubuntu网络管理器中,客户端将列出10.89.64.1作为网关?
dranxo 2014年

9

在我看来,此线程上的其他答案只是部分答案。这是在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

在此处输入图片说明

备份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

在此处输入图片说明

在此处输入图片说明

然后选择“身份验证设置>密码”,然后在此处填写密码

在此处输入图片说明


7

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

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

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


天啊。它只是工作。我不知道为什么它没有得到广泛认可。
Marcus
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.