环境测试:Centos 6.4

虚拟专用(×××)网络的功能是:在公用网络上建立专用网络,进行加密通讯。在企业网络中有广泛应用。×××网关通过对数据包的加密和数据包目标地址的转换实现远程访问。

#!/bin/bash
check_ok()
{
        if [ ! $? -eq 0 ];then
        echo "check error" && exit 1
        fi
}
echo -e "\033[33m------------------ Auto install *** -----------------------\033[0m"
cat << HELP
-----------------------------------------------------------
                用于环境 Centos 6.x                     
-----------------------------------------------------------                             
HELP
read -p "----------     将安装***,输入yes\no         -----------"  yes
if [ ! yes == $yes ];then
echo "no,取消操作,再见" && exit
fi
        dkmsurl=http://poptop.sourceforge.NET/yum/stable/packages/dkms-2.0.17.5-1.noarch.rpm
        kernelurl=http://poptop.sourceforge.net/yum/stable/packages/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
        pptdpurl_x86_64=http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.4.0-1.el6.x86_64.rpm
        pptpdurl_i686=http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.4.0-1.el6.i686.rpm
        dkms=dkms-2.0.17.5-1.noarch
        kernel=kernel_ppp_mppe-1.0.2-3dkms.noarch
        pptpd=pptpd-1.4.0-1.el6
        #这里默认是eth0 是外网 如果你的外网是eth1 就修改为ifconfig eth1
        ip=`ifconfig |awk -F[:a-Z" "]+ 'NR==2 {print $2}'`
        #随机15个密码
        passwd=$(date +%s | md5sum|head -c 15)
        cd /usr/local/src/
        yum install -y gcc ppp
        echo $?
        rpm -qa|grep $dkms
        #自动检测包是否存在
        if [ ! $? -eq 0 ];then
        wget $dkmsurl && rpm -ivh $dkms.rpm &&rm -rf $dkms.rpm
        fi
check_ok
        rpm -qa|grep $kernel
        if [ ! $? -eq 0 ];then
        wget $kernelurl && rpm -ivh $kernel.rpm &&rm -rf $kernel.rpm
        fi
check_ok
        #×××包
        rpm -qa|grep $pptpd
        if [ ! $? -eq 0 ];then
        uname -a|grep x86_64 && wget $pptdpurl_x86_64 && rpm -ivh $pptpd.x86_64.rpm &&rm -rf $pptpd.x86_64.rpm
        fi
        if [ ! $? -eq 0 ];then
        uname -a|grep i686 && wget $pptpdurl_i686 && rpm -ivh $pptpd.i686.rpm &&rm -rf $pptpd.i686.rpm
        fi
        if [ ! $? -eq 0 ];then
        echo -e "sorry,not your bag\download nurl:http://poptop.sourceforge.net/yum/stable/packages/" && exit
        fi
check_ok
        #这里是ip分配
echo "debug
ppp /usr/sbin/pppd
option /etc/ppp/options.pptpd
localip 192.168.1.1
remoteip 192.168.1.20-200" > /etc/pptpd.conf
        #这里是连接***时的用户和密码 * 就是代表允许所有IP
        echo "*** pptpd $passwd *" >> /etc/ppp/chap-secrets
        chkconfig pptpd on
        service pptpd start
check_ok
        #iptables 规则相关设置
        /sbin/iptables -t nat -F
        /sbin/iptables -I INPUT -p tcp --dport 1723 -j ACCEPT
        /sbin/iptables -I INPUT -p tcp --dport 47 -j ACCEPT
        /sbin/iptables -I INPUT -p gre -j ACCEPT
        /sbin/iptables -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356
        /sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to $ip
        #支持转发
        echo 1 > /proc/sys/net/ipv4/ip_forward
        sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf
        sysctl -p &>/dev/null
        #谷歌的DNS 在文件尾行加上一段
        sed -i '$a\ms-dns 8.8.8.8' /etc/ppp/options.pptpd
        sed -i '$a\ms-dns 8.8.4.4' /etc/ppp/options.pptpd
echo -e "\033[5;33m-------------Auto install *** yes-------------------------\033[0m"
        #随机5个密码
        echo "user:*** password:$passwd"


参考文章:http://blog.csdn.net/catoop/article/details/7537012O