VPN与NAT

虚拟专用网VPN

VPN:Virtual Private Nerwork.

专用网

由于IP地址的紧缺,一个机构所能申请到的IP地址数量可能达不到本地主机数量。为了方便机构内部的通信,我们可以自行分配IP地址,这些IP地址只在机构的内部有效,也称为本地地址。那么对应的,从互联网管理机构申请的全球唯一的IP地址就是全球地址
很明显这些本地地址是不能够在互联网上通信的。
接下里是如何选择本地地址:如果随机选择本地地址,可能会出现某个主机的本地地址和互联网中的某个IP重合,这样路由器就不知道该把数据报传给谁了。
为了解决这个问题,RFC 1918指明了一些专有地址,这些地址只能用于机构内部的通信,在互联网中的路由器,对目的地址是专有地址的数据报一律不进行转发。
专有地址:

  • 10.0.0.0 ~ 10.255.255.255
  • 172.16.0.0 ~ 172.31.255.255
  • 192.168.0.0 ~ 192.168.255.255

采用专有地址的互连网称为专用互联网本地互联网

何为虚拟?

虚拟就是指通信双方并无直接的通信链路相连。一般要通过互联网进行数据传输。
两个专有网通过互联网进行相连,对于用户来说就是一个专有网。
那么通过互联网连接的两个专有网,他们各自都要至少有一台联接互联网的路由器。
通信的过程大致如下:

  • 发现目的地址不在本地的专有网中,就把数据报传送到路由器
  • 路由器将原始数据报进行加密,再加上新的目的地址(另一个专有网的路由器地址),然后发送。
  • 对方的路由器收到数据报后进行解密,提取到原来的目的地址,然后发送到指定主机。

从中发现,要构建一个VPN,每个专有网都需要知道所有其它专有网的地址。

在学校中经常会使用到VPN去连接校园网,它的原理大概也就能猜出来:填写好VPN软件的配置信息(包括目的网络的IP地址和端口号),然后加密解密的协议要统一,同时还要告诉目的网络你的信息(地址,端口,账户,密码),授权成功之后,应该就算连接建立成功,就可以通信了。

网络地址转换NAT

NAT:Network Address Translation

专有网中的主机想要连接互联网,并且没有足够的全球地址怎么办?
通过在连接了互联网的路由器上安装NAT软件即可实现,它的原理是这样的:
专有网中的主机发送一个数据报到互联网上的某个地址,那么这个数据报会先到那个连接了互联网的路由器那里。此时路由器会记录发送者的专有地址(见下表),然后把数据报的源地址改为路由器的地址再发送出去。
当路由器收到了来自互联网的数据报,他会根据之前的记录查找数据报上的目的地址对应的专有网的专有地址。
这样路由器中的一个全球地址就可以形成一条专有网到互联网的链路。

NAT地址转换表举例:
|方向|字段|旧的IP|新的IP|
|—|—|—|—|
|出|源IP地址|192.168.0.3(专有地址)|172.38.1.5(路由器IP)|
|入|目的IP地址|172.38.1.5|192.168.0.3|

网络地址与端口号转换NAPT

NAPT:Network Address and Port Translation

在NAT的基础上加了一个端口号,这样就可以实现专有网中多个主机公用一个路由器IP。
直接看它的地址转换表:

方向 字段 旧的IP和端口 新的IP和端口
源IP地址:TCP源端口 192.168.0.3:30000(专有地址) 172.38.1.5:40001(路由器IP)
源IP地址:TCP源端口 192.168.0.4:30000(专有地址) 172.38.1.5:40002(路由器IP)
目的IP地址:TCP源端口 172.38.1.5:40001 192.168.0.3:30000