[原创]用mpd实现PPTP和L2TP类型的VPN_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 5588 | 回复: 1   主题: [原创]用mpd实现PPTP和L2TP类型的VPN        下一篇 
wulcan
版主
等级:中校
经验:1795
发帖:124
精华:0
注册:2014-3-19
状态:离线
发送短消息息给wulcan 加好友    发送短消息息给wulcan 发消息
发表于: IP:您无权察看 2014-11-28 9:16:23 | [全部帖] [楼主帖] 楼主

mpd是FreeBSD下的神器,借助netgraph,实现了内核级的接入,根据使用的情况,感觉性能要比openvpn好一些。
先大致了解一下vpn:
vpn最实现最简单的应当属于pptp了,不需要加密,速度非常好,所以大多数设备都支持pptp的vpn。但是受gre的制约,在nat穿越的时候会有问题,也就是一个局域网中,如果多台机器连接pptp的时候,就会出现断断续续的情况,甚至干脆连接不上,另外也有不少路由器对gre支持不好,windows客户端会反复出现619(不是691)错误。
l2tp稍微复杂一点,主要复杂在加密环节,标准的l2tp需要ipsec加密支持才行,在windows中,这是默认的配置,windows xp还需要使用第三方的ipsec工具才能使用ipsec,用起来非常麻烦。在拨号属性里面,l2tp的类型显示的也是“L2TP with IPSec”,所以在windows xp中,如果不使用ipsec,则要去掉ipsec的功能,方法是修改一个注册表项,我把它做成了一个reg文件,附在本文后面,需要的时候直接导入到注册表即可,注意要重新启动计算机才能生效。
书归正传,先来看mpd的配置,注意这个配置文件的格式,小节段(startup,default之类)要顶头写,前面不要有任何空格,其他的具体命令,则前面要有至少一个空格或tab键,刚开始使用mpd的时候很容易犯这个错误。

% cat /usr/local/etc/mpd5/mpd.conf
startup:
# 这部分是全局的配置,可以添加一些通用的配置。
# 本配置主要配置管理帐号,以及是否开启web和telnet的控制
# 一般log配置也放在此处,有时还会把网卡名写在这个地方
set user foo bar admin
set user foo1 bar1
# set console self 127.0.0.1 5005
# set console open
# set web self 0.0.0.0 5006
# set web open
log +auth +bund +chat +iface +ipcp +link
default:
# 默认加载项,本配置启用了pptp和l2tp
load pptp_server
load l2tp
pptp_server:
#定义给客户分配的IP地址段,相当于dhcp的地址池
set ippool add pool1 192.168.7.80 192.168.7.99
# Create clonable bundle template named B
create bundle template B
set iface idle 0
set iface enable tcpmssfix
set ipcp yes vjcomp
# 下面一行,定义了本机的地址,在客户接通时,会显示ppp对端为此IP地址
set ipcp ranges 192.168.6.193/32 ippool pool1
# 下面一行,定义给客户返回的dns服务器地址
set ipcp dns 202.102.152.3
set bundle enable compression
set ccp yes mppc
set mppc yes e40
set mppc yes e128
set mppc yes stateless
create link template L pptp
set link action bundle B
set link enable multilink
set auth enable internal
set link yes acfcomp protocomp
# 注意下面一行,windows客户必备
set link enable chap
set link keep-alive 10 60
# mtu比较低,目的是为了适应gre,gre是pptp传输时使用的协议
set link mtu 1460
# 配置监听于哪一个IP地址
set pptp self 221.2.1.8
# 允许接入,没有这句神马都是浮云了
set link enable incoming
l2tp:
# l2tp接入服务器的配置跟pptp接入服务器差不多,基本上一致。
# 这个配置是比较简单的配置
set ippool add pool1 192.168.1.50 192.168.1.99
create link template L1 l2tp
set l2tp iface igb0
set link no pap chap eap
set link enable pap
set link enable multilink
set auth enable internal
set link yes acfcomp protocomp
# set link no pap chap
set link enable chap
set link action bundle B1
set link enable incoming
create bundle template B1
set ipcp ranges 192.168.6.193/32 ippool pool1


这个没有使用数据库等radius认证,所以还要使用一个用户名密码的认证文件,默认是:

% cat /usr/local/etc/mpd5/mpd.secret
csh1 "123456"
csh2 "123456"
csh3 "123456" 192.168.7.2


上面的文件格式很简单,一行一个用户,中间用空格或tab分开,第一列是用户名,第二列是密码,注意要用引号引起来。第三列是可选的项目,表示分配的IP地址,如果省略,则从指定的地址池里面分配。
Windows使用注意事项,在拨号之前,可以指定vpn的类型,并且按情况决定是否使用“在远程网络上使用默认网关”,因为按上面的配置,vpn只能接入进来,还没有做NAT,所以还不能通过这台机器上网(也就是还不能翻墙哦!),要想实现NAT,可以参照前面的文章《用ipfw快速实现nat》。

北京联动北方科技有限公司

北京联动北方科技有限公司

该贴由hui.chen转至本版2014-11-28 15:27:10

  reg.rar (2014-11-28 09:16,  0.000 M)
该附件被下载的次数 1




赞(0)    操作        顶端 
koei
版主
等级:大校
经验:4180
发帖:7
精华:0
注册:2011-7-21
状态:离线
发送短消息息给koei 加好友    发送短消息息给koei 发消息
发表于: IP:您无权察看 2015-1-4 8:22:25 | [全部帖] [楼主帖] 2  楼

不错 北京联动北方科技有限公司



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论