利用mpd搭建基于PPTP协议的企业级VPN
一直以来都是追求安全性第一,所以搭建VPN只考虑基于IPSec的。IPSec的优点当然很多,极高的安全性,灵活的配置,多种加密/签名算法,适用于各种应用场合,等等。但其缺点是由于对高安全性的要求,使得其运算量比较大,也就是说在大流量通讯时如果使用IPSec来对数据进行加密,硬件要求较高。因此基于IPSec的VPN适用于对数据传输安全性要求高且拥有足够档次的硬件资源的关键应用、ISP/IDC应用或大型企业业务应用。
同时,由于IPSec目前在多种操作系统平台上的兼容性不一。类UNIX平台之间的IPSec通讯通常不会有什么问题,但与Windows平台进行IPSec会话时则往往由于双方对密钥协商的实现存在差异而失败。(使用SSH公司的Sential for Windows时通过一些trick操作可以成功。)
在由于上述因素使得搭建基于IPSec的VPN遇到不少困难时,我们可以考虑基于非IPSec的VPN技术,例如L2TP、PPTP、IPIP等。这些技术相当成熟且稳定,各大操作系统
基本上都支持它们,而且对硬件的性能要求较之IPSec低,特别适用中小型企业的VPN应用需求。
本文将通过一个实例,来讲解如何利用开放源代码(GNU)的mpd软件来搭建一个基于PPTP(Point-to-Point Tunnel Protocol)协议的VPN通道。
--[ 网络环境与拓扑结构 ]----
两端的防火墙网关均采用FreeBSD 4.5-Stable + IP Filter 3.4.27
[[The No.1 Picture.]]
--[ 安装 ]------------------
注:GW-A和GW-B的mpd软件包安装过程完全相同。
GW-A # cd /usr/ports/net/mpd
GW-A # make
GW-A # make install
这是FreeBSD ports的安装标准三步,最简单不过了。
如果是手工下载mpd软件包,步骤也差不多,只不过需要自己手工修改Makefile中的一
些参数而已。
--[ 配置 ]----
1、 确保系统支持netgraph和ng_*。可以修改内核编译配置文件将其编译到内核中,但缺省情况下它们通常都会被编译成内核模块,可以由内核自动加载。因此,只需确保/modules目录下包含以下内核模块:
netgraph.ko
ng_bpf.ko
ng_iface.ko
ng_ksocket.ko
ng_mppc.ko
ng_ppp.ko
ng_pptpgre.ko
ng_socket.ko
ng_vjc.ko
2、 确保系统的securelevel不大于零,否则无法加载内核模块。(如果将内核模块直接编译到内核中,则无此限制。)
GW-A # sysctl kern.securelevel
kern.securelevel: -1
3、 创建GW-A的/usr/local/etc/mpd.*配置文件。
GW-A # cd /usr/local/etc/mpd
GW-A # cat > mpd.conf << __EOF__
default:
load nsfocusvpn
nsfocusvpn:
new -i ng0 vpn vpn
set iface disable on-demand
set iface addrs 192.168.1.254 192.168.2.254
set iface idle 0
set iface route 192.168.2.0/24
set bundle disable multilink
set bundle authname "NSFLogin"
set bundle password "NSFPassword"
set link yes acfcomp protocomp
set link no pap
set link yes chap
# If remote machine is NT you need this..
# set link enable no-orig-auth
set link keep-alive 10 75
set ipcp yes vjcomp
set ipcp ranges 192.168.1.254/32 192.168.2.254/32
set bundle enable compression
set ccp yes mppc
set ccp yes mpp-e40
set ccp yes mpp-e128
set bundle enable crypt-reqd
set ccp yes mpp-stateless
__EOF__
GW-A # cat > mpd.links << __EOF__
#
# For our PPTP VPN connection to 192.168.2.0/24
#
nsfocusvpn:
set link type pptp
set pptp self 211.xxx.xxx.31
set pptp peer 202.yyy.yyy.25
set pptp enable originate incoming outcall
__EOF__
4、 创建GW-B的/usr/local/etc/mpd.*配置文件。
GW-B # cd /usr/local/etc/mpd
GW-B # cat > mpd.conf << __EOF__
default:
load nsfocusvpn
nsfocusvpn:
new -i ng0 vpn vpn
set iface disable on-demand
set iface addrs 192.168.2.254 192.168.1.254
set iface idle 0
set iface route 192.168.1.0/24
set bundle disable multilink
set bundle authname "NSFLogin"
set bundle password "NSFPassword"
set link yes acfcomp protocomp
set link no pap
set link yes chap
# If remote machine is NT you need this..
# set link enable no-orig-auth
set link keep-alive 10 75
set ipcp yes vjcomp
set ipcp ranges 192.168.2.254/32 192.168.1.254/32
set bundle enable compression
set ccp yes mppc
set ccp yes mpp-e40
set ccp yes mpp-e128
set bundle enable crypt-reqd
set ccp yes mpp-stateless
__EOF__
GW-A # cat > mpd.links << __EOF__
#
# For our PPTP VPN connection to 192.168.1.0/24
#
nsfocusvpn:
set link type pptp
set pptp self 202.yyy.yyy.25
set pptp peer 211.xxx.xxx.31
set pptp enable originate incoming outcall
__EOF__
5、配置防火墙规则,以允许VPN协商及通讯通过。
(注:以下为手工添加规则,待测试成功后需将这些规则写入启动配置文件中。)
GW-A # ipf -f -
@1 pass in quick on ng0 all
@2 pass in quick on xl0 proto tcp from 202.yyy.yyy.25 to 211.xxx.xxx.31 port = 1723 keep state
@3 pass in quick on xl0 proto gre all
@4 pass in quick on xl1 proto tcp/udp from 192.168.1.0/24 to 192.168.2.0/24 keep state
@5 pass in quick on xl1 proto icmp from 192.168.1.0/24 to 192.168.2.0/24 keep state
...
...
@1 pass out quick on ng0 all
@2 pass out quick on xl0 proto tcp from 211.xxx.xxx.31 to 202.yyy.yyy.25 port = 1723 keep state
@3 pass out quick on xl0 proto gre all
@4 pass out quick on xl1 proto tcp/udp from 192.168.2.0/24 to 192.168.1.0/24 keep state
@5 pass out quick on xl1 proto icmp from 192.168.2.0/24 to 192.168.1.0/24 keep state
...
...
GW-B # ipf -f -
@1 pass in quick on ng0 all
@2 pass in quick on xl0 proto tcp from 211.xxx.xxx.31 to 202.yyy.yyy.25 port = 1723 keep state
@3 pass in quick on xl0 proto gre all
@4 pass in quick on xl1 proto tcp/udp from 192.168.2.0/24 to 192.168.1.0/24 keep state
@5 pass in quick on xl1 proto icmp from 192.168.2.0/24 to 192.168.1.0/24 keep state
...
...
@1 pass out quick on ng0 all
@2 pass out quick on xl0 proto tcp from 202.yyy.yyy.25 to 211.xxx.xxx.31 port = 1723 keep state
@3 pass out quick on xl0 proto gre all
@4 pass out quick on xl1 proto tcp/udp from 192.168.1.0/24 to 192.168.2.0/24 keep state
@5 pass out quick on xl1 proto icmp from 192.168.1.0/24 to 192.168.2.0/24 keep state
...
...
--[ 启动和测试 ]--------
1、 启动mpd守护进程
/usr/local/sbin/mpd -b
(不带-b参数运行则mpd进程将在前台运行,会输出显示一些信息。)
2、 测试
首先检查PPTP通道是否已成功建立。
GW-A # ifconfig ng0
ng0: flags=88d1
inet 192.168.1.254 --> 192.168.2.254 netmask 0xffffffff
GW-B # ifconfig ng0
ng0: flags=88d1
inet 192.168.2.254 --> 192.168.1.254 netmask 0xffffffff
然后在192.168.1.0/24和192.168.2.0/24之间进行网络访问测试。
--[ 系统自启动配置 ]------------------
1、 将正确的ipfilter规则写入到启动时加载的规则文件中的适当位置。
2、 创建mpd守护进程的自启动和控制脚本:
GW-A # cat > /usr/local/etc/rc.d/mpd.sh << __EOF__
#!/bin/sh
PREFIX="/usr/local"
case "$1" in
start)
if [ -x ${PREFIX}/sbin/mpd -a -f ${PREFIX}/etc/mpd/mpd.conf ]; then
(cd ${PREFIX}/etc ; ${PREFIX}/sbin/mpd -b) ; echo mpd startt
ed
fi
;;
stop)
killall mpd ; echo mpd stopped
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` {start|stop|restart}" >&2
;;
esac
exit 0
__EOF__
GW-A # chmod u+x /usr/local/etc/rc.d/mpd.sh
GW-B的配置操作与GW-A完全相同。
最热门文章推荐:
>· 平面设计论文
>· 平面设计知识
>· 平面设计相关知识
>· 网站优化工具
>· 网站优化技巧
>· 专业网站优化
>· cs优化
>· 如何推广网站
下一篇:网络攻击的六大趋势
↓相关文章:
- · 网络攻击的六大趋势
- · 剖析入侵检测系统的安全性
- · 网上银行的安全性分析
- · 局域网的维护之网络安全
- · Linux系统中的防火墙技术及其应用
- · 关闭危险之门,防止黑客入侵
- · IT主管:网络安全从哪入手?
- · 三招助您简化网络安全
- · 电信业网络安全综合解决方案
- · Juniper网络安全方案餐饮连锁店应用
- · SecurityGateway3.0垃圾邮件的清道夫
- · WebShield和SpamKiller3000安全解决方案
- · 国税系统网络安全解决方案
- · 如何加强政府网络的全方位安全性?
- · 构建铜墙铁壁式的企业网络
- · 安全简单实用
- · 某市电信局网络安全解决方案
- · ICMP路由通告的安全问题描述及解决措施
- · 中国人民银行在广域网下的防病毒方案
- · 对安全项目的规划与管理
- · 银行网络安全系统技术方案
- · 网络安全与系统稳定性保障的解决方案
- · “网络巡警”保安全
- · 将安全触角延伸到每一角落——晓通网络商务楼用户宽带接入安全解决方案
- · 建筑立体防毒网——McAfee银行业防病毒方案
- · FENSTS网络安全整体解决方案
- · 政府上网,安全第一
- · 税务系统网络安全解决方案
- · 银行网络安全解决方案
- · 证券行业网络安全解决方案
- · 金融网络的安全分析及设计
- · 如何加强政府网络的安全
- · 网络安全综合解决方案
- · 趋势科技校园网安全方案
- · MiKey在网络办公中的安全解决方案
- · iGate易门访问控制安全解决方案
- · 瑞星专业化网络安全解决方案概述
- · 中联通讯信息安全体系之VPN解决方案
- · 网络安全整体解决方案
- · 格方网上银行系统安全解决方案
- · 电信行业网络安全解决方案(二)
- · 电信行业网络安全解决方案(一)
- · 江苏电信IP网网络安全解决方案
- · “黑客煞星”实现静态与动态平衡
- · 国内黑客高手的联系方法
- · 企业网安全分析
- · 防毒因模式而异
- · 如何选择防病毒系统
- · 安全方案面面观
- · 安全统一管理方案一览
- · 网络广告的优势与特点
- · 如何让你的网络广告更有效——网络广告策划策略探索
- · 网络广告效果已被认可发展前景颇为乐观
- · 3721上网助手拦截全部广告提升上网速度
- · 2003年中国网络广告十大盘点
- · 炼狱里的网络广告
- · 网络广告成大公司新宠05年将达80亿
- · 分析:2004弹出式广告已到生死关头
- · 弹出广告,效果才是硬道理?
- · 网络广告何时不再侵犯网民
- · 网络广告策划过程
- · 网络广告业的四大希望
- · 网络广告五步曲
- · 提高网络广告效果九要诀
- · 网络广告技巧
- · 网络广告的优势
- · 网络广告应如何计价
- · 如何让广告语深入人心
- · 捆绑”网络广告
- · 成功登录著名搜索引擎Yahoo!的技巧
- · 调查显示付费搜索已成为网络广告重要营收源
- · 关于网站推广采用的载体分析
- · 促销多打文化牌
- · Google小秘密
- · PR更新总结
- · 关于网站GooglePR与网站SEO
- · 电子商务中的支付问题
- · 网站推广十不要
- · 网站策划常识
- · 企业自助建站网站建设的利与弊

