CentOS/Fedora 搭建 PPTP VPN 服务器

PPTP 全称为 Point-to-Point Tunneling Protocol,意为点对点隧道协议。PPTP 通过跨基于 IP 的数据网络创建 VPN 连接来实现从远程计算机到专用服务器的安全数据传输。PPTP 支持通过公共网络(例如 Internet)建立按需的、多协议的虚拟专用网络。目前,包括 Mac OS、Windows、Linux 等几乎所有平台均支持 PPTP 连接,是目前使用最广泛,最普遍的虚拟专用网络解决方案,通用性极高。

本文将介绍,如何在 CentOS 以及 Fedora 上,通过下载 PPTP、PPP 源码,编译安装配置一台 PPTP VPN 服务器。编译安装虽然麻烦,但同时适合 RHEL5 或 RHEL6 的32位和64位版本。

注意:基于 OpenVZ 虚拟化技术的 VPS 需要开启 tun/tap device 才能正常使用,购买 VPS 时请先咨询服务商是否支持开启 tun/tap。

以下方法同时支持所有版本的 CentOS 和 Fedora,只需要直接复制粘贴进到终端中即可。

第一步:更新系统(这步可以不做,尤其在vps上要慎重,升级linux内核会造成)

yum -y update
yum -y upgrade

第二步:安装依赖

yum -y install iptables libcap libcap-devel libpcap libpcap-devel \
autoconf make ncurses-devel bison automake flex lsof perl \
sed vim-enhanced awk gcc g++ gcc-c++ libtool libtool-ltdl-devel

第三步:下载并从源码编译所需程序

1.编译安装 pptp

mkdir -p ~/tmp/pptp
cd ~/tmp/pptp
wget https://vpseek.googlecode.com/files/pptpd-1.3.4.tar.gz
tar zxvf pptpd-1.3.4.tar.gz
cd pptpd-1.3.4
./configure --enable-bcrelay --with-libwrap
make
make install
cd plugins/
unalias cp
mkdir -p /usr/lib/pptpd
cp pptpd-logwtmp.so /usr/lib/pptpd/

2.编译安装 ppp

mkdir -p ~/tmp/ppp
cd ~/tmp/ppp
wget https://vpseek.googlecode.com/files/ppp-2.4.5.tar.gz
tar zxvf ppp-2.4.5.tar.gz
cd ppp-2.4.5
./configure
make
make install

第四步:写入配置文件

1.创建 pptpd 配置文件

cat >/etc/ppp/options.pptpd<<EOF
name pptp
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 4.2.2.1
ms-dns 4.2.2.2
lock
nobsdcomp
novj
novjccomp
nologfd
EOF

2.创建 ppp 配置文件

cat >/etc/pptpd.conf<<EOF
ppp /usr/local/sbin/pppd
logwtmp
pidfile /var/run/pptpd.pid
option /etc/ppp/options.pptpd
connections 253
localip 10.0.10.1
remoteip 10.0.10.2-254
EOF

3.修改 sysctlt.conf 文件

sed -i 's/net.ipv4.ip_forward/#net.ipv4.ip_forward/g' /etc/sysctl.conf
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
mknod /dev/ppp c 108 0

[注] 这段命令前两行其实是注释掉 net.ipv4.ip_forward=0 一行,再加一行net.ipv4.ip_forward=1. 也就是将该选项设置为1,打开转发功能。

第五步:设置 IPTables 转发规则

iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -j SNAT --to-source 你的IP地址
iptables-save

第五步:设置开机启动

1.创建开机脚本

cat >/etc/init.d/pptpd<<EOF
#!/bin/sh
#
# Startup script for pptpd
#
# chkconfig: - 85 15
# description: PPTP server
# processname: pptpd
# config: /etc/pptpd.conf
# Source function library.
. /etc/rc.d/init.d/functions
# See how we were called.
case "\$1" in
start)
    echo -n "Starting pptpd: "
    if [ -f /var/lock/subsys/pptpd ] ; then
            echo
            exit 1
    fi
    daemon /usr/local/sbin/pptpd
    echo
    touch /var/lock/subsys/pptpd
    ;;
stop)
    echo -n "Shutting down pptpd: "
    killproc pptpd
    echo
    rm -f /var/lock/subsys/pptpd
    ;;
status)
    status pptpd
    ;;
condrestart)
if [ -f /var/lock/subsys/pptpd ]; then
    \$0 stop
    \$0 start
fi
;;
reload|restart)
    \$0 stop
    \$0 start
    echo "Warning: a pptpd restart does not terminate existing "
    echo "connections, so new connections may be assigned the same IP "
    echo "address and cause unexpected results.  Use restart-kill to "
    echo "destroy existing connections during a restart."
    ;;
restart-kill)
    \$0 stop
    ps -ef | grep pptpd | grep -v grep | grep -v rc.d | awk '{print \$2}' | uniq | xargs kill 1> /dev/null 2>&1
    \$0 start
    ;;
*)
    echo "Usage: \$0 {start|stop|restart|restart-kill|status}"
    exit 1
esac
exit 0
EOF

2.开机自动启动

chmod +x /etc/init.d/pptpd
chkconfig pptpd on
service pptpd start

第七步:生成秘钥文件

1.生成 /etc/ppp/chap-secrets ,定义用户名为 user 密码为 pass

cat >/etc/ppp/chap-secrets<<EOF
user * pass *
EOF

2.最好加上权限

chmod 600 /etc/ppp/chap-secrets

最后,你可以开始连接了!

另外,如果linux启用了iptables,要允许vpn通过,pptp vpn的端口为tcp 1723

yum install pptp-setup
本文转载自:CentOS/Fedora 搭建 PPTP VPN 服务器(编译版)  ,有小幅改动。

from  http://www.vpseek.com/newbies-guides/compile-pptp-vpn-server-on-centos-and-fedora.html

发表评论?

0 条评论。

发表评论