虚拟专用网络的搭建

目录

1、基本概念 

2、虚拟专用网络的使用场景

3、常见的虚拟专用网构建技术

3.1 SSL/TLS 虚拟专用网络的原理

4、深入理解OpenVPN的特性

5、使用openvpn 创建点到点的虚拟专用网络 

5.1 在两台需要互联的服务器x.y.z.2和a.b.c.2上都执行如下安装步骤

5.2 在服务器x.y.z.2上生成静态密码 

5.3 将该key文件传到对端a.b.c.2服务器上 

5.4 创建隧道 

5.5 验证隧道功能

5.6 注意事项!!!

 6、使用OpenVPN创建远程访问的虚拟专用网络


1、基本概念 

虚拟专用网络架设在公共共享的互联网基础设施上,在非受信任的网络上建立私有和安全的连接。

2、虚拟专用网络的使用场景

使用场景 解释说明
安全互联 把多个发布子啊不同地域的服务器或网络安全的连接起来。
指定网络流量路由 把多个点的之间的网络服务流量通过虚拟专用网络的隧道进行连接后,可以使用动态路由等优化内部网络通信。
匿名访问 通过虚拟专用网络通道,可以隐藏客户端的来源IP,在某些场合可以起到保护用户的作用。

3、常见的虚拟专用网构建技术

a、点到点的隧道协议虚拟专用网络

b、互联网协议安全IPsec虚拟专用网络

c、安全接口层/安全传输层协议虚拟专用网络

3.1 SSL/TLS 虚拟专用网络的原理

a、SSL/TLS虚拟专用网络的工作过程

认证过程:在SSL/TLS 的握手过程中,客户端和服务器分别使用对方的证书来进行认证。

加密过程:在SSL/TLS的握手过程中,客户端和服务器端使用非对称加密算法计算出对称密钥积习进行数据加密。

b、SSL/TLS虚拟专用网络主要使用的虚拟设备

tun:/tap设备:Linux中提供了两种虚拟网络设备tun/tap设备。通过这两种设备的读写操作,实现内核与用户态程序的交互。

在linux环境中,SSL/TLS虚拟专用网络的典型代表是OpeVpn。

4、深入理解OpenVPN的特性

使用OpenVPN,可以实现以下功能:

对任何一个IP子网或者虚拟以太网提供一个UDP或者TCP端口来建立隧道。
架构一个可扩展的,负载均衡的虚拟专用网络汲取系统,同时支来自用户的连接。
使用任意加密算法,密钥长度。这些功能是使用openssl库来实现的。
可以选择最简单的静态密码的传统加密算法或者给予证书的公钥加密算法
对于数据流进行实时压缩
对于面向连接搭配端节点通过动态方法获取IP地址。
支持网络地址转换。

5、使用openvpn 创建点到点的虚拟专用网络 

在某些场景中,我们可以会遇到只需要把两台语出Internet上的服务器使用的细腻专用网络连接起来,比如远程的SNMP信息抓取、远程数据备份。

在这种情况下,我们使用openvpn来创建点到点的虚拟专用网络的架构。

环境准备

主机名 公网IP
node1  x.y.z.2
node2 a.b.c.2

5.1 在两台需要互联的服务器node1和node2上都执行如下安装步骤

yum  install epel-release -y
yum install lzo lzo-devel openssl openssl-devel #安装openvpn前。需要安装openvpn的依赖库
yum install openvpn # 安装openvpn

5.2 在服务器node1上生成静态密码 

oopenvpn --genkey --secret key 

5.3 将该key文件传到对端node2服务器上 

方法一:使用scp命令

scp 本地路径 root@远程主机IP地址 远程主机的路径

方法二 :使用rsync命令 

rsync -avz -e ssh /path/to/local/file username@remote:/path/to/remote/directory

5.4 创建隧道 

在服务器node1上执行以下命令:

openvpn -- remote 对端服务器IP地址 --dev tun0 --ifcfg 10.6.0.1 10.6.0.2 --secret key --daemon 

在服务器node2上执行命令

openvpn --remote 对端服务器IP地址 --dev tun0 --ifcfgfig 10.6.0.2 10.6.0.1 --secret key --daemon 
其中关键指标如下:

--remote 指定点到点架构对端的公网IP 

--dev ,指定使用tun设备

--ifconfig ,指定虚拟隧道的本端和远端的IP地址

--secret ,指定包含静态密码的文件

--daemon 指定使用后台驻守进程的模式

执行完第4步骤以后。两台服务器之间的虚拟专用网络如图所示

5.5 验证隧道功能

在服务器node1上执行以下命令,在对端服务器node2上使用tcpdump对tun0进行抓包分析。

ping 10.6.0.2 -c 4

tcpdump -nnn -vvv -i tun0 icmp   #用于在指定的网络接口tun0上捕获并显示ICMP协议流量。


具体参数的含义如下:

-nnn:禁用名字解析,以IP地址和端口号的形式显示数据包的源和目的地。
-vvv:增加详细的输出信息,显示更多关于捕获的数据包的信息。
-i tun0:指定要捕获的网络接口为tun0。

5.6 注意事项!!!

a、在这种点对点模式中,使用静态密码的方式时。--secret指定的key文件是需要严格保密的。
b、在这种点到点的模式中,只能有两个端点参与

tun和tap是操作系统中提供的一种虚拟网络设备。tun/tap设备不是从物理网卡设备中读取数据包,而是从用户空间的程序中读取包;向物理设备写入时,并不实际从物理设备上发出包,而是从内核提交到应用程序中。

 6、使用OpenVPN创建远程访问的虚拟专用网络

远程访问是指办公室的驻场人员或者远程办公的人员提供访问服务器资源和办公资源的通道。在这些场景中,远程访问者一般没有公网IP,使用的是内网地址通过防火墙设备进行网络地址的转换后连接互联网。

未完待续!!!

相关推荐

  1. 快速适用于中小企业专用网络环境

    2024-06-09 18:28:06       59 阅读
  2. 虚拟专用网络(VPN)技术研究与应用

    2024-06-09 18:28:06       24 阅读
  3. conda多虚拟环境与切换

    2024-06-09 18:28:06       57 阅读
  4. PyCharm中快速Python虚拟环境指南

    2024-06-09 18:28:06       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-09 18:28:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 18:28:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 18:28:06       87 阅读
  4. Python语言-面向对象

    2024-06-09 18:28:06       96 阅读

热门阅读

  1. 代码随想录【字符串】

    2024-06-09 18:28:06       30 阅读
  2. Go 优雅处理goroutines错误

    2024-06-09 18:28:06       32 阅读
  3. 关于Redis的持久化

    2024-06-09 18:28:06       37 阅读
  4. 字符输出流

    2024-06-09 18:28:06       29 阅读
  5. [leetcode]longest-common-prefix 最长公共前缀

    2024-06-09 18:28:06       29 阅读
  6. tomcat 启动闪退问题解决方法

    2024-06-09 18:28:06       26 阅读
  7. SQL的入门基础教程

    2024-06-09 18:28:06       29 阅读
  8. 设计模式之策略模式

    2024-06-09 18:28:06       29 阅读
  9. 富格林:利用正规经验安全做单

    2024-06-09 18:28:06       27 阅读
  10. 《科学,无尽的前沿》—— 程序员必读

    2024-06-09 18:28:06       33 阅读