服务器端:linux 内核要求:推荐2.6.32以及以上详细参考openswan文件夹中的README文件 需要的软件:Openswan:用于IPSec的配置http://www./code/ 一般内核高的直接make,make install就可以安装成功 Xl2tpd,用于l2tp的配置:http://www./services/software/xl2tpd/ L2tp环境的搭建:成功完成此部分搭建后应该可以利用客户端使用L2tp直接连接服务器,但是不加密。Windows的L2tp是和IPSec绑定的。如果要仅用L2tp连接需要再配置,详细见客户端配置部分。 成功连接后可以抓包,格式如下: 安装xl2tpd:以下的操作最好是以根用户身份操作,不然中间会有很多小麻烦,需要用根命令sudo执行 安装的时候最好看下安装包中的Makefile文件,我安装的版本可以直接make编译,make install安装,但是并不保证以后的版本都是这样,还有就是根据操作系统内核的不同安装方式不一样,注意。安装后如果没出现error字样的提示则表示安装成功了。下面开始配置。 1. 编辑 /ect/xl2tpd/xl2tpd.conf 可以清空里面的内容,然后写上有用的部分如下: [global] [lns default] ip range = 10.1.1.2-10.1.1.255 local ip = 本机ip require chap = yes refuse pap = yes require authentication = yes name = LinuxVPNserver ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd length bit = yes 不理解的话可以直接复制没有问题的。ip range是为客户端分配的ip,local ip为服务器本地ip地址,require chap是指明连接的验证方式为chap,而不是pap或者是MS-CHAP等,name是服务器名字,随便写。Pppoptfile指明配置文件的路径。改好后保存。 Ppp配置 确保机子已经安装了ppp服务,可以重新写一遍aptitude install ppp从源安装ppp。 cp /usr/share/doc/xl2tpd/examples/ppp-options.xl2tpd /etc/ppp/options.xl2tpd 把xl2tpd例子中的配置文件复制到指定的路径中,并命名为options.xl2tpd,然后再编辑一下这个文件: Vim /etc/ppp/options.xl2tpd 修改mx-dns为你要分配给连接来的客户机的DNS地址 修改后保存。 添加一个ppp账户 编辑文件vim /etc/ppp/chap-secrets 格式如下: 用户名 * 密码 * 之间最好用tab键规范。现在服务器端的L2tp就搭建好了,要让能连接来的客户机访问网络,还需要做转发设置: Vim /etc/sysctl.conf 将其中的net.ipv4.ip_forward=1这行取消前面的#号注释。保存退出。 执行 sysctl –p使之生效。如果想使服务器每次启动都对此设置就再编辑 vim /etc/rc.local 将其添加到exit 0之前,保存。 转发设置:iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE 将上面设置的10.1.1.0/24子网中的包从eth0转发,对应上面的xl2tpd.conf文件中的ip range。 然后在终端执行一次iptables命令使其生效。现在服务器端的L2tp已经配置好了,开始配置客户端。 客户端:windows操作系统打开网络设置---设置新的网络连接---连接到工作区---创建新连接---使用我的Internet连接(VPN)---输入刚配置的服务器的ip地址,目标名称随意,勾选下面的“现在不连接;仅进行设置以便稍后连接”---用户名和密码输入在客户端创建的用户名和密码,域不填---创建。 然后设置刚创建的VPN连接,在属性中设置安全选项卡中VPN类型选择“使用IPsec的第2层隧道协议(L2TP/IPSec)”,下面的数据加密选择“不允许加密”,身份验证勾选“质询握手身份验证协议(CHAP)”
注意:因为windows默认L2tp和IPSec是绑定使用的,要想只用L2tp而不用加密必须对注册表修改,否则在连接的时候会出现“错误789”: 运行---regedit 打开注册表,找到如下位置: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters 创建一个新值DWORD类型,名字为ProhibitIpSec,值设为1,保存后重新启动。然后就可以用自己设置的账号和密码连接L2tp服务器了。
成功后的交互数据包如下:
IPSec部分的环境设置:VPN的使用很多时候都是需要基于安全的加密传输,所以IPSec配置很必要。 服务器端:在安装openswan的时候可能先要安装一些编译所必须的包,这些都在openswan文件夹中的README文件中都有说明,所以建议查看下载的版本中此文件。我安装的openswan 2.6.33中需要 build-essential, Libgmp3-dev,gawk,flex,bison,需要的话就依次安装aptitude install … 解压openswan包并进入目录,make programs,make install,如果没有出现error字样的错误信息则安装成功。 编辑配置文件 vim /etc/ipsec.conf 1. 修改protostack一行为protostack=netkey 2. 转向文件底部输入如下配置:(这里输入格式要有注意缩进) conn %default Forceencaps=yes conn L2TP-PSK-NAT rightsubnet=vhost:%no,%priv also=L2TP-PSK-noNAT conn L2TP-PSK-noNAT authby=secret pfs=no auto=add keyingtries=3 rekey=no ikelifetime=8h keylife=1h type=tunnel left=服务器的ip地址 leftprotoport=17/1701 right=%any rightprotoport=17/%any 然后保存退出编辑。 设置PSK预共享密钥:vim /etc/ipsec.secrets 在新的一行中输入如下: 服务器ip地址 %any: PSK “预共享密钥” 中间用tab键隔开。 设置网络策略,在终端输入如下: for each in /proc/sys/net/ipv4/conf/* do echo 0 > $each/accept_redirects echo 0 > $each/send_redirects done 要使此策略在每次系统开启时生效则需要将其加入到rc.local文件中 vim /etc/rc.local 在exit 0之前加入如上的代码,然后报错退出编辑。 然后重启IPSec服务: service ipsec restart 然后使用ipsec verify来确认一下配置是否成功:
现在服务器端的IPSec部分就配置好了,客户端需要使用L2tp/IPSec连接需要对客户端再做修改。 客户端:打开建立好的不加密的l2tp的VPN连接,属性---安全,高级设置---选中“使用预共享的密钥作身份验证”---数据加密选项选择“需要加密”
现在就可以使用IPSec加密的通道连接服务器了。在WIN7中直接连又会出现错误789,解决办法是: 1. 检查IPSec服务是否开启,打开任务管理器---服务,查找“IKE and AuthIP IPSec keying module”和“IPSec policy”服务是否处于开启状态,若不是则开启。
新建一个DWORD(32位)的键值,键入名字“AssumeUDPEncapsulationContextOnSendRule”,然后修改键值为2。确定后退出注册表,重启机器。
现在输入用户名和密码,确认预共享密钥也已经输入好了就可以使用L2tp/IPSec连接到服务器了,正常的交互包如下:
常见错误:1. 客户端789错误: 通常是因为windows默认使用IPSec而服务器端又没有配置好造成,可以修改注册表添加并设置ProhibitIpSec来解决。 2. 客户端619或809错误: 通常是因为服务器端的l2tp服务不正常,确保服务器端是以根用户身份启动xl2tpd。 |
|