简介:这份资源是面向高校计算机网络课程设计场景的电子图书馆网站设计方案文档,适合正在完成《计算机网络I》课程设计、需要提交完整设计报告的学生参考。内容围绕可接入Internet的电子图书馆站点展开,涵盖1000M主干网与100M到点的网络架构、不少于4个子网划分、DNS/DHCP/WEB/FTP等服务选型配置,以及简单WEB主页编写,并附课程设计大纲、任务书、评分标准与报告章节要求。资源包共1个doc文件,约26KB,以Word文档形式集中呈现需求分析、硬软件选型、拓扑结构与配置过程等设计要点。已有948人学习下载,可帮助读者快速理清选题思路、对照评分标准组织报告结构,并借鉴子网划分与服务配置的表述方式,减少从零构思的时间。
1. 从一台装了三遍才通的服务器说起:电子图书馆网站设计环境搭建
去年帮某高校做《计算机网络 I》课程设计的辅导,有个 A 同学抱着笔记本过来,说他的电子图书馆网站本地跑得好好的,一搬到实验室那台服务器上就全乱套——DNS 解析不了域名,DHCP 分配出去的地址跟静态 IP 打架,FTP 传上去的 PDF 打开是乱码。我上去一看,问题根本不在代码,在于他从头到尾没把「环境」当回事:操作系统版本随手选、服务软件版本对不上、子网划分拍脑袋定的。这套课程设计看着是写网页,实际上考的是你能不能把 DNS、DHCP、WEB、FTP 四套服务在一台或几台机器上配明白,还要满足 1000M 主干、100M 到点、至少 4 个子网的硬指标。装不好,报告写得再漂亮,演示那一步跑不通就是零分。这篇笔记就是把我带学生踩过的坑按安装顺序捋一遍,适合正在做电子图书馆网站设计、卡在环境配置上的同学照着走。
2. 装之前先把环境账算清:系统版本与服务软件选型
2.1 操作系统与硬件的最低配置
这套课程设计的核心是网络服务,不是图形界面,所以系统选型的第一原则是「服务好装、日志好看、出问题能查」。我一般推荐两条路线:一是 Ubuntu Server 22.04 LTS,二是 CentOS Stream 9 或者 Rocky Linux 9。前者 apt 源新、文档多,适合新手;后者跟企业环境接近,SELinux 和 firewalld 的坑踩一遍对理解网络服务有好处。别用桌面版硬扛,桌面版多出来的 NetworkManager 和图形服务会跟手工配的静态路由抢控制权,A 同学那次 DNS 时好时坏就是 NetworkManager 在背后改 resolv.conf。
硬件上,课程设计大纲要求「100 个以上的站点」,这个「站点」指的是网络节点,不是网站数量,别理解偏了。按 100 个节点算,一台普通 PC 做服务器足够:4 核 CPU、8GB 内存、两块网卡(一块接外网做 NAT,一块接内网交换机)、系统盘 60GB 以上。如果实验室给的是虚拟机,记得把网卡模式设成「桥接」或「仅主机 + NAT」双网卡,别全用 NAT,否则子网之间没法做路由实验。
| 组件 | 最低配置 | 推荐配置 | 说明 |
|---|---|---|---|
| CPU | 2 核 | 4 核 | 跑 BIND + DHCP + Apache + vsftpd 够用 |
| 内存 | 4GB | 8GB | 同时开多个服务时留余量 |
| 网卡 | 1 块 | 2 块 | 双网卡方便做内外网隔离 |
| 系统盘 | 40GB | 60GB | 电子书 PDF 占空间,FTP 目录要留够 |
| 操作系统 | Ubuntu 20.04 | Ubuntu 22.04 / Rocky 9 | LTS 版本,别用滚动发行版 |
2.2 服务软件版本对照与安装顺序
四套服务里,BIND 和 DHCP 的版本差异最容易翻车。Ubuntu 22.04 自带 BIND 9.18,配置文件语法跟老教程里的 9.11 有出入,比如named.conf.options里dnssec-validation的默认值变了,照抄老教程会起不来。DHCP 用 isc-dhcp-server 4.4 系列,配置文件的 subnet 声明必须跟实际网卡网段严格对应,差一位就分配不出去。WEB 服务用 Apache 2.4 或 Nginx 1.18 都行,课程设计演示静态页面为主,Apache 的DocumentRoot和虚拟主机配置更直观。FTP 用 vsftpd 3.0,注意它默认禁止本地用户登录,要改local_enable=YES。
安装顺序有讲究:先配网络和静态 IP,再装 BIND,然后 DHCP,接着 WEB,最后 FTP。原因是 DHCP 依赖网络接口的静态地址,BIND 的正反向解析要跟子网划分对齐,WEB 和 FTP 只是挂在上面的应用。反过来装,你会在一堆「服务起不来」的报错里迷失。
# Ubuntu 22.04 上一次性装齐四套服务 sudo apt update sudo apt install -y bind9 bind9utils isc-dhcp-server apache2 vsftpd # 检查各服务版本,确认跟教程对得上 named -v dhcpd --version apache2 -v vsftpd -v这段命令先更新源再批量安装,-y是免交互确认。装完立刻查版本,是因为网上教程版本混杂,你至少要知道自己手里是 9.18 还是 9.11,后面改配置才知道该信哪份文档。bind9utils里带named-checkconf和named-checkzone,这两个工具在排错时是救命稻草,别省。
3. 网络底座配置:子网划分、静态 IP 与路由转发
3.1 四个子网的划分方案与 IP 分配表
大纲要求「至少划分 4 个以上的子网」,我一般带学生划 5 个:一个服务器管理网段、一个图书馆业务网段、一个读者访问网段、一个实验备用网段,外加一个互联路由的 /30 小网段。用 192.168.0.0/16 私有地址空间来切,每个子网 /24,够 100 个节点绰绰有余。关键是每个子网的网关地址要固定,DHCP 的地址池要避开网关和服务器静态地址。
| 子网 | 网段 | 网关 | 用途 | DHCP 地址池 |
|---|---|---|---|---|
| 管理网 | 192.168.10.0/24 | 192.168.10.1 | 服务器管理口 | 不分配 |
| 业务网 | 192.168.20.0/24 | 192.168.20.1 | WEB/FTP 服务器 | 192.168.20.100-200 |
| 读者网 | 192.168.30.0/24 | 192.168.30.1 | 客户端接入 | 192.168.30.100-200 |
| 备用网 | 192.168.40.0/24 | 192.168.40.1 | 扩展实验 | 192.168.40.100-150 |
| 互联段 | 10.0.0.0/30 | 10.0.0.1 | 路由器互联 | 不分配 |
这张表建议直接抄进课程设计报告的「子网划分」章节,评分标准里拓扑结构占 20%,表格化呈现比文字描述得分稳。
3.2 静态 IP 与路由转发的落地配置
Ubuntu 22.04 用 netplan 管网络,配置文件在/etc/netplan/下,YAML 格式对缩进极其敏感,多一个空格就整段失效。下面是一个双网卡服务器的配置示例,ens33接内网交换机,ens34接外网出口。
# /etc/netplan/01-netcfg.yaml network: version: 2 ethernets: ens33: addresses: - 192.168.20.10/24 # 业务网服务器地址 routes: - to: 192.168.30.0/24 via: 192.168.20.1 # 到读者网走业务网关 ens34: addresses: - 10.0.0.2/30 # 互联段地址 routes: - to: default via: 10.0.0.1 # 默认路由指向出口改完执行sudo netplan apply,然后用ip addr和ip route确认地址和路由都生效。这里最容易翻车的是 YAML 缩进和routes的写法,老版本 netplan 用gateway4,22.04 已经废弃,照抄老教程会报「unknown key gateway4」。如果netplan apply之后网络断了,别慌,用sudo netplan --debug apply看具体哪一行解析失败,或者直接sudo ip addr add临时把地址加回去再改文件。
路由转发要单独开,否则子网之间不通,DHCP 跨网段也做不了。编辑/etc/sysctl.conf加一行net.ipv4.ip_forward=1,然后sudo sysctl -p生效。这一步是很多同学漏掉的,结果读者网能拿到 IP 但 ping 不通业务网,查半天以为是 DHCP 配错了。
4. 四套核心服务的安装与配置:DNS、DHCP、WEB、FTP
4.1 BIND 9.18 的正反向解析配置
BIND 的配置分三块:named.conf.local声明区域,db.开头的区域文件写解析记录,named.conf.options配转发和监听。电子图书馆网站至少要有library.local这个域名,正向解析把域名指到 WEB 服务器 IP,反向解析把 IP 指回域名,评分时反向解析是加分项。
# /etc/bind/named.conf.local 追加区域声明 zone "library.local" { type master; file "/etc/bind/db.library.local"; }; zone "20.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192.168.20"; };区域文件里$TTL设 604800,SOA 记录的序列号每次改完要加一,否则从服务器不更新。A 记录把www.library.local指到192.168.20.10,PTR 记录反过来写。改完必须跑sudo named-checkconf和sudo named-checkzone library.local /etc/bind/db.library.local,两个都返回 OK 再sudo systemctl restart bind9。我见过太多人跳过检查直接重启,服务起不来还找不到原因,journalctl -u bind9 -n 30一看全是语法错误行号。
4.2 isc-dhcp-server 的地址池与作用域
DHCP 配置文件/etc/dhcp/dhcpd.conf里,每个子网一个subnet块,range写地址池,option routers写网关,option domain-name-servers写 DNS 地址。关键点:dhcpd.conf里声明的网段必须跟服务器某块网卡的地址在同一网段,否则服务启动直接报「no subnet declaration」。
# /etc/dhcp/dhcpd.conf 核心片段 subnet 192.168.30.0 netmask 255.255.255.0 { range 192.168.30.100 192.168.30.200; option routers 192.168.30.1; option domain-name-servers 192.168.20.10; option domain-name "library.local"; default-lease-time 3600; max-lease-time 7200; }还要在/etc/default/isc-dhcp-server里指定监听网卡INTERFACESv4="ens33",不指定的话服务默认监听所有网卡,跨网段分配会乱。改完sudo systemctl restart isc-dhcp-server,然后在读者网的一台客户机上sudo dhclient -v看能不能拿到 192.168.30.x 的地址。拿不到先看服务器journalctl -u isc-dhcp-server,最常见的是防火墙没放行 UDP 67,sudo ufw allow 67/udp解决。
4.3 Apache 虚拟主机与 vsftpd 匿名访问
Apache 的默认站点在/var/www/html,把电子图书馆的首页index.html放进去就能访问。但课程设计要求「编写简单的 WEB 主页」,建议配一个虚拟主机,把域名www.library.local绑上去,显得规范。在/etc/apache2/sites-available/下新建library.conf,DocumentRoot指到/var/www/library,ServerName写域名,然后sudo a2ensite library.conf启用,sudo systemctl reload apache2。
vsftpd 的配置在/etc/vsftpd.conf,课程设计演示用匿名访问最省事,改三行:anonymous_enable=YES、local_enable=YES、write_enable=YES。FTP 根目录默认是/srv/ftp,把电子书 PDF 放进去,客户机用ftp 192.168.20.10匿名登录就能下载。注意被动模式要开pasv_enable=YES并指定端口范围,否则跨子网访问时数据连接建不起来,现象是能登录但ls卡住——这个坑我踩过不止一次。
5. 装完别急着交报告:验证跑通与排错清单
5.1 五步验证法确认整套环境可用
服务全起起来不等于跑通,我一般让学生按下面五步走一遍,每步都有明确的预期结果,任何一步不对就停下来查,别往下走。
# 第一步:DNS 正向解析 dig www.library.local @192.168.20.10 +short # 预期输出 192.168.20.10 # 第二步:DNS 反向解析 dig -x 192.168.20.10 @192.168.20.10 +short # 预期输出 www.library.local. # 第三步:DHCP 分配(在客户机上执行) sudo dhclient -v ens33 ip addr show ens33 | grep 192.168.30 # 预期拿到 192.168.30.100-200 之间的地址 # 第四步:WEB 访问 curl -I http://www.library.local # 预期返回 HTTP/1.1 200 OK # 第五步:FTP 匿名登录 ftp -n 192.168.20.10 <<EOF user anonymous test@test.com ls bye EOF # 预期列出 /srv/ftp 下的电子书文件这五步覆盖了大纲要求的 DNS、DHCP、WEB、FTP 四类服务,加上子网互通,正好对应评分标准里「设备配置、IP 描述、原代码是否完备」那 60% 的分。每步的预期结果写进报告,比空口说「配置成功」有说服力。
5.2 三个高频故障的定位手法
第一个高频故障是 DNS 解析超时。先systemctl status bind9看服务状态,再ss -tulnp | grep 53确认 53 端口在监听,最后named-checkconf查语法。如果服务正常但解析超时,八成是防火墙拦了 UDP 53,sudo ufw allow 53放行。
第二个是 DHCP 客户端拿不到地址。在服务器上journalctl -u isc-dhcp-server -f实时看日志,同时客户机dhclient -v看交互过程。常见原因是dhcpd.conf里的 subnet 跟网卡地址不匹配,或者/etc/default/isc-dhcp-server里网卡名写错。
第三个是 FTP 能登录但列不出目录。这是被动模式端口没放行,pasv_min_port=30000、pasv_max_port=31000配上,防火墙放行这个范围,再试。
提示:每改完一个服务的配置,先跑对应的语法检查命令再重启,BIND 用
named-checkconf,DHCP 用dhcpd -t,Apache 用apache2ctl configtest。养成这个习惯,能省掉一半「服务起不来」的排查时间。
从那以后我每次带人做这套课程设计,都强制要求先跑完五步验证再动笔写报告,配置文件和验证截图一起存档。环境这东西,装的时候多花十分钟检查,演示的时候就少一次当众翻车。希望帮到你。
本文还有配套的精品资源,点击获取