×××是虚拟专用网络的缩写,其原理是在公用网络的基础上建立专用网络,并对传输的数据进行加密。×××的隧道协议主要有以下几种(默认端口号:1723)和SSL ×××,其中PPTP和L2TP协议工作在模型的第二层,又称为二层隧道协议;IPSec是第三层隧道协议;SSL ×××则在应用层实现。

    百度对于×××工作原理的解释如下:

1 通常情况下,采取双网卡结构,外网卡使用公网IP接入。

2 网络一(假定为公网internet)的终端A访问网络二(假定为公司内网)的终端B,其发出的访问数据包的目标地址为终端B的内部IP地址。

3 网络一的×××网关在接收到终端A发出的访问数据包时对其目标地址进行检查,如果目标地址属于网络二的地址,则将该数据包进行封装,封装的方式根据所采用的×××技术不同而不同,同时×××网关会构造一个新×××数据包,并将封装后的原数据包作为×××数据包的负载,×××数据包的目标地址为网络二的×××网关的外部地址。

4 网络一的×××网关将×××数据包发送到,由于×××数据包的目标地址是网络二的×××网关的外部地址,所以该数据包将被Internet中的正确地发送到网络二的×××网关。

5 网络二的×××网关对接收到的数据包进行检查,如果发现该数据包是从网络一的×××网关发出的,即可判定该数据包为×××数据包,并对该数据包进行解包处理。解包的过程主要是先将×××数据包的包头剥离,再将数据包反向处理还原成原始的数据包。

6 网络二的×××网关将还原后的原始数据包发送至目标终端B,由于原始数据包的目标地址是终端B的IP,所以该数据包能够被正确地发送到终端B。在终端B看来,它收到的数据包就和从终端A直接发过来的一样。

7 从终端B返回终端A的数据包处理过程和上述过程一样,这样两个网络内的终端就可以相互通讯了。

通过上述说明可以发现,在对数据包进行处理时,有两个参数对于×××通讯十分重要:原始数据包的目标地址(×××目标地址)和远程×××网关地址。根据×××目标地址,×××网关能够判断对哪些数据包进行×××处理,对于不需要处理的数据包通常情况下可直接转发到上级路由;远程×××网关地址则指定了处理后的×××数据包发送的目标地址,即×××隧道的另一端×××网关地址。由于网络通讯是双向的,在进行×××通讯时,隧道两端的×××网关都必须知道×××目标地址和与此对应的远端×××网关地址。

    ×××从应用的角度可以分为以下两种类型:

  • 站点到站点的×××:即在×××网关之间保护两个或更多的站点之间的流量(可以理解为两个局域网之间的流量)如:总公司和分公司之间建立IP Sec

  • 远程访问×××:通常用于在单用户设备或小型的办公网络与×××网关之间的通信连接。如利用Open ×××实现的SSL ×××。

示例 1:PPTP ×××:

方案部署如下:

×××服务器配置:

[root@*** ~]#modprobe ppp-compress-18 && echo MPPE is Success    #如果没有则需要加载模块

[root@*** ~]#yum install ppp pptpd dkms -y

[root@*** ~]# vim /etc/ppp/options.pptpd 

name pptpd

refuse-pap

refuse-chap

refuse-mschap

require-mschap-v2

require-mppe-128

proxyarp

lock

nobsdcomp

novj

novjccomp

nologfd

ms-dns 202.96.134.133

ms-dns 202.96.134.128

[root@*** ~]# vim /etc/pptpd.conf 

option /etc/ppp/options.pptpd

logwtmp

localip 172.16.100.1

remoteip 172.16.100.10-100    

[root@*** ~]# vim /etc/ppp/chap-secrets 

zwj pptpd abcdefg *

[root@*** ~]# vim /etc/sysctl.conf 

net.ipv4.ip_forward = 1

[root@*** ~]# sysctl -p

防火墙的配置是必不可少的,否则将导致客户端拨入×××后无法上网;

[root@*** ~]# iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT

[root@*** ~]# iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -j SNAT --to-source 192.168.133.131    #-s后面是分配给客户端的IP,--to-source后面是×××服务器的公网IP

[root@*** ~]# iptables -I INPUT 1 -p gre -j ACCEPT

[root@*** ~]# chkconfig pptpd on

[root@*** ~]# service pptpd start

客户端:

在Win 7的客户端进行连接:

打开“网络和共享中心”——选择“设置新的连接或网络”——选择“连接到工作区,设置到您的工作区的拨号或×××连接”——选择“使用我的Internet连接×××”——输入×××服务器IP和×××名称(如下图:)

输入用户名和密码,点击连接:

如下图所示,连接成功:

可以看到×××连接的图标,并且分配了IP:

本地客户端已经无法ping通外网,但可以ping通172.16.100.1

连接成功后,查看×××服务端: