分享
 
 
 

利用mpd搭建基于PPTP协议的企业级VPN

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

一直以来都是追求安全性第一,所以搭建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

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

#

# 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

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

#

# 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 mtu 1496

inet 192.168.1.254 -- 192.168.2.254 netmask 0xffffffff

GW-B # ifconfig ng0

ng0: flags=88d1 mtu 1496

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

#!/bin/sh

PREFIX="/usr/local"

case "$1" in

start)

if [ -x ${PREFIX}/sbin/mpd -a -f ${PREFIX}/etc/mpd/mpd.conf ]; then

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有