实验名称:构建基于Linux平台的开源VPN服务器
实验目标:一、基于Linux配置poptop VPN与管理
二、基于Linux配置Openswan VPN与管理
VPN的功能:加密数据
信息认证和身份认证
访问控制
多协议支持
实验一:配置poptop VPN 服务器
开源PPTP服务器产品Poptop特性
微软兼容的认证和加密(MSCHAPv2,MPPE40-128位RC4加密) 。
支持多个客户端连接 。
使用RADIUS插件无缝集成到一个微软网络环境中 。
和Windows 95/98/Me/NT/2000/XP PPTP客户端共同工作 。
和Linux PPTP客户端共同工作 。
Poptop在GNU通用公共许可下是,并仍将是完全免费。
实验拓扑如下:

根据拓扑搭建好实验环境
在这里不做演示
Poptop VPN 软件包有四个分别如下
poptop-vpn软件包
n dkms-2.0.5-1.noarch.rpm
n kernel_ppp_mppe-0.0.5-2dkms.noarch.rpm
n ppp-2.4.3-5.rhel4.i386.rpm
n pptpd-1.3.0-0.i386.rpm
下载网址
http://prdownloads.sourceforge.net/poptop
官方网站
http://www.poptop.org
Poptop VPN服务器的配置步骤大概分为下面几步、
配置主配置文件
配置账号文件
打开linux内核的路由功能
启动和停止vpn服务
pptp-vpn客户端设置:
通过“网上邻居”来设置客户端
测试,通过VPN访问内部网络
实验具体步骤
实验环境搭建好以后,就可以实验了、
现在分别来安装这四个软件包


注意:下面这个软件包ppp-2.4.3-5需要升级安装

再来安装最后一个软件包

所有的包安装完成、然后来修改配置文件
第一个要修改的配置文件是 /etc/pptpd.conf
#指定pptp使用的选项文件
option /etc/ppp/options.pptpd
#把所有的debug信息写入系统日志/var/log/messages
debug
#使用/var/log/wtmp记录客户连接和断开。
logwtmp
#服务器VPN虚拟接口将分配的IP地址
localip 10.100.1.1
#客户端VPN连接成功后将分配的IP。注意这里一共指定了36个IP地址,如果又超过36个客户进行连接时,超额的客户将无法连接成功。
remoteip 10.100.0.200-210,10.100.0.230-254
注意:为了安全性起见,localip和remoteip尽量不要同一个网段。
![]()


然后保存退出
修改第二个配置文件/etc/ppp/option.pptpd
![]()
![]()

这个大概不需要修改什么、
第三个要修改的是 /etc/ppp/chap-secrets
![]()

保存退出

给VPN服务器开启路由功能

然后再客户机上创建一个VPN连接、然后登陆




可以访问局域网内的web服务器
然后用yang登录、这个用户是指定ip 1.1.1.1




在web服务器上查看、1.1.1.1访问了自己、也就是yang。这里,有个问题刘翰老师说给用户分的ip不在局域网内就不能访问内网的服务器的、但是这里可以访问、还需要以后在证明。

Poptop VPN就做到这里、
实验二:
基于Linux配置openswan VPN
实验拓扑

OpenSWan有两种连接方式:
1. Network-To-Network方式
顾名思义,Network-To-Network方式是把两个网络连接成一个虚拟专用网络。要实现此种连接方式,要满足以下两个条件:
I. 每个子网各自拥有一台安装有OpenSWan的主机作为其子网的出口网关;
II.每个子网的.IP段不能有叠加
2. Road Warrior方式
当使用Network-To-Network方式时,作为每个子网网关的主机不能像子网内部主机那样透明访问远程子网的主机,Road Warrior方式正是为这种情况而设计的,连接建立后,就可以连接到远程的网络了。
以下操作只需在left opensan 和right opensan上配置

开启两个opensan的路由功能
![]()
2.修改内核参数:vi /etc/sysctl.conf 将下面两项:
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
改为:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
执行以下命令使设置生效:
sysctl -p


在两边的opensan上都做nat转换

下来安装opensan

释放
![]()

![]()

![]()

验证安装
执行下面的命令验证OpenSWan是否正确安装
ipsec --version
如果程序正确安装,此命令将显示以下三种可能结果:
如果已加载的IPsec stack是NETKEY,显示如下
Linux Openswan U2.4.7/K2.6.9-42.EL (netkey)
See `ipsec --copyright' for copyright information.
如果已加载的IPsec stack是KLIPS,显示如下
Linux Openswan 2.4.7 (klips)
See `ipsec --copyright' for copyright information.
如果没有加载任何IPsec stack,显示如下
Linux Openswan U2.4.7/K(no kernel code presently loaded)
See `ipsec --copyright' for copyright information.
我的机子出现没有安装,须重启


重启后变为netkey 。模块已加载

现在来配置opensan
1. OpenSWan主要配置文件
/etc/ipsec.secrets 用来保存private RSA keys 和 preshared secrets (PSKs)
/etc/ipsec.conf 配置文件(settings, options, defaults, connections)
2. OpenSWan主要配置目录
/etc/ipsec.d/cacerts 存放X.509认证证书(根证书-"root certificates")
/etc/ipsec.d/certs 存放X.509客户端证书(X.509 client Certificates)
/etc/ipsec.d/private 存放X.509认证私钥(X.509 Certificate private keys)
/etc/ipsec.d/crls 存放X.509证书撤消列表(X.509 Certificate Revocation Lists)
/etc/ipsec.d/ocspcerts 存放X.500 OCSP证书(Online Certificate Status Protocol certificates)
/etc/ipsec.d/passwd XAUTH密码文件(XAUTH password file)
/etc/ipsec.d/policies 存放Opportunistic Encryption策略组(The Opportunistic Encryption policy groups)
给left opensan添加一条路由
![]()
在reght opensan也要添加路由如下图

生成key

重定向到left

查看left公钥

以上的配置也要在right opensan上也做一遍、个别处有所不同、然后把right opensan上的公钥传送到left opensan上

传送到了left opensan 的/root下了
然后回到left opensan上
修改ipsec主配置文件
![]()



随后看下面的right部分

最后一步,别忘了去掉注释



说明运行正常
这里需说明下,当left opensan 给 rightopensan传送公钥的时候把left opensan的ipsec.conf里面的所有东西要传送过去
scp /etc/ipsec.conf root@15.15.15.2:/etc/

传过去后不用改ipsec.conf
这里只是在left opensan 上做演示、但是我也同时在right opensan 做配置
现在实验已接近尾声、现在我们测试在right opensan下的pc ping left opensan下的pc然后再网关上抓包看是否是加密的

在left opensan上抓包、是以明文的方式传送的

我们现在启用opensan、
在left opensan上
先重启ipsec

在left opensan 和 right opensan 上手动执行连接
ipsec auto –up net-to-net
如果最后的输出行中出现 IPsec SA established,说明连接成功

得到这个实验效果可是苦了我、和朋友研究很长时间,经过排查最后才发现时没有修改主机名导致两台机子通信不加密、因为两台opensan的主机名一样、公钥的生存一部分是通过主机名生成的、,最后把主机名改了之后再重新生成了一个公钥、才成功的、
现在看实验效果

在left opensan上查看是否加密

是加密的、
但是right opensan ping left opensan 的时候就不加密了、

这里我就想不通、应该网关之间通信也加密才对 、
经过再次测试、VPN网关之间通信不加密、left opensan 的子网和eight opensan的子网通信才加密、、![]()