Showing posts with label VPN. Show all posts
Showing posts with label VPN. Show all posts

Dec 8, 2010

dd-wrt pptp设置

一直以来都希望让家里的电脑能永远保持互联的状态,前几天买了台路由器刷DD-WRT,终于能够如愿。

自己用的版本是v24 sp2。开始打算使用openvpn,不过这样就成了三层的VPN。L2TP又没有看到可以设置的,最后决定用PPTP。

不过也不是那么顺利,看了无数人十分高效的成功经验后,我的PPTP还是无法正常工作。终于,昨晚在搞了很久以后,发现只要只要将PPTP里面的强制认证关闭就可以了⋯⋯真无奈⋯⋯

Nov 24, 2010

PPTP和L2TP的区别

PPTP和L2TP都使用PPP协议对数据进行封装,然后添加附加包头用于数据在互联网络上的传输。尽管两个协议非常相似,但是仍存在以下几方面的不同:

1.PPTP要求互联网络为IP网络。L2TP只要求隧道媒介提供面向数据包的点对点的连接。L2TP可以在IP(使用UDP),桢中继永久虚拟电路(PVCs),X.25虚拟电路(VCs)或ATM VCs网络上使用。

2.PPTP只能在两端点间建立单一隧道。L2TP支持在两端点间使用多隧道。使用L2TP,用户可以针对不同的服务质量创建不同的隧道。

3.L2TP可以提供包头压缩。当压缩包头时,系统开销(overhead)占用4个字节,而PPTP协议下要占用6个字节。

4.L2TP可以提供隧道验证,而PPTP则不支持隧道验证。但是当L2TP或PPTP与IPSEC共同使用时,可以由IPSEC提供隧道验证,不需要在第2层协议上验证隧道。

总之,对于一般的使用者来说,L2TP有更强的穿透率,更好的压缩,更好的加密(双层加密),所以如果你在使用PPTP失败的时候可以尝试L2TP。

Nov 22, 2010

架设PPTP VPN及在Linux上远程连接VPN

本文所涉及的运行环境:远程服务器为 VPSLink 上低配置 Xen VPS ( 注意,OpenVZ VPS 是不能安装 PPTP VPN 的),Linux 系统为 Ubuntu 9.04 ,本地服务器为 Ubuntu Server 9.10 。

1. 如何快速搭建一个VPN(pptp)
# 安装服务器端软件
apt-get install pptpd

# 配置IP地址范围,编辑/etc/pptpd.conf,在最后添加如下地址:
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

# 这两句设置了当外部计算机通过pptp联接到vpn后所能拿到的ip地址范围和服务器的ip地址设置。
# 增加一个用户,编辑/etc/ppp/chap-secrets,在下面增加类似的条目:
username pptpd password *

# 重启pptpd服务
/etc/init.d/pptpd restart

# 编辑:/etc/ppp/options,在里面找一下”ms-dns”项目:
ms-dns 8.8.8.8
ms-dns 8.8.4.4

#允许转发,编辑/etc/sysctl.conf,看一下net.ipv4.ip_forward参数是不是1,或直接执行以下命令来查看
sysctl net.ipv4.ip_forward

# 如果输出为 0 的话就要修改 /etc/sysctl.conf 中的 net.ipv4.ip_forward ,把 0 改为1,然后执行以下命令。
sysctl -p

# 最后,运行一下这条命令来打开iptables的转发支持:
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
/sbin/iptables -I FORWARD -p tcp –syn -i ppp+ -j TCPMSS –set-mss 1356

# 并把这两条加入到 /etc/rc.local 中的 exit 0 行前面,这样重启后就无需再执行了。

# 好了,PPTP VPN 到此就架设好了,你现在可以用 Windows 自带的 VPN 连接工具来连接了,这个应该非常简单。那么下面我再说说如何在 Ubuntu 上手工配置 PPTP VPN 连接吧。

2 .如何在 Linux 上连接 PPTP VPN
# 安装 Linux 上的 pptp 客户端
apt-get install pptp-linux

# 把下面两行加入 /etc/rc.local , 放在 exit 0 这一行的前面
/usr/sbin/pptpsetup –create lable –server ip –username username –password password –encrypt
/usr/sbin/pppd call lable

# 说明:这两行命令是最简便的建立 PPTP 连接方式。

Label: 用户自定义
IP: 是 VPN 的 IP 地址
Username 及 Password :登录 VPN 的用户名和密码

# 把下面两行加入 /etc/ppp/ip-up 中,删除默认网关及把 VPN 服务器作为默认网关,也就是改变路由策略,把所以传输流量通过 VPN 线路来走。
/sbin/route add default gw 192.168.0.1
/sbin/route del default gw 原来的网关 // 原来的默认网关地址可通过 route 命令来获取

# 另外,如果你想把此服务器作为网关服务器的话,那就按照前面架设 PPTP VPN 一节中的方式,设置 net.ipv4.ip_forward 参数来打开包转发。并把下面两行加入到 /etc/rc.local 中。
/sbin/iptables -t nat -A POSTROUTING -s 内网IP/24 -o ppp0 -j MASQUERADE
/sbin/iptables -I FORWARD -p tcp –syn -i ppp+ -j TCPMSS –set-mss 1356

# 重启服务器,你可以用 ifconfig 看一下,会多出一个 ppp0 的网络接口了。另外,你可以 traceroute twitter.com 看一下,是否通过 ppp0 的网关出去的,如果是的话,就说明工作正常。

# 注意:在作网关服务器的时候,建议使用 Google 的 DNS ,国内很多 DNS 被污染了,无法正常解析 Twitter 等网站。

# 修改 /etc/resolv.conf 中,改为如下两行
nameserver 8.8.8.8
nameserver 8.8.4.4

CentOS 5 VPS配置pptpd为VPN服务器

VPS一般每个月也用不完流量,不用也是浪费,所以我们要榨干VPS,哈哈。(以下命令建立在64位CentOS 5上 ,并且 pptpd VPN需要内核支持mppe)

下面为配置命令:

先安装ppp和iptables.
yum install -y ppp iptables
然后下载pptpd.

64位操作系统.
wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.x86_64.rpm

32位操作系统.
wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.i386.rpm

安装pptpd

64位操作系统
rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm

32位操作系统
rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm

接下来编辑/etc/pptpd.conf文件,去掉下面两行的注释或者直接添加这两行
vim /etc/pptpd.conf
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

添加VPN用户和密码,按照下面格式.密码后的*号保留.
vim /etc/ppp/chap-secrets
username pptpd password *
设置DNS为Google的DNS.
vim /etc/ppp/options.pptpd
找到ms-dns改成.
ms-dns 8.8.8.8
ms-dns 8.8.4.4
编辑/etc/sysctl.conf文件,找到”net.ipv4.ip_forward=1″这一行,去掉前面的注释。没有就添加上.
net.ipv4.ip_forward=1
运行下面的命令让配置生效。
sysctl -p
重启pptpd服务
/etc/init.d/pptpd restart
最后开启iptables转发
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
最后设置iptables和pptpd开机自动启动
chkconfig pptpd on chkconfig iptables on
好了,下面可以用VPN自由呼吸了。

Debian/Ubuntu下搭建OpenVPN与客户端配置教程

下面介绍如何在Debian系统搭建OpenVPN服务器端以及如何配置Windows客户端。

服务器端
1.至少拥有一台VPS或独立服务器
2.基于Openvz的VPS只能安装OpenVPN,XEN可安装PPTP,但不在本文讨论范围不再赘述
3.检验是否支持Tun/Tap和nat,以Root登陆输入
cat /dev/net/tun
若返回cat: /dev/net/tun: File descriptor in bad state 则说明tun可用输入
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
若返回iptables: No chain/target/match by that name 则说明nat模块正常可用
若以上返回信息不符请联系客服要求开通Tun/Tap和iptable nat。
4.修改服务器DNS
vi /etc/resolv.conf
修改DNS为:
nameserver 8.8.8.8
nameserver 8.8.4.4
5.本想一步步写,但经友人提醒有个VPSNOC John Malkowski的Debian OpenVPN脚本基本我下面的步骤雷同且我的教程步骤过于复杂,考虑安装方便所以放弃原教程奉上一键安装脚本。
wget http://vpsnoc.com/scripts/debian-openvpn.sh
chmod +x debian-openvpn.sh
./debian-openvpn.sh
稍等片刻,依次出现需要填写内容:
国家(两个英文字母)
省份/州(两个英文字母)
城市(英文字母)
组织名称 (英文字母)
部门名称 (英文字母)
通用名  (英文字母)
姓名  (英文字母)
邮箱密码(英文数字组合)
凭证名  (英文字母)
按两次Y后,安装完成。
安装完成后root目录下会出现一个keys.tgz压缩包,使用Tunnelier或WinSCP将压缩包下载至本地,待用。
6.生产客户端证书
cd /etc/openvpn/easy-rsa/2.0
../vars
./build-key user1

将user1换成期望用户名,按照步骤5中信息填写方式,完成证书生成。至此服务器安装基本完成。

Windows客户端配置
1.下载OpenVPN:http://www.openvpn.net/index.php/open-source/downloads.html 下载最新版本的Windows Installer安装包。
2.运行安装,建议win7/vista 将openvpn安装至非系统分区,如:D:\net\openvpn。按过程中会出现安装网卡驱动(型号为:TAP-WinXX Apapter V9)安全警告,确认继续。
3.修改DNS,注意:是修改新增加的这个虚拟网卡后出现的新连接,如果你不知道是哪个无所谓,把所有连接的DNS都设置成OpenDNS或者GoogleDNS吧,步骤:
Win7 https://store.opendns.com/setup/operatingsystem/windows-7
Vista https://store.opendns.com/setup/operatingsystem/windows-vista
XP https://store.opendns.com/setup/operatingsystem/windows-xp
推荐使用Google DNS :8.8.8.8和 8.8.4.4替换OpenDNS的208.67.222.222 208.67.220.220。
4.解压从服务器上down下来的keys.tgz,解压至openvpn安装目录下的config目录,如:D:\openvpn\config。
5.运行桌面上的OpenVPN GUI图标(如果是win7/vista系统请以管理员身份运行)右击右OpenVPN图标点Connect
6.稍等出现分配完成后说明链接成功。
进入http://www.dnsstuff.com 测试下吧。

配置新用户
OpenVPN一个证书只能对应一个用户,如果你想给朋友开通OpenVPN需要现在服务器上配置一个客户端证书(服务器端配置的 6.生产客户端证书),然后修改*.ovpn文件,将其证书和配置打包发给你的朋友,并教其修改连接DNS,使用OpenVPN。
下面分步骤细说:
1.按照服务器端配置的步骤 6,生成客户端新证书
2.使用Tunnelier或WinSCP前往/etc/openvpn/easy-rsa/2.0/keys并下载刚生成的新证书,如:步骤 6中输入的是
./build-key user1

那么/etc/openvpn/easy-rsa/2.0 /keys文件夹下的应该会新增user1.crt,user1.key,user1.csr三 个文件,将这三个文件连同*.ovpn和ca.crt、ca.key三个文件一起下载到本地,用EditPlus或其他编辑编辑器打开下载下来 的*.ovpn文件将其中的
cert client1.crt
key client1.key
修改为:
cert user1.crt
key user1.key
保存,打包发送给你的朋友。
3.教其安装OpenVPN客户端,并解压*.opvn配置文件和证书至openvpn安装目录下的config目录中
4.教其修改DNS和使用OpenVPN。

OpenVPN 简介

OpenVPN 是一个具备完全特征的SSL VPN解决方案,能够进行大范围的配置操作,包括远程访问、站点-站点间VPN、WiFi安全及企业级远程访问解决方案,支持负载均衡,错误恢复及细粒度的访问控制。

OpenVPN通过使用工业标准SSL/TLS协议 实现了OSI 2层及3层安全网络扩展,支持灵活的基于证书、智能卡的客户端认证方法,允许通过在VPN虚拟接口上应用防火墙规则实现用户及组访问控制策略。 OpenVPN并非一个Web应用代理,也不能通过Web浏览器进行操作。

作为一个不错的关于OpenVPN的概念介绍,可以参考James Ynan在Linux Fest Northwest 上2004年发表的程序注释――理解用户空间VPN:历史、概念基础及实际应用(Understanding the User-Space VPN: History, Conceptual Foundations, and Practical Usage)。也可以参考Charlie Hosner的OpenVPN及SSL VPN革命(OpenVPN and the SSL VPN Revolution)。

OpenVPN 是一个开源项目,遵从GPL许可协议。商业许可对重新发布其基于OpenVPN的应用程序的公司也有效。获得更多信息请联系info@openvpn.net。

OpenVPN 能够运行于Linux、Windows 2000/XP及更高版本、OpenBSD、FreeBSD、NetBSD、Mac OS X及Solaris平台。

通过OpenVPN,你可以:
  1. 在任意IP局部网络或虚拟以太网适配器上通过单个UDP或TCP端口建立隧道;
  2. 使用一或多台机器配置可裁剪的、负载均衡的VPN服务器群以处理成千上万的来自VPN客户端的动态连接;
  3. 能够使用在OpenSSL库中所提供所有的加密、认证及证书特性以保护私有网络在Internet网络上的数据传输;
  4. 使用OpenSSL库所支持的任意加密算法、密钥长度或HMAC数字签名(用于数据报完整性检查);
  5. 先把基于静态密钥传统加密方法或基于证书的公钥加密方法;
  6. 使用静态、预先公有的密钥或基于TLS的动态密钥交换;
  7. 使用实时的自适配压缩及流量整形以管理链路带宽分配;
  8. 为动态公共点(如DHCP或拨号客户端)提供隧道传输;
  9. 无需显示定义防火墙规则为面向连接的防火墙提供网络隧道传输;
  10. 基于NAT的网络隧道;
  11. 通过虚拟的tap设备创建安全的以太网桥;
  12. 在Windows或Mac OS X系统上通过GUI界面控制OpenVPN。

OpenVPN与其它VPN有何区别?

OpenVPN的主要特征包括跨平台的可移植性、优秀的稳定性、成百上千或成千上个客户端支持的可伸展性、相对简单的安装过程、支持动态IP地址及NAT。

OpenVPN 提供一个设计为易于针对站点定制的可扩展的VPN框架,例如提供发布自定义安装包到客户端,或通过OpenVPN插件模块接口支持可选的认证方法(例如 openvpn-auth-pam 模块允许OpenVPN使用任意PAM认证方法认证客户端,这种方法可以单独使用,也可以与基于X509证书结合使用以进行认证)。

OpenVPN 提供一个管理接口,可以用于远端控制或中央控制一个OpenVPN守护进程。管理接口也可以用于开发基于GUI或web的前端应用程序。

在Windows平台上,OpenVPN能够使用Windows Crypto API从智能卡上读取证书或私钥。

OpenVPN 使用设计用于可保护被动攻击和主动攻击的工业强度的安全模型。OpenVPN的安全模型基于SSL/TLS进行会话认证及使用IPSec ESP协议用于基于UDP的安全隧道传输。OpenVPN支持X509 PKI (public key infrastructure)用于会话认证,TLS协议用于密钥交换,OpenSSL的加密算法无关的EVP接口用于加密隧道数据,HMAC-SHA1 算法用于认证隧道数据。

OpenVPN建立为可移植的, OpenVPN可以运行于Linux、Solaris、OpenBSD、FreeBSD、NetBSD、Mac OS X及Windows 2000/XP,因为OpenVPN作为用户空间守护进程编写而非内核模块或对IP层的复杂变更,移植操作的简易性是值得留意的。

OpenVPN易于使用,通常,一个隧道的建立和配置可以通过一个单独的命令完成(无需任何必要的配置文件)。OpenVPN文档包含了的示例进行了详细解释。

OpenVPN 经过严格设计,并在不可靠的网络中进行了强度测试。OpenVPN的一个主要的设计目标就是在正常操作和错误恢复情况下IP层都能够快速响应。这意味着如果IP层断开5分钟,当它再次恢复时,隧道流量能够立即恢复,即使动态密钥交换在这期间已经过期。

OpenVPN 有着健壮的模块设计。所有加密都由OpenSSL库处理,所有IP隧道功能都由TUN/TAP虚拟网络驱动提供。

模块化的好处是显而易见的,例如,OpenVPN可以与新版本的OpenSSL库动态链接并立即能够使用其在新版本中所提供的新功能。例如,当 OpenVPN基于最后版本的OpenSSL(0.9.7)编译时,它能够使用新的加密算法,如AES-256(高级加载标准,256位密钥),以及 OpenSSL特定目的的硬件加速器优化加密、解密及认证性能的加密引擎功能。

同样地,OpenVPN的用户空间设计易于移植到任何包含TUN/TAP虚拟网络驱动的OS中。

OpenVPN 运行速度很快,在Pentium II 266MHz机器上运行Redhat 7.2 ,使用基于TLS的认证方法,Blowfish加密算法,SHA1 用于隧道数据认证,当隧道传输一个巨大的,经过预先压缩文件的FTP会话时,OpenVPN达到了每秒(CPU时间,包括内核及用户态时间)1.455MB的收/发传输速度。

OpenVPN提供了用于控制VPN隧道的安全参数的选项,同时提供了用于保证服务器本身安全的选项,例如—chroot用于限制OpenVPN守护进程能够访问的文件系统部分,–user 及—group选项用于降低守护进程在初始化之后的优先级,–mlock用于确认密钥原始内容及隧道数据从不被分页到磁盘上,从而避免被后期恢复。

为什么先把TLS作为OpenVPN的根本认证及密钥协商协议呢?TLS是SSL协议族的最后成果,最初由Netscape开发用于他们最初的安全 web浏览器。多年来,TLS及其SSL前身已经在web上得到了广泛应用,并得到了深入的弱点分析。这些分析使得它不断被加强,从而形成如今的协议,SSL/TLS被认为是最强壮及最成熟的安全协议之一。因此,我们相信TLS是作为VPN产品认证及密钥交换机制的极好的先把。

OpenVPN 支持IPSec或PPTP吗?

目前被广泛应用的VPN实现中有三个主流:SSL、IPSec及PPTP。OpenVPN是一个SSL VPN,因此并不与IPSec、L2TP或PPTP兼容。

IPSec协议设计为内核空间IP栈的修正,不同的操作系统需要其自身的IPSec实现。

相对而言,OpenVPN的用户空间实现允许跨操作系统及处理器体系、防火墙及NAT友好操作、动态地址支持、多协议支持(包括协议桥接)的移植。

优点与缺点并存,OpenVPN的主要优点在于可移植、易于配置及与NAT和动态地址兼容。OpenVPN的安装和使用与其它安全相关的守护进程软件,例如SSH相似。

由于历史因素,IPSecr的优点在于获得了众多厂商的支持,虽然OpenVPN也逐渐开始致力于硬件设备的支持。

PPTP协议的优点在于其在Windows平台预装了客户端,密码分析专家已经透露了其安全弱点。

OpenVPN符合标准吗?

作为一个用户空间VPN守护进程,OpenVPN与SSL/TLS、RSA证书及X509 PKI、NAT、DHCP及TUN/TAP兼容。

OpenVPN与IPSec、IKE、PPTP或L2TP并不兼容。

Q: OpenVPN 隧道能够基于TCP连接传输吗?
A: 是的,OpenVPN 1.5以上版本均支持基于TCP连接的隧道传输。

Q: 我是否能够使用web浏览器作为OpenVPN客户端?
A: 不可以,虽然OpenVPN使用SSL/TLS协议用于安全传输,OpenVPN并不是一个Web应用代理。它是一个OSI 2层或3层Internet网络隧道解决方案,要求OpenVPN同时安装于客户端和服务器端。

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger