问题描述
我知道网上有很多关于设置VPN客户端和服务器的教程。
我发现一个简单/短的,我只对服务器部分感兴趣。
对于客户端,我将使用OS X,所以我更喜欢使用L2TP over IPsec
或PPTP
的解决方案,因为我认为思科IPsec会花费一些东西。
我不想花太多时间来设置它。你知道,也许有人已经做了一个设置脚本:)
注意:我正在使用运行Ubuntu 12.04的EC2微型实例。
最佳解决思路
更新:截至Sierra,macOS不再支持PPTP VPN。此答案对于macOS客户端Sierra及其以后版本无效。
通过PoPToP的PPTP很容易
-
apt-get install pptpd
-
编辑
/etc/pptpd.conf
,并将remoteip选项设置为您的DHCP服务器不支持的网络范围。 -
编辑
/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:安装pptpd
和ufw
。 iptables
可用于代替ufw,但为了便于使用,如果您不了解iptables
,ufw
会更好。 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_POLICY
从DROP
更改为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
And for Windows
第四种思路
在这个线程上的其他答案只是在我的情况下的部分答案。这是我在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
然后选择认证设置>密码,然后在这里填写你的密码
第五种思路
这是一个非常好的项目,可以消除OpenVPN的痛苦:
https://github.com/Nyr/openvpn-install
只需运行它,它将安装打开的VPN并进行配置。最后它会弹出一个client.ovpn文件,您可以使用它来设置客户端。似乎工作得很好。