电子图书馆网站设计:DNS/DHCP/Web/FTP四类服务配置与子网划分实战 简介这份资源是《计算机网络 I》课程设计的电子图书馆网站设计完整方案面向高校计算机与网络相关专业学生及自学者帮助解决从需求分析到网络规划、服务配置与网页发布的综合实践难题。压缩包共1个doc文件约26KB以课程设计报告形式呈现涵盖设计目的与任务书、需求分析、硬件与软件选型、网络拓扑与子网划分、DNS/DHCP/WEB/FTP等服务配置过程以及简单WEB主页的代码设计与发布说明并附评分标准与文档规范要求。读者可据此对照完成1000M主干、100M到点、至少4个子网的站点规划理清服务器、交换机、路由器的选型与IP分配思路掌握报告撰写结构与常见问题解决办法。目前已有948人学习下载适合需要按课程设计大纲系统完成网站设计类题目的学习者参考。1. 从一份课程设计任务书说起电子图书馆网站到底要交付什么很多人看到“电子图书馆网站设计”第一反应是写几个 HTML 页面、放几张图书封面就完事。但这份《计算机网络 I》课程设计的任务书里真正压分量的不是页面而是网络本身站点要能接入 Internet内部 1000M 主干、100M 到桌面至少划 4 个子网还要把 DNS、DHCP、WEB、FTP 四类服务全部跑起来。换句话说这是一个“网络工程 轻量 Web 应用”的复合型项目页面只是门面子网划分、地址分配、服务配置才是骨架。它适合两类人一类是正在做计网课设、需要一份能照着搭起来并写进报告的完整参考另一类是已经工作、想回头把 DNS/DHCP/Web/FTP 这套经典服务链路重新捋一遍的开发者。下面按“先看清结构、再跑通服务、最后动手改”的顺序拆。2. 整体架构与目录结构四类服务如何落在一张拓扑图上2.1 网络拓扑与子网划分方案任务书要求 100 个以上站点、1000M 主干、100M 到点、至少 4 个子网。落到实际设计上常见做法是用一台三层交换机或路由器做核心下挂若干接入交换机按功能把网络切成四块服务器区、图书馆业务区、读者访问区、管理运维区。这样划分的好处是广播域隔离、故障不扩散也方便在报告里画拓扑图。以192.168.10.0/24为基准做变长子网划分一个可落地的方案如下子网网段用途网关VLAN 10192.168.10.0/26服务器区DNS/DHCP/Web/FTP192.168.10.1VLAN 20192.168.10.64/26图书馆业务终端192.168.10.65VLAN 30192.168.10.128/26读者公共访问区192.168.10.129VLAN 40192.168.10.192/26管理运维区192.168.10.193每个 /26 可用主机 62 个四个子网合计 248 个地址满足“100 个以上站点”的要求且留有余量。服务器区单独成网段是关键——DNS 和 DHCP 一旦和业务终端混在一个广播域里排查起来就是血泪经验。2.2 项目目录结构Web 部分建议用最轻的组合静态主页 一个简单的后端接口避免把课设做成大型框架。目录可以这样组织elib-site/ ├── conf/ │ ├── named.conf # DNS 主配置 │ ├── db.elib.local # 正向解析区文件 │ ├── db.192.168.10 # 反向解析区文件 │ └── dhcpd.conf # DHCP 地址池配置 ├── web/ │ ├── index.html # 图书馆首页 │ ├── search.html # 图书检索页 │ ├── static/ │ │ ├── css/style.css │ │ └── js/search.js │ └── api/ │ └── books.json # 模拟图书数据 ├── ftp/ │ └── ebooks/ # 电子书下载目录 └── scripts/ ├── setup_dns.sh ├── setup_dhcp.sh └── setup_web_ftp.shconf/放服务端配置web/是站点根目录ftp/ebooks/挂电子书资源scripts/把重复的安装配置动作脚本化。课设报告里“程序文件列表”这一项直接照这个结构写就够清晰。2.3 服务与端口的对应关系四类服务各占各的端口配置时别搞混DNS 走 53TCP/UDPDHCP 走 67/68UDPWeb 走 80/443FTP 走 21 控制端口加被动模式的数据端口段。服务器区那台主机同时承载这四个角色时防火墙规则要放行对应端口否则现象就是“服务明明启动了客户端就是连不上”——这是后面避坑章节要展开的第一个坑。3. 核心服务配置拆解DNS、DHCP、Web、FTP 逐个落地3.1 DNS 正向与反向解析配置DNS 是整个站点的入口域名解析不通后面 Web 和 FTP 都白搭。以 BIND 为例主配置文件声明区# conf/named.conf 片段 options { directory /var/named; allow-query { any; }; recursion yes; }; zone elib.local IN { type master; file db.elib.local; }; zone 10.168.192.in-addr.arpa IN { type master; file db.192.168.10; };区文件里至少要有 SOA、NS、A 记录和反向 PTR# conf/db.elib.local $TTL 86400 IN SOA ns.elib.local. admin.elib.local. ( 2024010101 ; serial 3600 ; refresh 1800 ; retry 604800 ; expire 86400 ) ; minimum IN NS ns.elib.local. ns IN A 192.168.10.10 www IN A 192.168.10.10 ftp IN A 192.168.10.10serial每次改完区文件必须递增否则从服务器不会同步www和ftp都指向同一台服务器 IP是因为课设规模下四类服务常合并部署。反向区文件里写10 IN PTR www.elib.local.即可完成 192.168.10.10 的反查。配完用named-checkconf和named-checkzone先做语法校验再systemctl restart named能省掉大量“改了没生效”的困惑。3.2 DHCP 地址池与保留地址DHCP 负责给业务区和读者区自动发地址服务器区则用静态地址。dhcpd.conf的核心是声明子网、地址池和网关# conf/dhcpd.conf 片段 subnet 192.168.10.64 netmask 255.255.255.192 { range 192.168.10.70 192.168.10.120; option routers 192.168.10.65; option domain-name-servers 192.168.10.10; default-lease-time 3600; max-lease-time 7200; } host lib-pc01 { hardware ethernet 00:11:22:33:44:55; fixed-address 192.168.10.66; }range要避开网关地址和保留段option domain-name-servers指向 3.1 里配好的 DNS这样客户端拿到地址的同时也拿到了正确的解析服务器。host段做 MAC 绑定给需要固定地址的业务终端用。改完先dhcpd -t -cf /etc/dhcp/dhcpd.conf做配置测试再重启服务客户端侧用ipconfig /release加ipconfig /renewWindows或dhclient -r加dhclientLinux验证。3.3 Web 主页与检索接口Web 层不需要重框架静态页加一个 JSON 数据源就能撑起“编写简单的 WEB 主页”这条要求。首页负责导航检索页用前端脚本过滤books.json// web/static/js/search.js async function searchBooks(keyword) { const res await fetch(/api/books.json); const books await res.json(); // 按书名或作者做不区分大小写的模糊匹配 return books.filter(b b.title.toLowerCase().includes(keyword.toLowerCase()) || b.author.toLowerCase().includes(keyword.toLowerCase()) ); } document.getElementById(searchBtn).addEventListener(click, async () { const kw document.getElementById(keyword).value.trim(); const result await searchBooks(kw); renderList(result); // renderList 负责把结果渲染到列表容器 });fetch拉取同源下的books.jsonfilter做书名和作者双字段匹配renderList是渲染函数把结果拼成 DOM 节点。数据量在课设规模下几十到上百条完全够用不需要上数据库。如果想让报告里的“扩展功能”加分可以把books.json换成后端接口用 Python Flask 或 Node Express 包一层前端代码几乎不用改。3.4 FTP 电子书下载服务FTP 用来放电子书文件配置重点是匿名只读或账号只读避免被随意上传。以 vsftpd 为例# /etc/vsftpd/vsftpd.conf 关键项 anonymous_enableYES anon_root/srv/ftp/ebooks anon_upload_enableNO anon_mkdir_write_enableNO local_enableYES write_enableNO pasv_enableYES pasv_min_port30000 pasv_max_port30100anon_root指向电子书目录anon_upload_enableNO关掉匿名上传pasv_min_port和pasv_max_port限定被动模式端口范围方便在防火墙上只开这一段。被动模式是客户端在 NAT 后面能否连上的关键端口段不固定的话防火墙规则就没法写。配完用ftp命令行或浏览器ftp://ftp.elib.local验证能列目录、能下载即算通过。4. 避坑与排查四个最容易翻车的点4.1 服务启动了但客户端连不上现象服务器上systemctl status显示 DNS、DHCP、Web 全部 active客户端却解析失败、拿不到地址、打不开页面。原因九成是防火墙或 SELinux 拦了端口或者服务只监听了 127.0.0.1。解决先ss -tulnp看监听地址是不是0.0.0.0再检查firewall-cmd --list-ports是否放行了 53/67/68/80/21 和被动端口段SELinux 环境下用getenforce确认状态必要时对 FTP 目录打semanage fcontext标签。排查顺序固定为“监听地址 → 防火墙 → SELinux”能少走很多弯路。4.2 DHCP 发地址但客户端上不了网现象客户端ipconfig能看到 192.168.10.x 的地址ping 网关通ping 外网不通。原因通常是option routers写错或者核心设备上没配 NAT/路由回程。解决核对dhcpd.conf里每个 subnet 的option routers是否等于该子网网关再在核心设备上确认去往各 VLAN 的路由和出网口的地址转换配置。课设环境里最容易漏的是“服务器区能上网、业务区没配路由”这种半通状态。4.3 DNS 改了区文件不生效现象db.elib.local明明改了 A 记录nslookup还是旧结果。原因一是serial没递增二是客户端或本地有缓存三是改完没 reload。解决每次改区文件先把 SOA 里的 serial 加一执行rndc reload或重启 named客户端侧清缓存Windowsipconfig /flushdnsLinux 看systemd-resolved状态。反向解析忘了配 PTR 也是高频问题正向通、反向查不到报告里演示时很尴尬。4.4 FTP 能登录但列不出目录现象FTP 账号登录成功执行ls卡住或报“425 Failed to establish connection”。原因是被动模式端口段没在防火墙放行或者pasv_address没配成服务器对外地址。解决确认pasv_min_port/pasv_max_port与防火墙放行段一致NAT 环境下补pasv_address服务器公网或映射地址客户端切主动/被动模式对比测试。这个坑在课设答辩现场演示时最容易暴露提前用命令行客户端验证一遍比什么都稳。5. 二次开发与验证把课设做成能讲清楚的作品5.1 从静态数据到可检索书库books.json是最容易改造的入口。把静态文件换成后端接口前端searchBooks里的fetch地址一改即可检索逻辑可以从“前端过滤”下沉到“后端查询”顺便把分页、分类筛选加上。验证方法很直接构造 200 条以上测试数据测关键词命中率、空结果提示、特殊字符输入比如书名里带引号是否导致脚本报错。这一步做完报告里“扩展程序的功能”那一栏就有实打实的内容可写。5.2 服务配置脚本化与可复现课设最怕“当时配通了换台机器就复现不了”。把 3.1 到 3.4 的配置动作收进scripts/下的三个脚本每个脚本开头做环境检查、结尾做服务状态断言#!/bin/bash # scripts/setup_dns.sh set -e named-checkconf /etc/named.conf || { echo 配置语法错误; exit 1; } systemctl restart named sleep 2 dig 127.0.0.1 www.elib.local short | grep -q 192.168.10.10 \ echo DNS 验证通过 || { echo DNS 解析失败; exit 1; }set -e让脚本遇错即停dig short做结果断言验证不通过直接非零退出。这样换环境重跑一遍脚本通不通一目了然报告里的“配置过程”也有了可复现的依据。5.3 拓扑与地址规划的调整技巧想扩到更多子网时别急着改 /26先把地址规划表拉出来重算。常见做法是保留服务器区 /26 不动把业务区和读者区各拆成两个 /27管理区维持 /26这样总子网数上去了服务器区地址不受影响。改完记得同步更新 DHCP 的 subnet 声明、核心设备的路由和 ACL三处不一致就是新的故障源。验证时按“先 ping 网关、再 ping 跨子网、最后测服务”的顺序走一遍比东一榔头西一棒子高效得多。我自己的习惯是每次动网络配置前先把当前能通的链路用ping和traceroute记一遍基线改完逐条对比哪条断了立刻能定位到是哪一步引入的。这个习惯帮我省掉了无数次“改完不知道哪里坏了”的返工。希望帮到你。本文还有配套的精品资源点击获取