VPN 介绍

虚拟私人网络(英语:Virtual Private Network,缩写为VPN)是一种常用于连接中、大型企业或团体与团体间的私人网络的通讯方法。虚拟私人网络的讯息透过公用的网络架构(例如:互联网)来传送内部网的网络讯息。它利用已加密的通道协议(Tunneling Protocol)来达到保密、发送端认证、消息准确性等私人消息安全效果。这种技术可以用不安全的网络(例如:互联网)来发送可靠、安全的消息。需要注意的是,加密消息与否是可以控制的。没有加密的虚拟专用网消息依然有被窃取的危险。

VPN的实质就是利用加密技术在公用网上面封装出一个数据通讯隧道。
图片

vpn分类

根据不同的划分标准,VPN可以按几个标准进行分类划分:

  • 按VPN的协议分类:
    VPN的隧道协议主要有三种,PPTP、L2TP和IPSec,其中PPTP和L2TP协议工作在OSI模型的第二层,又称为二层隧道协议;IPSec是第三层隧道协议。
  • 按VPN的应用分类:
    • Access VPN(远程接入VPN):客户端到网关,使用公网作为骨干网在设备之间传输VPN数据流量;
    • Intranet VPN(内联网VPN):网关到网关,通过公司的网络架构连接来自同公司的资源;
    • Extranet VPN(外联网VPN):与合作伙伴企业网构成Extranet,将一个公司与另一个公司的资源进行连接。
  • 按所用的设备类型进行分类:
    网络设备提供商针对不同客户的需求,开发出不同的VPN网络设备,主要为交换机、路由器和防火墙:
    • 路由器式VPN:路由器式VPN部署较容易,只要在路由器上添加VPN服务即可;
    • 交换机式VPN:主要应用于连接用户较少的VPN网络;
  • 按照实现原理划分:
    • 重叠VPN:此VPN需要用户自己建立端节点之间的VPN链路,主要包括:GRE、L2TP、IPSec等众多技术。
    • 对等VPN:由网络运营商在主干网上完成VPN通道的建立,主要包括MPLS、VPN技术。

VPN的实现方式

常用的有以下四种

  • VPN服务器:在大型局域网中,可以在网络中心通过搭建VPN服务器的方法来实现。
  • 软件VPN:可以通过专用的软件来实现VPN。
  • 硬件VPN:可以通过专用的硬件来实现VPN。
  • 集成VPN:很多的硬件设备,如路由器,防火墙等等,都含有VPN功能,但是一般拥有VPN功能的硬件设备通常都比没有这一功能的要贵。

搭建pptp

检查系统是否支持ppp

1
2
[root@szl ~]# cat /dev/ppp
cat: /dev/ppp: 没有那个设备或地址

如果出现以上提示则说明ppp是开启的,可以正常架设pptp服务,若出现Permission denied等其他提示,你需要先去VPS面板里看看有没有enable ppp的功能开关。

安装PPP

1
yum install ppp

安装pptpd

在安装PPTPD服务之前,需要先更新一下yum源
3.1 安装wget

1
yum install -y wget

3.2 添加EPEL源

1
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

3.3 安装epel源

1
rpm -ivh epel-release-latest-7.noarch.rpm

3.4 检查是否添加到源列表中

1
yum repolist

3.5 更新源列表

1
yum -y update 

3.6 安装PPTPD

1
yum install -y pptpd

配置文件

1
2
3
4
5
6
7
8
9
10
11
12
#修改dns信息
vim /etc/ppp/options.pptpd

# Network and Routing

# If pppd is acting as a server for Microsoft Windows clients, this
option allows pppd to supply one or two DNS (Domain Name Server)
# addresses to the clients. The first instance of this option
# specifies the primary DNS address; the second instance (if given)
# specifies the secondary DNS address.
ms-dns 114.114.114.114
ms-dns 8.8.8.8

将它更改为你的dns服务地址(此处为百度和谷歌的dns)

1
2
ms-dns 180.76.76.76
ms-dns 8.8.8.8

vpn 账户密码

设置 VPN账号 + 服务类型 + VPN密码 + IP

1
2
3
4
5
6
vim /etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client server secret IP addresses
123 pptpd 012345 *
6 * 123456 *

账户123密码012345

设置最大传输单元

1
2
3
vim /etc/ppp/ip-up

在命令符 [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local “$@” 后面添加 ifconfig ppp0 mtu 1472

配置pptp配置文件

1
2
3
4
5
6
7
8
9
vim /etc/pptpd.conf

localip 10.0.0.62

remoteip 172.16.1.100-110

localip ---本机公网ip地址

remoteip ---分配给客户端的地址,一般是内网网段地址

打开内核的ip 转发功能

1
2
3
4
vim /etc/sysctl.conf

编辑配置文件,添加 net.ipv4.ip_forward = 1 的配置,保存后退出。
运行 sysctl -p 使修改后的参数生效。

设置开机启动

1
2
3
4
5
6
# 启动pptp服务
sysyemctl start pptpd
# 重启PPTP服务
systemctl restart pptpd
# 配置开机自启
systemctl enable pptpd.service

打开防火墙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
开启47及1723端口:
firewall-cmd --zone=public --add-port=47/tcp --permanent
firewall-cmd --zone=public --add-port=1723/tcp --permanent

允许防火墙伪装IP:
firewall-cmd --zone=public --add-masquerade

允许gre协议:
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p gre -j ACCEPT

设置规则允许数据包由eth0和ppp+接口中进出
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -o eth0 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o ppp+ -j ACCEPT

设置转发规则,从源地址发出的所有包都进行伪装,改变地址,由eth0发出:(192.168.0.0内网地址,子网地址前两位)
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 192.168.0.0/24

重启服务器:
firewall-cmd --reload
systemctl restart pptpd

日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1、上线日志
vim /etc/ppp/ip-up

在[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@" 后加上


echo "$PEERNAME 分配IP: $5 登录IP: $6 登录时间: `date -d today +%F_%T`" >> /var/log/pptpd.log

/2、下线日志
vim /etc/ppp/ip-down

在/etc/sysconfig/network-scripts/ifdown-post --realdevice ${REALDEVICE} \
ifcfg-${LOGDEVICE}
后加上

echo "$PEERNAME 下线IP: $6 下线时间: `date -d today +%F_%T`" >> /var/log/pptpd.log

客户端验证

1.点击windows10的“设置”-然后点击“网络和Internet”
图片
2.在“VPN”选项中,点击“添加VPN连接”
图片
3.弹出“添加VPN连接”界面后,需要输入VPN账号信息
图片
4.返回“VPN”界面,选择刚刚创建的VPN连接
图片
5.输入VPN的账号密码
图片
6.测试VPN是否连接成功
图片