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 条评论。