#import "labtemplate.typ": *
#show: nudtlabpaper.with(title: "虚拟局域网（VLAN）配置",
  author: "程景愉", 
  id: "202302723005", 
  training_type: "无军籍",
  grade: "2023",
  major: "网络工程",
  department: "计算机学院",
  advisor: "张军",
  jobtitle: "工程师",
  lab: "306-707",
  date: "2025.09.17",
  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)
    // #counter(heading).display()
    // #h(0.5em)
    #it.body
  ]

#outline(title: "目录",depth: 3, indent: 2em)
#pagebreak()
#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[
  能根据需求划分和配置VLAN，实现VLAN的基本功能。
  了解端口安全的作用，掌握端口安全的配置方法。
]
 
= 实验原理
== VLAN
#para[
  虚拟局域网（VLAN）是一种将局域网划分为多个逻辑上的局域网的技术。VLAN技术可以将不同的用户、不同的网络设备、不同的网络数据流分隔开，提高网络的安全性和管理性。VLAN技术可以实现以下功能：
  - 逻辑划分：将一个物理局域网划分为多个逻辑局域网，不同的逻辑局域网之间相互隔离，提高网络的安全性。
  - 广播控制：VLAN可以控制广播域的范围，减少广播风暴，提高网络的性能。
  - 管理灵活：VLAN可以根据网络的需求随时调整，提高网络的管理灵活性。
  - 负载均衡：VLAN可以将不同的用户、不同的网络设备、不同的网络数据流分隔开，实现负载均衡。
]
== 链路聚合
#para[
  链路聚合是一种将多个物理链路聚合成一个逻辑链路的技术。链路聚合技术可以实现以下功能：
  - 增加带宽：可以将多个物理链路聚合成一个逻辑链路，增加带宽，提高网络的性能。
  - 提高可靠性：可以将多个物理链路聚合成一个逻辑链路，提高网络的可靠性。
  - 负载均衡：可以将多个物理链路聚合成一个逻辑链路，实现负载均衡。
]
== 端口安全
#para[
  端口安全是一种保护网络安全的技术，可以防止未经授权的设备接入网络。端口安全技术可以实现以下功能：
  - 限制MAC地址：可以限制接口学习的MAC地址数量，防止未经授权的设备接入网络。
  - 防止ARP攻击：可以防止ARP攻击，提高网络的安全性。
  - 防止MAC地址冲突：可以防止MAC地址冲突，提高网络的稳定性。
]

= 实验环境
== 实验背景
#para[
  网安系与网工系的学生住混合寝室，每个寝室共用一个交换机。苞米要求规定不同系的学生之间不能用PC交流。为此，需要将网安系的PC1、PC3与网工系的PC2、PC4分别划分到不同的VLAN中，实现两系学生之间的隔离。学生之间有经常开大规模在线视频组会的需求，对网络的性能和稳定性要求较高，所以要求在交换机之间使用链路聚合技术。网安系与网工系之间有时会进行交流活动，需要在交换机上配置网关，实现两系学生之间的通信。为了保证网络安全，需要对接口进行安全配置，防止外部人员使用外部设备接入网络。
]
== 实验设备
#para[
#align(center)[#table(
  columns: (auto, auto,auto),
  rows:(2em,2em,3em),
  inset: 10pt,
  align: horizon+center,
  table.header(
    [*设备名称*], [*设备型号*], [*设备数量*]
  ),
  "交换机", "华为S5735", "2",
  "PC", "联想启天M410
  Windows 10", "4",
)]
  另有网线若干，控制线2条。
]
= 实验步骤及结果
== 实验拓扑
#para[
  按实验背景，绘制拓扑图如下：
  #figure(image("../labtemplate.typ",format: "png",fit:"stretch",width: 100%),caption: "实验拓扑图")
]
== 按照拓扑图接线
#para[
  按照拓扑图接线，将PC1、PC2、PC3、PC4分别连接到LSW1、LSW2上。图中手握的三根线是用于链路聚合的网线。
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 90%),caption: "接线图")
]
== 配置前检验
#para[
  设置PC1、2、3、4的IP地址，分别为`192.168.10.{1, 2, 3, 4}`。设置PC1、2的网关为`192.168.10.5`，设置PC3、4的网关为`192.168.10.6`。使用`ipconfig`命令查看PC的IP地址和网关地址，以PC1为例，查看结果如下：
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 70%),caption: "配置前检验")
说明PC1的IP地址、网关地址已经设置成功。
  然后，在PC1上ping PC2、PC3、PC4，查看是否能够ping通。结果如下：
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 60%),caption: "配置前检验结果")
说明PC1能够ping通PC2、PC3、PC4，网络连接正常。下面开始进行VLAN配置。
]

== 配置VLAN
#para[
  下列许多步骤在LSW1和LSW2上都有相同的操作，这里只列出LSW1上的操作步骤。
]
=== 配置LACP模式的链路聚合
#para[
  在LSW1上创建Eth-Trunk1并配置为LACP模式。
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 40%),caption: "配置LACP模式的链路聚合(1)")
  配置LSW1上的成员接口加入Eth-Trunk1。
#figure(image("../labtemplate.typ", format: "jpg", fit: "stretch", width: 70%),caption: "配置LACP模式的链路聚合(2)")
#figure(image("../labtemplate.typ", format: "jpg", fit: "stretch", width: 70%),caption: "（续）配置LACP模式的链路聚合(2)")
  在LSW1上配置系统优先级为100，使其成为LACP主动端（LSW2上不需要配置，其缺省优先级为32768，比LSW1低，已经满足要求）。配置活动接口上限阈值为2。
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 60%),caption: "配置LACP模式的链路聚合(2)")
  在LSW1上配置接口优先级确定活动链路。
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 60%),caption: "配置LACP模式的链路聚合(3)")
]
=== 配置各个接口的VLAN属性
#para[
  创建VLAN并将接口加入VLAN。将与PC1、PC2相连接口的接口类型设置为access。将PC1划分到VLAN 10，将PC2划分到VLAN 20。
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 80%),caption: "配置VLAN属性(1)")
 配置Eth-Trunk1接口允许VLAN10和VLAN20通过。
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 80%),caption: "配置VLAN属性(2)")
  验证配置结果，查看各交换机的Eth-Trunk信息，查看链路是否协商成功。
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 90%),caption: "LSW1的Eth-Trunk信息")
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 90%),caption: "LSW2的Eth-Trunk信息")
  通过以上显示信息可以看到，LSW1的系统优先级为100，高于LSW2的系统优先级。Eth-Trunk的成员接口中GigabitEthernet0/0/3、GigabitEthernet0/0/4成为活动接口，处于“Selected”状态，接口GigabitEthernet0/0/5处于“Unselect”状态，同时实现2条链路的负载分担和1条链路的冗余备份功能。
]
=== 阶段性检验
#para[
  在PC1上ping PC2、PC3、PC4，查看是否能够ping通。预期结果为PC1可以ping通PC3，无法ping通PC2、4。结果如下：
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 50%),caption: "阶段性检验(1)")
  上述结果说明PC1可以ping通PC3，无法ping通PC2、4，VLAN配置成功。网工系的学生与网安系的学生电脑之间无法通信，满足了苞米要求。
]
== 添加网关
#para[
  网工系的学生做了一个网工实验，他们PC的IP地址发生了变化，从`192.168.10.x/24`变为了`192.168.20.x/24`，如下图所示：
#figure(image("../labtemplate.typ",format: "png",fit:"stretch",width: 100%),caption: "新的拓扑图")
  现在网工系与网安系之间展开交流，要求网安系的PC1、PC3能够访问网工系的PC2、PC4。为此，需要在交换机上配置网关。本实验选择在LSW1上配置网关。
]
=== 配置PC默认网关
#para[
  在PC2、PC4上配置默认网关为`192.168.20.6`（以PC2为例）：
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 70%),caption: "配置PC默认网关(1)")
使用`ipconfig`命令查看PC的网关地址，以PC2为例，查看结果如下：
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 70%),caption: "配置PC默认网关(2)")
说明PC2的IP网关地址已经设置成功。PC4同理。
]
=== 配置VLAN网关
#para[
  配置VLANIF接口，作为学生PC的网关。在LSW1上配置VLANIF10接口的IP地址为`192.168.10.5/24`，配置VLANIF20接口的IP地址为`192.168.20.6/24`。
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 60%),caption: "配置VLAN网关(1)")
配置好之后使用`display interface Vlanif <index>`命令查看VLANIF接口的状态，查看结果如下：
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 90%),caption: "配置VLAN网关(2)")
可以看到IP已经正确配置，且状态为UP。
]
=== 阶段性检验
#para[
  在PC1上ping PC2、PC3、PC4，查看是否能够ping通。预期结果为全通。结果如下：
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 60%),caption: "阶段性检验(2)")
  
  上述结果说明PC1可以ping通PC2、PC3、PC4，VLAN配置成功。网工系的学生与网安系的学生电脑之间可以通信。
]
== 引入接口安全
#para[
  网工系与网安系的交流活动中，有外部人员参与。为了保证网络安全，需要对接口进行安全配置，防止外部人员使用外部设备接入网络。
]
=== 配置接口安全
#para[
  将接口GigabitEthernet0/0/1、GigabitEthernet0/0/2的最大MAC地址数设置为1。以LSW1的GigabitEthernet0/0/1为例，配置如下：
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 80%),caption: "配置接口安全(1)")
  配置好之后，让PC1与PC2、PC3、PC4进行一次ping通信，让交换机学习每个PC的MAC地址。用`ipconfig /all`命令查看PC的MAC地址，以PC1为例，查看结果如下：
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 80%),caption: "配置接口安全(2)")
  可以看到PC1的MAC地址为`1C-69-7A-2F-8E-43`。
  在LSW1上运行`display mac-address`命令查看交换机学习到的MAC地址，查看结果如下：
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 80%),caption: "配置接口安全(3)")
  可以看到交换机学习到了PC1的MAC地址。
]
=== 检验接口安全配置
#para[
  模拟外部人员进入网安系，将PC1用于接入交换机LSW1的网线取下，改用个人笔记本电脑接入LSW1：
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 80%),caption: "检验接口安全配置(1)")
  将IP地址与默认网关设置为与PC1相同：
#figure(image("../labtemplate.typ",format: "png",fit:"stretch",width: 80%),caption: "检验接口安全配置(2)")
  然后分别ping PC2、PC3、PC4，看是否能够正常通信。预期结果为无法通信。结果如下：
#figure(image("../labtemplate.typ",format: "jpg",fit:"stretch",width: 80%),caption: "检验接口安全配置(3)")
  个人笔记本电脑无法与任何PC通信，交换机出色地完成了苞米任务。
]

= 实验总结
== 内容总结
#para[
  通过本次实验，我深入了解了虚拟局域网（VLAN）和端口安全配置的基本原理和实际操作。具体来说，我完成了以下几项任务：

1. VLAN 配置：
   - 学习了 VLAN 的基本概念和作用，掌握了如何根据需求划分和配置 VLAN。
   - 通过实际操作，将一个物理局域网划分为多个逻辑局域网，实现了不同 VLAN 之间的隔离，提高了网络的安全性和管理性。

2. 链路聚合：
   - 了解了链路聚合技术的基本原理，掌握了如何将多个物理链路聚合成一个逻辑链路。
   - 通过实际操作，实现了链路聚合，增加了带宽，提高了网络的性能和可靠性。

3. 端口安全配置：
   - 学习了端口安全的作用和配置方法，掌握了如何通过端口安全配置来防止未经授权的设备接入网络。
   - 通过实际操作，模拟了外部人员尝试接入网络的场景，验证了端口安全配置的有效性。

]
== 心得感悟
#para[
  本次实验，我选择了MobaXterm作为Serial会话的发起终端，而非Hypertrm。虽然两者没有本质区别，但后者具有更加现代化的界面，方便查看输入、输出。其次，在完成基础的VLAN配置后，我尝试学习课上讲到的其他技术，并在实验中成功利用。较为遗憾的是，由于没有技术搭建较好的测试与应用环境，没有尝试使用Hybrid类型接口配置基于MAC的VLAN。在实验中，我遇到了许多问题，但通过查阅资料、请教老师和同学，最终解决了问题。通过本次实验，我不仅学会了网络配置的方法，还提高了解决问题的能力。
]

#show heading: it => box(width: 100%)[
  #v(0.50em)
  #set text(font: hei)
  // #counter(heading).display()
  // #h(0.5em)
  #it.body
]
#pagebreak()
#bibliography("../labtemplate.typ",full: true,title: "参考文献",style:"../labtemplate.typ")