首页 > 代码库 > accel-pptp 部署

accel-pptp 部署

accel-pptp 是 pptp-client 和 pptpd 的改进版,使用内核 pptp 模块,相比 raw socket 实现方式能提供更好的性能。
 
Ubuntu 12.04 上启用内核 pptp
内核 3.2+ 已经包含内核 pptp 模块
 
1. 编译 pppd 模块 
apt-get install ppp-dev cmake
 
git clone https://github.com/winterheart/accel-pptp.git
cd accel-pptp
cmake . -DPPP_PLUGIN_PATH=/usr/lib/pppd/2.4.5/
 
 
 
2. 修改  peer config file (for instance, /etc/ppp/peers/my_vpn):
  pty "pptp x.x.x.x ...."
  plugin "/usr/lib/pppd/2.4.5/pptp.so"
  pptp_server x.x.x.x
 
同时注释掉 peer config file 和 /etc/ppp/options.pptp 中的 lock 
 #lock
 
 
3. 启动 pptp VPN
pppd call my_vpn
 
 
 
RHEL 6 
RHEL6 因为内核版本才 2.6.32 所以并不包含内核 pptp 模块——2.6.36才自带。
1. 下载 accel-pptp 并解压
 
2. 进入 kernel/driver 目录编译内核模块
 
安装内核头文件
yum install kernel-headers  kernel-devel  ppp-devel
如果没有用 yum update kernel 将内核升级到最新,则和内核头文件会有小版本不匹配。此时编译会出现找不到头文件,需
    cd /lib/modules/2.6.32-431.1.2.0.1.el6.x86_64
    rm build
    ln -s ../../../usr/src/kernels/2.6.32-504.1.3.el6.x86_64/ build
 
编辑 pptp.c , 47行 取消对宏 CONFIG_GRE 的注释(将 pptp 模块注册到GRE协议里面,默认是注册到 inet 里面,此模式下总是会注册失败,如果再尝试卸载 pptp 模块则会机器无响应。)
     #define CONFIG_GRE
然后编译
    make
 
3. 进入 pppd_plugin 目录编译 pppd 模块 pptp.so 
    ./configure 
    make
    cp .libs/pptp.so /usr/lib64/pppd/2.4.5/
 
4. 进入 pptpd-1.3.3 目录编译 pptpd
    ./configure 
    make
    make install # 安装到 /usr/local/sbin
 
拷贝配置样例。如果本机已经通过 yum 安装过 pptpd,则保留已有配置即可 
    cp samples/pptpd.conf /etc/
    cp samples/options.pptpd /etc/ppp/
 
5. 内核模块开机自动加载
    cp pptp.ko  /lib/modules/`uname -r`/extra/    
    depmod -a                  # 对所有模块依赖关系,这样 modprobe 才能找到模块,否则必须用 insmod 加载
 
    echo modprobe pptp >> /etc/rc.modules
    chmod +x /etc/rc.modules
 
5. 启动 pptpd 服务
    /usr/local/sbin/pptpd

accel-pptp 部署