#import "labtemplate.typ": * #show: nudtlabpaper.with(title: "VPN实例配置", author: "程景愉", id: "202302723005", training_type: "无军籍", grade: "2023", major: "网络工程", department: "计算机学院", advisor: "张军", jobtitle: "工程师", lab: "306-707", date: "2025.09.28", header_str: "《网络工程》实验报告", ) #set page(header: [ #set par(spacing: 6pt) #align(center)[#text(size: 11pt)[《网络工程》实验报告]] #v(-0.3em) #line(length: 100%, stroke: (thickness: 1pt)) ],) #show heading: it => box(width: 100%)[ #v(0.50em) #set text(font: hei) #it.body ] #outline(title: "目录",depth: 3, indent: 1em) #outline( title: [图目录], target: figure.where(kind: image), ) #show heading: it => box(width: 100%)[ #v(0.50em) #set text(font: hei) #counter(heading).display() // #h(0.5em) #it.body ] #set enum(indent: 0.5em,body-indent: 0.5em,) #pagebreak() = 实验目的 #para[ 1. 了解VPN的基本概念及应用场景; 2. 掌握VPN在隔离数据流、构建虚拟网络中的关键作用; 3. 熟悉VPN的配置方法与工作机制。 通过本实验,我将学习VPN的基本原理及其在实现多租户隔离、提升网络灵活性方面的重要应用。同时,通过实践掌握VPN实例的创建、接口绑定及路由表配置等操作,深入理解VPN实例在数据转发和隔离中的实现机制,并了解其与根实例的区别及优点。实验将进一步验证VPN实例在多接口场景下的流量隔离效果,帮助我建立对虚拟网络技术的系统性认识,为日后设计复杂网络拓扑和实现网络隔离奠定基础。 ] = 实验原理 == VPN #para[ 虚拟专用网络(VPN,Virtual Private Network)是一种通过公共网络(如Internet)建立安全连接的技术,用于实现远程用户接入、分支机构互联、数据加密传输等应用场景。VPN技术通过加密隧道、身份认证、数据加密等手段,保障数据传输的安全性和隐私性,提高网络通信的可靠性和保密性。常见的VPN类型包括IPSec VPN、SSL VPN、PPTP VPN等,广泛应用于企业网络、远程办公、移动通信等领域。 ] == VRF === 概述 #para[ 虚拟路由转发(VRF,Virtual Routing and Forwarding)技术通过在同一台三层设备上创建多张独立的路由表,实现数据流的隔离和独立转发。VRF广泛应用于MPLS VPN、防火墙等需要隔离的场景。在VRF环境中,每个实例拥有独立的接口、路由表和路由协议进程等,使流量彻底隔离。没有VPN实例时,设备的所有接口都属于同一个根实例;而创建VPN实例后,可以将特定接口绑定到该实例,使其服务于特定业务,从而实现多租户数据的独立管理。 在华为设备上VRF又称为VPN实例。 ] === 工作原理 #para[ 1. 创建实例:在物理设备中创建VPN实例,用于定义独立的转发域; 2. 接口绑定:将三层接口(如物理接口、子接口或VLANIF接口)分配给实例,使其成为实例的一部分; 3. 路由表建立:基于实例绑定的接口和配置的路由协议建立独立的路由表,并按照这些路由表转发数据,从而实现实例间的数据隔离。 ] #pagebreak() = 实验环境 == 实验背景 #para[ 网工系的学生正在学习VPN技术,需要通过实验验证VPN实例在网络隔离中的应用。为此,需要搭建一个简单的网络拓扑,包括三台路由器和四台PC,通过配置VPN实例实现不同网络之间的数据隔离。 ] == 实验设备 #para[ #align(center)[#table( columns: (auto, auto,auto), rows:(auto, auto,auto), inset: 10pt, align: horizon+center, table.header( [*设备名称*], [*设备型号*], [*设备数量*] ), "路由器", "华为AR6120-S", "3", "PC", "联想启天M410\nWindows 10", "4", )] 另有网线若干,控制线3条。 ] = 实验步骤及结果 == 实验拓扑 #para[ 按实验背景,绘制拓扑图如下: #figure(image("实验拓扑.png",format: "png",fit:"stretch",width: 100%),caption: "实验拓扑图") 要求将红框内的PC1、PC3划分到一个VPN实例中。 ] #pagebreak() == 按照拓扑图接线 #para[ 按照拓扑图接线。 #figure(image("机柜正面连线.jpg",format: "jpg",fit:"stretch",width: 50%),caption: "机柜正面接线图") #figure(image("机柜背面连线.jpg",format: "jpg",fit:"stretch",width: 50%),caption: "机柜背面接线图") ] #pagebreak() == 配置基本网络 === 配置PC #para[ - 配置PC1的IP地址为`192.168.10.1/24`,网关为`192.168.10.2`; - 配置PC2的IP地址为`192.168.20.1/24`,网关为`192.168.20.2`; - 配置PC3的IP地址为`192.168.30.1/24`,网关为`192.168.30.2`; - 配置PC4的IP地址为`192.168.40.1/24`,网关为`192.168.40.2`。 步骤简单,展示图略。 ] === 配置路由器IP地址 #para[ 按照拓扑图配置路由器的IP地址。配置AR1的G0/0/0口IP地址为 1. 配置AR1路由器: - 接口 `GE 0/0/0` 连接到 `AR3`,IP地址为 `192.168.60.2`。 - 接口 `GE 0/0/1` 连接到 `PC3`,IP地址为 `192.168.30.2`。 #figure(image("ar1ip.png",format: "png",fit:"stretch",width: 60%),caption: "配置AR1的IP地址") 2. 配置AR2路由器: - 接口 `GE 0/0/0` 连接到 `AR3`,IP地址为 `192.168.80.2`。 - 接口 `GE 0/0/1` 连接到 `PC4`,IP地址为 `192.168.40.2`。 #figure(image("ar2ip.png",format: "png",fit:"stretch",width: 60%),caption: "配置AR2的IP地址") 3. 配置AR3路由器: - 接口 `GE 0/0/0` 连接到 `PC1`,IP地址为 `192.168.10.2`。 - 接口 `GE 0/0/1` 连接到 `PC2`,IP地址为 `192.168.20.2`。 注意拓扑图中的`Ethernet0/0/0`和`Ethernet0/0/1`分别对应`GE 0/0/3`和`GE 0/0/2`: - 接口 `GE 0/0/2` 连接到 `AR2`,IP地址为 `192.168.80.1`。 - 接口 `GE 0/0/3` 连接到 `AR1`,IP地址为 `192.168.60.1`。 #figure(image("ar3ip.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "配置AR3的IP地址") ] === 配置RIP协议使互通 #para[ 本次实验使用RIP协议,配置路由器使得各个网络互通: #figure(image("ar1rip.png",format: "png",fit:"stretch",width: 60%),caption: "在AR1上配置RIP协议") #figure(image("ar2rip.png",format: "png",fit:"stretch",width: 60%),caption: "在AR2上配置RIP协议") #figure(image("ar3rip.jpg",format: "jpg",fit:"stretch",width: 60%),caption: "在AR3上配置RIP协议") 此时在PC4(`192.168.40.1/24`)上ping其他三台主机,发现可以互通: #figure(image("配置vpn前_2.jpg",format: "jpg",fit:"stretch",width: 90%),caption: "PC2 ping其他主机") ] == 配置VPN实例 === 创建VPN实例 #para[ 在AR1上创建VPN实例`wlxvpn`,并为该实例设置RD值为`100:1`: #figure(image("ar3vpn.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "创建VPN实例并设置RD值") 并配置接口`GE 0/0/0`、`GE 0/0/2`绑定到该实例: #figure(image("ar3binding.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "绑定接口") 如下图@qingkong,绑定之后接口的配置会被清空,需要重新设置接口的IP地址: #figure(image("ar3ip_2.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "重新设置接口IP地址") ] === 配置VPN实例的路由 #para[ 向`wlxvpn`的路由表中创建RIP进程,进程号为100,并且该进程与VPN实例`wlxvpn`进行绑定。设备在该RIP进程中所学习到的路由会加载到`wlxvpn`的路由表中。 #figure(image("ar3vpnrip.png",format: "png",fit:"stretch",width: 50%),caption: "配置RIP进程") 此时可以测试一下VPN的连通性: #figure(image("vpnpingPC1.png",format: "png",fit:"stretch",width: 80%),caption: "AR3 ping PC1") ] == 结果检验 #para[ 在PC1上分别ping PC2与PC3,发现PC1与PC2无法通信,PC1与PC3可以通信: #figure(image("配置vpn后.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "PC1分别ping VPN内外的主机") 说明VPN实例`wlxvpn`的配置成功,实现了PC1与PC2等的数据隔离。 ] = 实验总结 #para[ 本次实验通过配置VPN实例,实现了不同网络之间的数据隔禆,验证了VPN实例在网络隔离中的重要作用。通过实验,我掌握了VPN实例的创建、接口绑定、路由配置等操作方法,深入理解了VPN实例在数据转发和隔离中的实现机制。同时,通过实验验证了VPN实例在多接口场景下的流量隔离效果,为我今后设计复杂网络拓扑和实现网络隔离提供了重要参考。 ] #show heading: it => box(width: 100%)[ #v(0.50em) #set text(font: hei) // #counter(heading).display() // #h(0.5em) #it.body ] // #pagebreak() // #bibliography("ref.yml",full: true,title: "参考文献",style:"gb-7714-2015-numeric")