转自:http://www.cnblogs.com/kevingrace/p/6329722.html?utm_source=itdadao&utm_medium=referral
PPTP(点到点隧道协议)是一种用于让远程用户拨号连接到本地的ISP,通过因特网安全远程访问公司资源的新型技术。它能将PPP(点到点协议)帧封装成IP数据包,以便能够在基于IP的互联网上进行传输。PPTP使用TCP(传输控制协议)连接的创建,维护,与终止隧道,并使用GRE(通用路由封装)将PPP帧封装成隧道数据。被封装后的PPP帧的有效载荷可以被加密或者压缩或者同时被加密与压缩。常见的PPTP都是在路由器上配置的,不过linux下也可以实现PPTP服务器的功能。别的也不多说了,下面直接记录下Centos下部署PPTP的VPN环境过程:
1)验证PPP
用cat命令检查是否开启ppp,一般服务器都是开启的,除了特殊的VPS主机之外。
[root@bastion-IDC ~]# cat /dev/ppp
cat: /dev/ppp: No such device or address
cat出现上面结果,则说明ppp是开启的,可以正常的配置pptp了。
2)安装PPP
[root@bastion-IDC ~]# yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
[root@bastion-IDC ~]# yum -y install ppp iptables
iptables一般情况默认都是系统装好后就已经有了,安装iptables是为了做NAT,让PPTP客户端能够通过PPTP服务器上外网。
3)安装PPTP(这里选择rpm包安装,也可以选择源码包安装)
下载地址:https://pan.baidu.com/s/1dFIGpyx
提取密码:cefm
[root@bastion-IDC ~]# rpm -ivh pptpd-1.3.4-2.el6.x86_64.rpm
4)配置pptp
/etc/pptpd.conf是pptpd的基本配置文件;
[root@bastion-IDC ~]# vim /etc/pptpd.conf
.......
option /etc/ppp/options.pptpd //指定pptpd扩展属性配置文件options.pptpd 的位置
logwtmp
debug //开启调试模式,有关 pptpd 的信息和错误都会记录在 /var/logs/message 中,方便排错和调试
stimeout 30 //设置客户端连接 pptpd server 时的最长连接等待时间(连接超时时间),30 秒
localip 192.168.1.5 //pptp服务器端IP,可以设置为服务器上绑定的任意一个IP地址(比如这里设置内网ip)
remoteip 192.168.100.101-150 //客户端成功连接VPN后获取的IP地址范围(可以和pptp服务器在同一内网段内,但是建议不要设置和PPTP服务器内网一样的网段)
[root@bastion-IDC ~]# vim /etc/ppp/options.pptpd
......
name pptpd //pptpd server 的名称(这个很重要,在下面添加VPN账户配置里会用到)
debug //开启调试模式,相关信息同样记录在/var/logs/message中
ms-dns 8.8.8.8 //修改成为VPN用户分配的dns地址
ms-dns 8.8.4.4
5)添加vpn的帐号和密码
1
2
3
4
|
[root@bastion-IDC ~]
# vim /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
xqsj pptpd xqsj@123 *
|
解释:
一行添加一个账号,每个帐号需要添加的4个字段,分别为:用户名、服务、密码、分配的ip地址(如果IP为*,则表示随机分配,分配范围采用pptp.conf中的设置)
6)开启系统的ip路由转发功能
[root@bastion-IDC ~]# echo 1 > /proc/sys/net/ipv4/ip_forward //临时开启,重启服务器后失效
[root@bastion-IDC ~]# vim /etc/sysctl.conf //永久开启
.....
net.ipv4.ip_forward = 1
[root@bastion-IDC ~]# sysctl -p
7)启动服务
[root@bastion-IDC ~]# /etc/init.d/pptpd start
Starting pptpd: [ OK ]
[root@bastion-IDC ~]# lsof -i:1723 //PPTP服务默认端口是1723
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
pptpd 19714 root 6u IPv4 33130051 0t0 TCP *:pptp (LISTEN)
将服务配置为开机自动启动
[root@bastion-IDC ~]# chkconfig pptpd on
8)配置iptables转发
[root@bastion-IDC ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j SNAT --to-source 133.110.186.55 //确保客户机连上VPN后能正常上网
[root@bastion-IDC ~]# iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT
[root@bastion-IDC ~]# /etc/init.d/iptables save
[root@bastion-IDC ~]# /etc/init.d/iptables restart
上面命令表示:
让192.168.100.0这个段的ip地址(即pptpd.conf配置的remoteip地址段)可以通过133.110.186.55这个公网IP访问外网。
其中133.110.186.55是pptp部署机的公网ip地址,否则拨上来的VPN用户只能访问内网。
开通pptp服务端口1723访问
9)接着就可以在客户端新建VPN(加密方式为默认)连接来测试了。(下面是win10下的操作记录)
查看客户端连接成功后的ip信息,是否正常上网等
一定要勾选上“在远程网络上使用默认网关”的选项,确保成功连接VPN后能正常上网,并且出口ip是PPTP服务器的外网ip(还有关闭客户机的防火墙)
-------------------------------------------------------------------------------------------------------
VPN环境部署好,并待客户机远程连接成功后,PPTP服务器上会有虚拟网卡PPP0的信息:
........
inet addr:192.168.1.5 P-t-P:192.168.100.101 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 Metric:1
RX packets:213 errors:0 dropped:0 overruns:0 frame:0
collisions:0 txqueuelen:3