电子图书馆局域网设计:VLAN划分、DNS/DHCP/WEB/FTP配置与排错
简介:这份资源是一份计算机网络课程设计文档,主题为电子图书馆网络方案设计,面向计算机网络相关专业学生、课程设计选题者及网络规划入门学习者,帮助他们完成从需求分析、拓扑规划到硬件选型与服务配置的完整课设任务。压缩包内仅含1个doc格式文档,约637KB,正文按章节组织,依次覆盖电子图书馆的定义与发展、应用需求与用户需求分析、拓扑结构介绍、工作站与路由器、交换机、服务器等硬件选择及配置、服务软件配置与设计、测试与小结等模块,结构接近正式课程设计报告的写作骨架。文档围绕100个以上站点、1000M主干网与100M到点、不少于4个子网划分,以及DNS、DHCP、WEB、FTP等服务要求展开,并结合网络存储架构、吞吐量与冗余度等因素讨论电子图书馆场景的特殊性,可供读者参考需求表述方式、拓扑设计思路与设备配置过程。目前已有944人学习下载,适合用作课设报告撰写的参照与网络方案设计的入门范例。
1. 电子图书馆网站设计:一份课设文档里真正能复用的部分
这份电子图书馆网站设计课设文档,第一眼看着像一份标准的大作业:需求分析、拓扑图、硬件选型表、DNS/DHCP/WEB/FTP 配置步骤、测试记录,目录排得很规整。但真正值得拿过来用的不是那些名词解释,而是它把一个百人规模园区网络从需求翻译、设备选型、地址编址一路写到服务配置和验收的完整链路——中间那几张参数表和配置顺序,是能直接搬进模拟器跑通的。它适合正在做计算机网络课程设计、需要一份能自证跑得通的方案的人,也适合刚接手中小型局域网、想把 DNS、DHCP、WEB、FTP 四件套一次配明白的初级工程师。需要提前说清楚:文档里的硬件型号已经过时,价格也别当真,但背板带宽怎么算、子网怎么切、服务谁先谁后这些判断,今天照样成立。
2. 需求到拓扑:100 个信息点如何切成 4 个 VLAN 并留出冗余
2.1 把五条需求翻译成可验收的指标
原始需求写得很像招标书:接入 Internet、100 个以上站点、内部 1000M 主干 100M 到桌面、至少划分 4 个子网、提供 DNS/DHCP/WEB/FTP、写一个简单主页、考虑网络存储架构以及吞吐量和冗余度。这些话不落到数字上就没法验收,我在实际做方案时习惯先把它们翻译成下面这张对照表,后面所有选型和配置都围着它转。
| 原始需求 | 落到数字上的指标 | 对应的实现手段 |
|---|---|---|
| 100 个以上站点 | 接入端口不少于 120 个(留 20% 余量) | 每层 1 台 48 口 + 1 台 24 口接入交换机 |
| 1000M 主干、100M 到桌面 | 核心到接入、核心到服务器全千兆;桌面百兆 | 千兆光口上联,超五类到桌面 |
| 至少 4 个子网 | 5 个业务 VLAN + 1 个互联段 | 核心交换机做 SVI 网关 |
| DNS/DHCP/WEB/FTP | 4 个服务在同一台服务器上跑,另配一台备用解析 | 服务器区独立 VLAN,双网卡 |
| 吞吐量与冗余度 | 主干链路利用率不超过 60%,任一接入链路断开业务可恢复 | 双上行 + STP,出口双链路浮动路由 |
这里有个容易糊弄过去的地方:需求里写了“冗余度”,但文档给出的拓扑是单核心星型,核心交换机一挂整个馆内网络就瘫。课设环境下可以接受,写报告时得老实承认这是单点,并给出改进路径——核心双机做 VRRP,或者至少核心到出口做双链路加浮动静态路由。星型拓扑本身没问题,结构简单、故障域小、某个接入交换机坏了只影响一片区域,这是它被选中的真实理由,不是什么“美观”。
2.2 VLAN 与地址规划:/26 到底能装多少台
原文档的地址规划表是重灾区:VLAN1 写 163 台主机、VLAN2 写 263 台、VLAN3 写 363 台、VLAN4 写 462 台,掩码全是 255.255.255.192。这个掩码是 /26,一个网段只有 64 个地址,去掉网络号和广播地址剩 62 个,再去掉一个网关实际可用 61 个。也就是说表格里的主机数要么是笔误,要么就是根本没算过。这类问题答辩时一问就露馅,我一般会在规划阶段就把可用地址数写死在表里。
| VLAN | 名称 | 用途 | 网段/掩码 | 可用主机 | 网关 |
|---|---|---|---|---|---|
| 10 | readers | 阅览区检索终端 | 192.168.10.0/25 | 126 | 192.168.10.1 |
| 20 | office | 办公与采编 | 192.168.20.0/26 | 62 | 192.168.20.1 |
| 30 | servers | 服务器区 | 192.168.30.0/28 | 14 | 192.168.30.1 |
| 40 | guest | 访客与无线 | 192.168.40.0/26 | 62 | 192.168.40.1 |
| 99 | mgmt | 设备管理地址 | 192.168.99.0/28 | 14 | 192.168.99.1 |
| — | transit | 核心到出口互联 | 10.0.0.0/30 | 2 | — |
阅览区给了 /25 是因为那里终端最密集,六十到八十台机器很常见,用 /26 会紧巴巴;服务器区用 /28 足够,DNS、DHCP、WEB、FTP、存储加起来不会超过十台。另外原文档里出现过 192.12.29.x 这种地址段,那是公网地址空间,实验环境里跑得通,真接入互联网就会和外部路由打架,内网一律用 10/8、172.16/12、192.168/16 这三段,这条没有例外。
2.3 模拟器里的落地顺序:先二层后三层
拓扑在模拟器里搭好之后,配置顺序建议固定成“VLAN → Trunk → Access → SVI → 路由 → 中继”。顺序乱掉最容易出现的现象是:明明 VLAN 建了,两台机器还是不通,因为端口还没划进 VLAN,或者 SVI 没起来。
# 核心三层交换机:建 VLAN、配 SVI 网关、开 DHCP 中继 vlan 10 name readers vlan 20 name office vlan 30 name servers vlan 40 name guest ! interface Vlan10 ip address 192.168.10.1 255.255.255.128 ip helper-address 192.168.30.11 no shutdown interface Vlan20 ip address 192.168.20.1 255.255.255.192 ip helper-address 192.168.30.11 no shutdown ! ip routing ip route 0.0.0.0 0.0.0.0 10.0.0.1这段的关键点是ip routing,二层交换机默认不转发跨网段流量,只配 SVI 不开路由,跨 VLAN 必不通。ip helper-address指向 DHCP 服务器地址,因为 DHCP 广播包不会自己跨网段,没有中继,客户端永远拿不到地址,最后会掉到 169.254 开头的自动私有地址上。
# 接入交换机:上联口做 Trunk,只放行需要的 VLAN interface GigabitEthernet1/0/1 description uplink-to-core switchport mode trunk switchport trunk allowed vlan 10,20,40 ! # 接入口批量划进阅览区 VLAN interface range FastEthernet0/1-24 switchport mode access switchport access vlan 10 spanning-tree portfast spanning-tree bpduguard enableTrunk 上allowed vlan一定要写,默认放行全部 VLAN 会让广播包无谓地灌到每个接入交换机。portfast只加在接终端的口上,作用是跳过 STP 的监听学习阶段,让机器插上就能通;但上联口绝对不能开,否则形成环路时 STP 来不及收敛,整个二层网络会抖成一片,这是我在实验室里见过不止一次的翻车现场。
2.4 冗余度怎么在不加预算的前提下交代
预算只够一台核心的时候,冗余只能做在链路层面。核心到出口路由器拉两条线,一条主用一条备用,用管理距离区分优先级:
# 主链路管理距离 1,备链路 10,主链路断掉后自动切换 ip route 0.0.0.0 0.0.0.0 10.0.0.1 1 ip route 0.0.0.0 0.0.0.0 10.0.0.5 10接入交换机双上行到核心,靠 STP 阻塞其中一条,主链路断了再放开。这个方案能写进报告作为“链路级冗余”,但要清楚它救不了核心设备本身,报告里把边界写明白,比硬吹“高可用”更让人信服。
3. 硬件参数怎么核对:背板带宽、包转发率与线缆长度
3.1 交换机选型:6.8 Gbps 和 13.6 Gbps 差在哪
原文档选了一台 48 口百兆加两个千兆上联的交换机,参数表里写背板带宽 6.8 Gbps。这个数字本身没错,但它算的是半双工口径:48 个百兆口 4.8 Gbps,加 2 个千兆口 2 Gbps,正好 6.8。而交换机实际是全双工工作的,收发各一条通道,真正的线速交换容量应该是 13.6 Gbps。厂商在参数表上玩这个文字游戏很常见,有的写“交换容量”有的写“背板带宽”,口径不一样,直接比数字会踩坑。判断标准只有一条:标称值不低于全双工线速值,才算无阻塞。
包转发率是另一个必须核对的指标,它决定了小包场景下会不会丢包。百兆口线速约 0.1488 Mpps,千兆口约 1.488 Mpps,万兆口约 14.88 Mpps。拿上面那台机器算:48 × 0.1488 + 2 × 1.488 ≈ 10.12 Mpps,低于这个数就是有阻塞设计。我平时懒得手算,写个小脚本一次算清楚,改端口数就能复用。
def switch_capacity(ports_100m=0, ports_1g=0, ports_10g=0, full_duplex=True): """按端口数量估算交换机交换容量(Gbps)与线速包转发率(Mpps)""" factor = 2 if full_duplex else 1 # 全双工收发各一条通道 bw = (ports_100m * 0.1 + ports_1g * 1 + ports_10g * 10) * factor # 线速转发按最小帧 64B + 前导码/帧间隙 20B = 84B = 672bit 折算 pps = ports_100m * 0.1488 + ports_1g * 1.488 + ports_10g * 14.88 return round(bw, 2), round(pps, 2) # 48 口百兆 + 2 口千兆上联 print(switch_capacity(ports_100m=48, ports_1g=2)) # (13.6, 10.12) print(switch_capacity(ports_100m=48, ports_1g=2, full_duplex=False)) # (6.8, 10.12)函数里full_duplex这个开关就是用来对照厂商口径的:打开算出 13.6,关掉算出 6.8,同一个硬件两个数字,报告里引用哪个要写清楚依据。pps那一行不随双工模式变化,因为转发率本来就是按单向流量算的。
3.2 服务器与存储:四类服务挤在一台机器上的边界
原文档用一台双路服务器扛下所有服务,内存最大扩展到 8GB。放到今天看配置很低,但对这四类服务的实际负载来说并不是瓶颈,真正的瓶颈在磁盘和单点风险上。四类服务的资源画像差别很大:
| 服务 | CPU | 内存 | 磁盘 | 网络 | 主要风险 |
|---|---|---|---|---|---|
| DNS | 极低 | 256MB 够用 | 很小 | 很小 | 单点故障导致全网解析失败 |
| DHCP | 极低 | 256MB 够用 | 很小 | 很小 | 地址池耗尽、租约过长 |
| WEB | 低 | 1~2GB | 中等 | 中等 | 并发连接数、首页体积 |
| FTP/文件共享 | 低 | 512MB | 大 | 大 | 被动模式端口、磁盘 IO |
电子图书馆的实际流量大头是资料下载,也就是 FTP 和文件共享,这两项吃的是磁盘吞吐和网卡带宽,不是 CPU。所以选型时与其纠结处理器型号,不如把预算放在两块网卡做绑定、两块硬盘做 RAID1 上。网络存储这块,课设规模下不需要上专业存储设备,服务器加盘做共享目录,再通过 FTP 对外提供下载就够了;真要讲架构,就在报告里补一句“后续可扩展为独立 NAS,通过 NFS/SMB 挂载”,把扩展路径留出来。
3.3 双绞线与光纤:距离、衰减和余量
线缆这块最容易想当然。双绞线的 100 米是信道总长,不是单段长度,标准写法是水平链路不超过 90 米,加上两端跳线共 10 米。实际布线时我会再留 10% 余量,因为走线不可能全是直线,绕梁绕柱很常见。
| 介质 | 典型标准 | 最大距离 | 适用场景 |
|---|---|---|---|
| 超五类非屏蔽双绞线 | 1000BASE-T | 100m(90m 水平 + 10m 跳线) | 桌面接入 |
| 多模光纤 62.5/125 | 1000BASE-SX | 550m | 楼内楼层间主干 |
| 多模光纤 50/125 | 1000BASE-SX | 550m | 楼内楼层间主干 |
| 单模光纤 9/125 | 1000BASE-LX | 数公里 | 楼间主干 |
原文档给的光纤衰减参数是 850nm 约 3.5 dB/km、1310nm 约 1.0 dB/km、1550nm 约 0.26 dB/km,这组数字可以直接拿来算光功率预算。算法是:发射功率减去接收灵敏度,再减去光纤损耗和接头损耗,剩下的就是余量,工程上一般要求不低于 3 dB。举个例子,850nm 多模跑 300 米,光纤损耗约 1.05 dB,中间四个熔接或连接器按每个 0.5 dB 算共 2 dB,合计 3.05 dB,常见的短距多模模块预算在 8 dB 左右,余量充足。楼层间主干用多模、跨楼用单模,这个分界线按距离定,不要为了省事全上多模,超过 550 米就该换单模了。
3.4 设备命名与端口台账
文档里如果只有拓扑图没有台账,过两周自己都说不清哪个口接了什么东西。设备名建议按“楼层-角色-序号”来,比如三层接入交换机叫 F3-SW-01,核心叫 CORE-SW-01,出口路由器叫 EDGE-RT-01。端口描述一定要写,description to-F3-SW-01-G1/0/1这种信息在排错时能省下大量时间。IP 台账和设备台账各做一张表,跟配置文件放一起交付,比在报告里贴一堆截图有用得多。
4. 服务配置链路:DHCP、DNS、WEB、FTP 的依赖顺序与关键参数
4.1 先配谁后配谁:一条能反复验证的顺序
原文档的章节顺序是 DNS、WEB、DHCP、FTP,实际动手时这个顺序会让人反复返工。合理的顺序是:服务器静态地址 → DHCP → DNS → WEB → FTP → 客户端验证。理由很直接,每一步都要有可观测的结果才能往下走。服务器地址不定死,DHCP 就不知道该下发哪个 DNS;DHCP 不通,客户端连地址都没有,后面测域名解析纯属空谈;DNS 不通,用域名访问 WEB 必然失败,你会误以为是 Web 服务的问题。
这里有个细节:DHCP 服务器自己必须用静态地址,不能从自己发的池子里拿,否则重启顺序一变地址就漂了,中继指向的地址跟着失效,全网终端集体拿不到地址。我在实验室见过一次,排查了两个小时才发现是 DHCP 服务器网卡设成了自动获取。
4.2 DNS 正反向区域与区域复制
DNS 要配的东西比想象中多:正向区域负责域名到地址,反向区域负责地址到域名,辅助区域做冗余,转发器负责外网解析。原文档用图形界面一步步点,步骤没错但不好复现,换成配置文件更清楚。
# 主 DNS 的区域声明:正向 + 反向,只允许辅助 DNS 拉取区数据 zone "lib.example" IN { type master; file "/var/named/lib.example.zone"; allow-transfer { 192.168.30.12; }; also-notify { 192.168.30.12; }; }; zone "30.168.192.in-addr.arpa" IN { type master; file "/var/named/30.168.192.rev"; };allow-transfer限制只允许辅助服务器同步,不写的话任何主机都能来拉整个区的记录,等于把内网结构公开了。also-notify让主服务器改完记录主动通知备机,省掉等刷新周期的时间。
; /var/named/lib.example.zone 正向区域文件 $TTL 3600 @ IN SOA ns1.lib.example. admin.lib.example. ( 2024010101 ; serial,每次改动必须加一 3600 ; refresh 900 ; retry 604800 ; expire 86400 ) ; minimum IN NS ns1.lib.example. IN NS ns2.lib.example. ns1 IN A 192.168.30.11 ns2 IN A 192.168.30.12 www IN A 192.168.30.11 ftp IN A 192.168.30.11serial那一行是血泪教训,改完记录不递增序列号,辅助服务器会认为数据没变,死活不同步。SOA 里那几个时间单位是秒,refresh3600 表示备机每小时问一次,retry900 表示失败后 15 分钟重试,expire604800 表示一周联系不上主机就放弃这份数据。
; /var/named/30.168.192.rev 反向区域文件片段 $TTL 3600 @ IN SOA ns1.lib.example. admin.lib.example. (2024010101 3600 900 604800 86400) IN NS ns1.lib.example. 11 IN PTR ns1.lib.example. 11 IN PTR www.lib.example. 11 IN PTR ftp.lib.example.反向区域的网络号要倒着写,192.168.30.0/24 对应30.168.192.in-addr.arpa,写成192.168.30.in-addr.arpa是最常见的错误,配完反查永远超时。同一个地址可以有多条 PTR,但反查一般只返回第一条,别指望靠这个做负载均衡。另外原文档提到的“唯高速缓存服务器”其实就是只配转发器、不建任何区域的解析器,适合放在分支节点减少跨段查询。
4.3 DHCP 作用域、租约与静态绑定
DHCP 配置的核心是三个东西:地址池范围、租约时长、保留地址。原文档把租约设成 1 天,在阅览区这种人员流动大的场景偏长,地址池小的时候容易耗尽。一般办公终端 8 小时、公共终端 1~2 小时比较合适。
# DHCP 服务主配置 option domain-name "lib.example"; option domain-name-servers 192.168.30.11, 192.168.30.12; default-lease-time 3600; max-lease-time 7200; subnet 192.168.10.0 netmask 255.255.255.128 { range 192.168.10.20 192.168.10.120; # 前 20 个地址留给手工配置的设备 option routers 192.168.10.1; } # 服务器和网络打印机用 MAC 绑定固定地址,不参与动态分配 host srv-web { hardware ethernet 00:11:22:33:44:55; fixed-address 192.168.30.11; }range从 .20 开始是为了把 .1 到 .19 空出来给网关、交换机和临时调试用的静态设备,这个习惯能避免地址冲突。option routers下发的是本 VLAN 的网关地址,写错整个网段都上不了网。fixed-address做绑定比在服务器上手工设静态地址更好管,设备换网卡时只改一个 MAC 就行。
4.4 WEB 与 FTP:目录权限和被动模式
WEB 站点的坑基本都在权限上。原文档在建站时勾了“读取、写入、目录浏览”,这三项全开等于把站点目录结构暴露给所有人,还能往网站根目录写文件,属于典型的配置过度。合理的做法是根目录只读,单独开一个上传目录给写入权限,目录浏览关掉,首页文件放进默认文档列表。
FTP 的问题更集中,十次“能登录但列不出目录”里有八次是被动模式端口没放行。FTP 的控制连接走 21 端口,数据传输在被动模式下会临时协商一个高位端口,防火墙只放行 21 就会出现登录成功、ls卡死的现象。
# FTP 服务关键配置 anonymous_enable=NO # 关闭匿名登录,只允许账号访问 local_enable=YES write_enable=YES local_umask=022 chroot_local_user=YES # 把用户锁在自己的主目录 allow_writeable_chroot=YES pasv_enable=YES pasv_min_port=30000 # 被动模式端口段,防火墙要同步放行 pasv_max_port=30100chroot_local_user把用户限制在家目录里,防止有人用cd ../../翻到系统目录;pasv_min_port和pasv_max_port划出一段固定端口,防火墙按段放行,比放开全部高位端口安全得多。这套配置和前面 DNS、DHCP 一起放进交付文档,别人拿到就能照着复现。
5. 避坑与排查:五个从 ping 不通到服务起不来的现场
5.1 编址与二层类问题
现象一:某个 VLAN 里第 63 台机器拿不到地址,前 62 台正常。原因基本可以锁定在掩码上。/26 网段只有 64 个地址,去掉网络号、广播地址和网关,实际可用 61 个,第 62 台开始就没地址了,客户端会掉到 169.254 段。解决办法是重新算主机数,阅览区这种密集区域直接给 /25,或者拆成两个 VLAN 各走一个 /26。规划阶段把可用地址数写进表格,能省掉后期大量返工。
现象二:同一 VLAN 内互通,跨 VLAN 全不通。先看核心交换机有没有开ip routing,再看终端网关地址填的是不是本 VLAN 的 SVI 地址。只配了 SVI 没开路由是课设里最高频的错误,因为 VLAN 建了、地址配了、接口也 up 了,看起来一切正常,就是不转发。命令行下show ip route看不到直连网段,基本就能确认。
现象三:网络时通时断,延迟忽高忽低。多半是二层环路。常见触发方式是接入口开了portfast,下面又挂了一台小交换机,两根线接回同一台接入设备,STP 拓扑反复震荡。处理办法是上联口一律不开portfast,接入端口开bpduguard,发现收到 BPDU 就自动 err-disable,把环路端口隔离掉,然后顺着show spanning-tree的输出找异常端口。
5.2 服务与权限类问题
现象四:FTP 账号能登录,执行列目录命令卡住直到超时。这是被动模式端口被拦的典型表现。控制连接 21 端口通了,数据连接协商的高位端口被防火墙丢包,客户端就一直等。解决方式是在服务端固定被动端口段,防火墙同步放行;客户端临时验证时可以切主动模式,但生产环境不建议,主动模式在 NAT 后面问题更多。
现象五:浏览器访问站点返回 403,首页文件明明存在。两个方向查:一是默认文档列表里没有index.html,请求打到目录上被拒绝;二是服务运行账户对站点目录没有读权限。文件系统权限和服务自身的权限是两套东西,只改一套没用。我一般先临时开目录浏览,能列出文件就说明是默认文档问题,列不出就是权限问题,定位很快。
5.3 一套固定的排查顺序
排错最忌讳东一榔头西一棒子,固定顺序能少走很多弯路:先看本机地址对不对,再 ping 网关,再 ping 同网段邻居,再 ping 跨网段目标,最后才查服务和端口。
# 客户端:确认地址、网关、DNS 是不是 DHCP 正确下发的 ipconfig /all ipconfig /release && ipconfig /renew ipconfig /flushdns # 改完 DNS 记录必须清本地缓存 # 服务器:确认服务在监听,端口没有被防火墙挡住 ss -lntp | grep -E ':(53|67|80|21)\b'第一层不通就别往上看服务,网络层没通的情况下调应用配置纯属浪费时间。DNS 改完记录不生效,九成是本地缓存或区域文件序列号没加,flushdns加重新加载区域基本能解决。
6. 验收与交付:把“能跑”变成可复核的证据
课设最后一步不是截几张图就完事,测试记录要能让别人照着复现。我习惯按下面的用例表逐条走,每条留下命令输出或抓包截图,报告的可信度完全取决于这些证据。
| 编号 | 用例 | 操作 | 预期结果 |
|---|---|---|---|
| T01 | DHCP 自动获取 | 客户端释放并续租 | 拿到本 VLAN 网段地址、正确网关和 DNS |
| T02 | 同 VLAN 互通 | ping 同网段邻居 | 通,延迟小于 1ms |
| T03 | 跨 VLAN 访问 | ping 其他 VLAN 网关与主机 | 通 |
| T04 | DNS 正向解析 | nslookup www.lib.example | 返回 192.168.30.11 |
| T05 | DNS 反向解析 | nslookup 192.168.30.11 | 返回对应域名 |
| T06 | WEB 访问 | 浏览器打开站点 | 返回首页,状态 200 |
| T07 | FTP 上传下载 | 登录后上传、下载各一个文件 | 成功,权限符合预期 |
| T08 | 出口连通 | ping 外部地址与域名 | 均通 |
| T09 | 链路冗余 | 断开主用上联 | 备用链路接管,业务中断可控 |
T01 值得多花点时间,抓一次 DHCP 的四步交互,Discover、Offer、Request、ACK 四个报文齐全,说明中继和地址池
本文还有配套的精品资源,点击获取