🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# VPN之PPTP部署[6.x][7.x] [TOC] ## 一、环境准备 ### 1.系统信息 ```sh [root@xxx ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@xxx ~]# uname -r 3.10.0-693.el7.x86_64 [root@xxx ~]# hostname -I 10.0.0.61 172.16.1.61 ``` ### 2.防火墙、selinux ```sh sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 systemctl stop firewalld.service systemctl disable firewalld.service ``` ## 二、安装pptp ### 1.查看系统是否支持PPP 一般自己的系统支持,VPS需要验证。 ```sh [root@xxx ~]# cat /dev/ppp cat: /dev/ppp: No such device or address ``` 如果出现以上提示则说明ppp是开启的,可以正常架设pptp服务,若出现Permission denied等其他提示,你需要先去VPS面板里看看有没有enable ppp的功能开关,如果没有则需要发个消息给你的提供商,让他们帮你开通,否则就不必要看下去了,100%无法成功配置PPTP。 ### 2.设置内核转发 设置内核转发让你直接访问内网服务器 ```sh [root@xxx ~]# grep forward /etc/sysctl.conf net.ipv4.ip_forward = 0 [root@xxx ~]# sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g' /etc/sysctl.conf [root@xxx ~]# grep forward /etc/sysctl.conf net.ipv4.ip_forward = 1 [root@xxx ~]# sysctl -p ``` ### 3.安装PPTP ```sh #centos7 curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum -y install pptpd``` #centos6 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum -y install pptpd ``` ## 三、配置启动pptp ### 1.修改PPTP配置文件 ```sh sed -i '$a localip 10.0.0.62\nremoteip 172.16.1.100-110' /etc/pptpd.conf #添加本机公网IP(localip),分配VPN用户的内网网段(remoteip) #注意避开内网服务器已使用IP。 ``` ### 2.设置用户与密码 ```sh sed -i '2i noah * 123456 *' /etc/ppp/chap-secrets ``` 在/etc/ppp/chap-secrets文件第二行插入"oldboy * 123456 *"内容 ### 3.启动pptp ```sh # 1)centos6 [root@xxx ~]# /etc/init.d/pptpd start Starting pptpd: [ OK ] # 2)centos7 [root@xxx ~]# systemctl start pptpd.service # 3)验证 [root@xxx ~]# netstat -tunlp|grep 1723 tcp 0 0 0.0.0.0:1723 0.0.0.0:* LISTEN 26574/pptpd ``` ### 4.通过windows客户端连接VPN 控制面板\网络和Internet\网络和共享中心,注意配置了vpn后,所有流量都会走vpn,会导致无法上网,需要取消如下位置的设置 ![mark](http://noah-pic.oss-cn-chengdu.aliyuncs.com/pic/20200308/170509417.png) ## 四、VPN案例 ### 1.记录登录用户名日志 通过修改up和down脚本,使vpn客户端上线或下线后,都记录日志并写入指定日志文件中 1)up脚本修改内容 ```sh [root@xxx ~]# cat /etc/ppp/ip-up ...... echo "$PEERNAME 分配IP:$5 登录IP:$6 登录时间:`date -d today +%F_%T`" >>/var/log/pptpd.log exit 0 ``` 2)down脚本修改如下内容 ```sh [root@xxx ~]# cat /etc/ppp/ip-down ...... echo "$PEERNAME 下线IP:$6 下线时间:`date -d today +%F_%T`" >>/var/log/pptpd.log exit 0 ``` ### 2.客户端互联 1. 需求描述 子公司内部只有一台服务器,只有内网地址,没有公网IP,但可以访问公网。而且所有网络设备都归总公司管辖,子公司没有合理理由无法申请。公司内部也有VPN服务器,但VPN帐号也需要申请。在此种场景,如何让外部人员访问内网服务器? 2. 处理方式 在外部有公网IP的机器上部署vpn服务,内网服务器拨号登录vpn,外部人员也登录vpn。只要vpn服务器不禁止客户端互联,外部用户就能访问内部服务器。 3. 软件建议 建议使用OpenVPN,比较稳定 OpenVPN的参数: client-to-client允许多个VPN client互相通信 pptp服务器上不开启防火墙,客户端能够互相访问,当然需要注意windows客户端的防火墙是否开放。