1.1 VPN概述
VPN(全称Virtual Private Network)虚拟专用网络依靠ISP和其他的NSP,在公共网络中建立专用的数据通信网络的技术,可以为企业之间或者个人与企业之间提供安全的数据传输隧道服务。
在VPN中任意两点之间的连接并没有传统专网所需的端到端的物理链路,而是利用公共网络资源动态组成的,可以理解为通过私有的隧道技术在公共数据网络上模拟出来的和专网有同样功能的点到点的专线技术,所谓虚拟是指不需要去拉实际的长途物理线路,而是借用了公共 Intemet网络实现。
1.1.1 VPN隧道种类
SSH、LVS TUN(ipip)、PPTP、IPsec、OpenVPN
1.1.2 VPN企业应用分类
- 远程访问VPN服务
员工个人电脑通过远程拨号到企业办公网络,如公司的OA系统。
运维人员远程拨号到IDC机房,远程维护服务器等
- 企业内部网络之间VPN服务
公司分支机构的局域网和总公司的LAN之间的VPN连接。如各大超市之间的业务结算等。
- 互联网公司多IDC机房之间VPN服务
不同机房之间业务管理和业务访问,数据流动。
- 企业外部VPN服务
在供应商、合作伙伴的LAN和本公司的LAN之间建立的VPN服务。
- 访问国外的网站
翻墙业务应用。
1.2 常见隧道协议介绍
1.2.1 PPTP
点对点隧道协议(PPTP)是由包括微软和3Com等公司组成的PPTP论坛开发的一种点对点隧道协议,基于拨号使用的PPP协议,使用PAP或CHAP之类的加密算法,或者使用Microsoft的点对点加密算法 MPPE。其通过跨越基于TCP/IP的数据网络创建VPN实现了从远程客户端到专用企业服务器之间数据的安全传输。 PPTP支持通过公共网络(例如Intenet)建立按需的、多协议的、虚拟专用网络。PPTP允许加密IP通讯,然后在要跨越公司IP网络或公共IP网络(如 Intenet)发送的IP头中对其进行封装。典型的 Linux平台的开源软件为pptp。
PPTP(Point to Point Tunneling Protocol,点对点隧道协议)默认端口号:1723,工作在应用层,并且还要使用GRE协议,因此使用防火墙的时候不仅要开放1723端口,还要允许GRE协议通过。
PPTP协议是点对点隧道协议,其将控制包与数据包分开,控制包采用TCP控制。PPTP使用TCP协议,适合在没有防火墙限制的网络中使用,比较适合远程的企业用户拨号到企业内部进行办公等的应用。
提示:通俗的语言解释VPN中PPTP与L2TP协议的联系与区别:http://blog.oldboyedu.com/pptp-l2tp/
1.3 实现VPN的常见开源产品介绍
1.3.1 PPTP VPN
开源软件PPTP:最大优势Windows原生支持,不需要安装客户端;缺点是很多小区及网络设备不支持pptp导致无法访问,主要是不支持GRE协议。
1.3.2 SSL VPN
典型开源软件OpenVPN:不但适合用于pptp的场景,还适合对企业异地两地总分公司之间的VPN不间断按需连接,缺点是需要安装客户端。
1.3.3 IPSEC VPN
开源产品openswan:适合针对企业异地两地总分公司或多个IDC机房之间的VPN不间断按需连接,并且在部署使用上更简单方便。
1.3.4 几款开源产品的对比
- 易用性: PPTP > L2TP > OpenVPN
- 速度: PPTP > OpenVPN UDP > L2TP > OpenVPN TCP
- 安全性: OpenVPN > L2TP > PPTP
- 稳定性: OpenVPN > L2TP > PPTP
- 网络适用性: OpenVPN > PPTP > L2TP
1.4 部署PPTP VPN
1.4.1 系统环境准备
1.4.1.1 系统环境
[root@m01 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@m01 ~]# uname -r 2.6.32-696.el6.x86_64 [root@m01 ~]# getenforce Disabled [root@m01 ~]# service iptables status iptables: Firewall is not running.
1.4.1.2 查看系统是否开启了ppp
[root@m01 ~]# cat /dev/ppp cat: /dev/ppp: No such device or address
- 命令说明:
如果出现以上提示则说明ppp是开启的,可以正常架设pptp服务,若出现 Permission denied等其他提示,需要先去VPS面板里看看有没有enable ppp的功能开关,如果没有则需要发个消息给VPS提供商让他们开通PPP功能,否则100%无法成功配置PPTP。
1.4.1.3 开启系统内核转发
[root@m01 ~]# vim /etc/sysctl.conf 9 net.ipv4.ip_forward = 0 # 改为 9 net.ipv4.ip_forward = 1 # 或 [root@m01 ~]# sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g' /etc/sysctl.conf
# 重载系统内核设置 [root@m01 ~]# sysctl -p
1.4.2 安装PPTP
[root@m01 ~]# yum install -y pptpd # 需要有base和epel源
1.4.3 配置PPTP服务
1.4.3.1 设置内外网IP地址池
[root@m01 ~]# vim /etc/pptpd.conf # 公网IP:VPN服务器的公网地址 107 localip 10.0.0.61 # 内网IP地址池:分配给用户的IP地址,需要使用内网剩余的IP地址(即非内网服务器的IP地址) 108 remoteip 172.16.1.1-254 # 或 [root@m01 ~]# sed -i.bak '$a localip 10.0.0.61\nremoteip 172.16.1.1-254' /etc/pptpd.conf
1.4.3.2 设置PPTP连接用户名和密码
[root@m01 ~]# vim /etc/ppp/chap-secrets # 在文件最后追加 Leon * 123456 * # 或 [root@m01 ~]# sed -i.bak '$a Leon * 123456 *' /etc/ppp/chap-secrets
- 参数说明:
第一列:用户名
第二列:协议名称:pptpd等,*代表所有协议
第三列:密码
第四列:适用的地址段,*代表所有地址
1.4.4 启动PPTP服务
[root@m01 ~]# service pptpd start [root@m01 ~]# chkconfig pptpd on
1.4.4.1 查看启动日志
[root@m01 ~]# tail -3 /var/log/messages # 出现以下三行内容说明启动成功 Oct 16 10:59:34 m01 pptpd[60666]: MGR: connections limit (100) reached, extra IP addresses ignored Oct 16 10:59:34 m01 pptpd[60667]: MGR: Manager process started Oct 16 10:59:34 m01 pptpd[60667]: MGR: Maximum of 100 connections available
1.4.4.2 查看PPTP端口(1723)和协议(TCP)
[root@m01 ~]# netstat -lntup | grep pptp tcp 0 0 0.0.0.0:1723 0.0.0.0:* LISTEN 60667/pptpd
1.5 PPTP VPN优化
1.5.1 配置DNS地址
[root@m01 ~]# vim /etc/ppp/options.pptpd ms-dns 10.0.0.254
1.5.2 设置最大传输单元(MTU值)
[root@m01 ~]# vim /etc/ppp/ip-up 17 ifconfig ppp0 mtu 1472
1.5.3 上下线日志审计
1.5.3.1 上线日志审计
[root@m01 ~]# vim /etc/ppp/ip-up # 每个用户登录的时候都执行一遍该脚本 19 echo "$PEERNAME 分配IP: $5 登录IP: $6 登录时间: `date -d today +%F_%T`" >> /var/log/pptpd.log # 或 [root@m01 ~]# sed -i.bak '$i echo "$PEERNAME 分配IP: $5 登录IP: $6 登录时间: `date -d today +%F_%T`" >> /var/log/pptpd.log' /etc/ppp/ip-up
1.5.3.2 下线日志审计
[root@m01 ~]# vim /etc/ppp/ip-down # 每个用户下线的时候都执行一遍该脚本 18 echo "$PEERNAME 下线IP: $6 下线时间: `date -d today +%F_%T`" >> /var/log/pptpd.log # 或 [root@m01 ~]# sed -i.bak '$i echo "$PEERNAME 下线IP: $6 下线时间: `date -d today +%F_%T`" >> /var/log/pptpd.log' /etc/ppp/ip-down
1.5.3.3 查看日志信息
[root@m01 ~]# tail -f /var/log/pptpd.log Leon 下线IP: 10.0.0.253 下线时间: 2017-10-16_12:06:27 Leon 分配IP: 172.16.1.1 登录IP: 10.0.0.253 登录时间: 2017-10-16_12:06:39 Leon 下线IP: 10.0.0.253 下线时间: 2017-10-16_13:29:34 Leon 分配IP: 172.16.1.1 登录IP: 10.0.0.253 登录时间: 2017-10-16_18:08:44
1.5.4 设置防火墙规则
可能会用到的防火墙规则:
iptables -A INPUT -p gre -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -o eth0 -j ACCEPT iptables -A FORWARD -d 192.168.0.0/24 -i eth0 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE # 上述的IP段192.168.0.1/24需要修改成/etc/pptp.conf中配置的localip和remoteip所在地IP段。 /etc/init.d/iptables save # 保存防火墙配置
1.6 Windows客户端连接VPN
1.6.1 创建VPN连接
1.6.2 设置连接VPN不断外网
1.6.3 测试连通性
