简介本资源是一份面向计算机专业本科生的《计算机网络》课程实验报告文档聚焦操作系统级网络配置实践帮助学习者系统掌握Windows与Linux双平台下的TCP/IP协议栈配置、网络接口管理及连通性测试方法。文档严格遵循高校实验报告规范涵盖实验目的、原理、环境、步骤及排版要求详细说明计算机名、IP地址、DNS、网关等核心配置项并提供CMD与终端命令如ipconfig /all、ping、图形工具、setup文本配置等多路径实操方案附有图表示例与验证逻辑。资源为单文件Word文档.doc大小967KB格式规范、内容完整可直接用于课程提交或自学复盘。目前已有138人下载学习适合网络基础教学、实验预习与课后巩固使用。1. 这不是一份普通实验报告它是一份可直接复用的「双系统网络配置实操手册」覆盖 Windows XP 到现代 Win10/11、RHEL/CentOS 到 Ubuntu/Debian/rocky linux 10 的全链路命令级配置路径你手头这份《计算机网络》操作系统网络配置实验.doc表面看是华侨大学工学院一份带排版规范的课程作业文档但拆开细看——它藏着一套被严重低估的、跨年代、跨发行版、跨配置方式的网络配置实战知识图谱。它不讲空泛理论而是用真实 DOS 命令、vi 编辑器操作、ifconfig route hostname 组合拳把“怎么让一台机器真正连上网”这件事从 BIOS 启动后第一行提示符开始一帧一帧录了下来。尤其关键的是它默认采用 VMware 桥接模式Bridged Networking这意味着所有配置在真实物理机、VMware Workstation、VirtualBox 甚至 WSL2 的桥接网卡场景下全部可平移复用。新手照着图 13 和图 27 打命令就能通熟手则会立刻盯住图 16inittab 运行级别改 3、图 28resolv.conf 拼写错误原文写成resolv.cof这些细节——它们不是笔误而是教学现场最真实的“血泪经验”。这不是 PDF 里翻两页就丢的资料它是你下次在客户机房调试 Ubuntu 22.04 网络不通、或在新装的 Rocky Linux 9 上死活配不上 DNS 时能直接 CtrlF 搜到resolv.conf并秒改生效的救命纸。适合刚学完《计算机网络》第 4 章 TCP/IP 协议栈、正对着ipconfig /all和ifconfig发懵的大二学生也适合需要给 200 人企业快速部署标准化 Linux 终端环境的运维老鸟——因为它的每一步都踩在真实终端的回车键上。2. 从 DOS 到 BashWindows 与 Linux 网络配置的底层逻辑对齐与命令映射2.1 Windows 网络配置的两种路径图形界面只是表象CMD 才是真相很多初学者误以为 Windows 网络配置点点鼠标。但这份实验报告用图 12 和图 13 明确划清了界限图形界面Control Panel → Network Connections → Local Area Connection → Properties只是配置入口其背后调用的仍是同一套内核网络栈。而真正决定配置是否持久、是否可脚本化、是否能在无 GUI 的 Server Core 或 Windows PE 下运行的是 CMD 命令行。实验要求用netsh interface ip set address和netsh interface ip set dns完成 IP、掩码、网关、DNS 的设置这正是现代 WindowsWin7 至 Win11仍完全兼容的工业级命令。我们来还原图 13 和图 14 的完整命令序列并补全现代系统适配要点# 【关键】先确认网络接口名称现代 Windows 不再叫 本地连接 netsh interface show interface # 假设输出中显示 以太网 为活动接口中文系统常见英文系统为 Ethernet # 设置 IPv4 地址、子网掩码、网关对应图 13 netsh interface ip set address name以太网 sourcestatic addr192.168.10.201 mask255.255.255.0 gateway192.168.10.254 gwmetric0 # 设置主 DNS 和备用 DNS对应图 14 netsh interface ip set dns name以太网 sourcestatic addr61.155.18.30 registerprimary netsh interface ip add dns name以太网 addr114.114.114.114 index2 # 【验证】立即生效无需重启 ipconfig /all | findstr IPv4.*地址.*DNS参数说明name以太网必须与netsh interface show interface输出的精确名称一致大小写敏感含空格gwmetric0设为 0 表示此网关为首选路由避免多网卡时路由混乱registerprimary强制将此 DNS 注册为首选index2是添加第二条 DNS 的标准语法findstr是 Windows 原生命令比grep更轻量适合嵌入批处理脚本。这个命令序列的价值在于它绕过了图形界面的抽象层直击 Windows TCPIP.SYS 驱动的 IOCTL 接口。你在 Windows Server 2022 的 Nano Server无 GUI上或在 WinPE 救援环境里只要能进 CMD这套命令就 100% 有效。而图形界面配置在无人值守部署如 SCCM、Intune中根本无法自动化。2.2 Linux 网络配置的三层架构命令行临时、配置文件永久、GUI辅助Linux 的配置逻辑比 Windows 更清晰分层实验报告图 27–31 已隐含此结构但未点破。我们按现代主流发行版Ubuntu 22.04/24.04, Rocky Linux 9/10, Debian 12重新梳理配置层级作用范围生效方式典型文件/命令是否推荐用于生产命令行即时配置重启即失效执行即生效ip addr add,ip route add,hostnamectl set-hostname✅ 快速验证、故障排查配置文件持久化重启后保留需systemctl restart networking或nmcli connection reload/etc/netplan/*.yaml(Ubuntu),/etc/sysconfig/network-scripts/ifcfg-*(RHEL),/etc/network/interfaces(Debian)✅✅ 生产环境唯一可靠方式GUI 图形配置依赖桌面环境通过 NetworkManager 服务同步GNOME Settings → Network⚠️ 仅限开发/测试机禁用于服务器以实验要求的192.168.10.2xx/24配置为例给出Ubuntu 22.04Netplan和Rocky Linux 10NetworkManager CLI的标准操作# 【Ubuntu 22.04】/etc/netplan/01-network-manager-all.yaml network: version: 2 renderer: networkd ethernets: enp0s3: # 替换为你的实际网卡名用 ip link show 查 dhcp4: false addresses: [192.168.10.201/24] routes: - to: default via: 192.168.10.254 nameservers: addresses: [61.155.18.30, 114.114.114.114]# 【Rocky Linux 10】使用 nmcliNetworkManager 命令行工具比直接改 ifcfg 更安全 # 1. 查看当前连接名 nmcli connection show # 2. 修改连接假设连接名为 System enp0s3 nmcli connection modify System enp0s3 \ ipv4.addresses 192.168.10.201/24 \ ipv4.gateway 192.168.10.254 \ ipv4.dns 61.155.18.30,114.114.114.114 \ ipv4.method manual # 3. 重启连接立即生效无需 reboot nmcli connection down System enp0s3 nmcli connection up System enp0s3为什么不用ifconfig实验报告图 27 仍用ifconfig这是历史惯性。但自 Linux kernel 3.0 起ifconfig已被iproute2工具集ip addr,ip route取代。ifconfig无法处理策略路由、多播组等高级功能且在 CentOS Stream/Rocky 9 中默认不预装。ip命令是唯一被内核长期维护的接口。2.3 双系统网络互通的核心桥接模式下的 ARP 与 ICMP 协议握手实验环境图 4 明确标注“桥接网络Bridged Networking”这是整个实验能成立的物理基础。桥接模式意味着VMware 的VMnet0虚拟交换机与宿主机物理网卡处于同一二层广播域。此时Windows 主机192.168.1.10和 Linux 虚拟机192.168.10.201虽在不同网段但只要宿主机开启了 IP 转发并配置了静态路由它们就能直接通信。这才是实验中ping 本机 IP图 3和跨系统互 ping 的底层原理。验证桥接是否生效的黄金三步法# 步骤1在 Windows 宿主机上确认能 ping 通 Linux 虚拟机的 IP ping 192.168.10.201 # 步骤2在 Linux 虚拟机上抓包看是否收到 Windows 的 ARP 请求证明二层可达 sudo tcpdump -i enp0s3 arp and host 192.168.1.10 -c 2 # 步骤3在 Linux 上检查路由表确认默认网关指向宿主机192.168.10.254 ip route show default # 应输出default via 192.168.10.254 dev enp0s3如果步骤1失败但步骤2成功说明二层通、三层不通——问题必在 Linux 的iptables/nftables防火墙或 Windows 的防火墙阻止了 ICMP。这是企业环境中最常踩的坑远比配错 IP 更隐蔽。3. 配置文件深水区resolv.conf的拼写陷阱、inittab的时代断层与netplan的 YAML 缩进玄学3.1resolv.conf一个拼写错误引发的 DNS 失效灾难实验报告图 28 中赫然写着vi /etc//resolv.cof—— 注意是.cof不是.conf。这绝非笔误而是教学现场最真实的“翻车瞬间”。resolv.conf是 Linux 解析域名的唯一权威文件但它的路径、权限、生成方式在不同发行版中差异极大发行版resolv.conf真实来源是否可直接编辑推荐修改方式Ubuntu 22.04 (Netplan)符号链接 →/run/systemd/resolve/stub-resolv.conf❌ 被 systemd-resolved 动态覆盖sudo systemd-resolve --set-dns61.155.18.30 --interfaceenp0s3Rocky Linux 9/10 (NetworkManager)符号链接 →/var/run/NetworkManager/resolv.conf❌ NM 服务自动管理nmcli connection modify conn-name ipv4.dns 61.155.18.30CentOS 7/8 (传统 ifcfg)真实文件/etc/resolv.conf✅ 可直接编辑echo nameserver 61.155.18.30现象学生按图 28 输入vi /etc//resolv.cof保存退出后ping www.baidu.com仍超时。原因文件名错误导致创建了一个无效的空文件resolv.cof而真正的resolv.conf未被修改更糟的是在 Ubuntu 上即使你正确编辑了/etc/resolv.confsystemd-resolved 也会在几秒后将其覆盖。解决先用ls -l /etc/resolv.conf看它指向哪里若是符号链接readlink -f /etc/resolv.conf查真实路径根据发行版选择对应修改方式见上表永远不要假设resolv.conf是静态文件。3.2inittab从 RHEL 6 到 Rocky Linux 10 的运行级别断层实验报告图 16 要求修改/etc/inittab中的id:5:initdefault:为id:3:initdefault:以进入字符终端。这在 RHEL 6/CentOS 6 时代是标准操作。但自 RHEL 7 起inittab已被systemd彻底废弃。Rocky Linux 10基于 RHEL 10使用systemctl set-default multi-user.target替代。现象学生在 Rocky Linux 10 上打开/etc/inittab发现文件为空或不存在执行vi /etc/inittab后修改无效。原因inittab在 systemd 系统中仅为兼容性保留实际由systemd的default.target控制启动级别。解决# 查看当前默认 target systemctl get-default # 设置为多用户字符界面target sudo systemctl set-default multi-user.target # 立即切换无需重启 sudo systemctl isolate multi-user.target提示multi-user.target≈ 传统 runlevel 3graphical.target≈ runlevel 5。systemctl list-units --typetarget可查看所有可用 target。3.3netplanYAML缩进空格数决定配置生死Ubuntu 18.04 强制使用 Netplan其配置文件是 YAML 格式。YAML 对缩进极其敏感——必须用空格不能用 Tab缩进数必须严格匹配层级。实验报告未涉及此点但这是 Ubuntu 用户最常栽跟头的地方。现象sudo netplan apply报错Invalid YAML at //etc/netplan/01-netcfg.yaml line 5 column 3: did not find expected key。原因第5行addresses:前多了1个空格或enp0s3:后少了2个空格导致 YAML 解析器认为addresses不属于enp0s3的子项。解决用vim打开输入:set list显示所有空格和 TabTab 显示为^I必须全部替换为空格用yamllint工具校验sudo apt install yamllint yamllint /etc/netplan/*.yaml黄金法则ethernets:下一级缩进 2 空格enp0s3:下一级缩进 4 空格addresses:下一级缩进 6 空格。4. 验证即真理用ip、ss、dig构建三层网络健康检查清单4.1 第一层链路层验证我能看见谁目标确认物理/虚拟网卡已启用MAC 地址正确能收发二层帧。# Windows # 查看网卡状态和 MAC ipconfig /all | findstr 描述.*物理地址 # Linux # 查看网卡 UP 状态、MAC、MTU ip link show enp0s3 | grep -E (state|link/ether|mtu) # 【关键】发送 ARP 请求验证局域网邻居可达性 arp -a | grep 192.168.10.254 # Windows arp -n | grep 192.168.10.254 # Linux为什么不用pingping是三层 ICMP 协议依赖 ARP 成功。如果arp -a里没有网关条目说明连二层都未通此时ping必然失败但错误根源在链路层而非网络层。4.2 第二层网络层验证我能到达谁目标确认 IP 地址、子网掩码、网关路由正确能转发三层包。# Windows # 检查 IP 配置和路由表 ipconfig /all | findstr IPv4.*子网掩码.*默认网关 route print | findstr 0.0.0.0 # Linux # 检查 IP 和默认路由 ip addr show enp0s3 | grep inet ip route show default # 【关键】绕过 DNS直接用 IP 测试网关连通性排除 DNS 干扰 ping -c 3 192.168.10.254注意ping -c 3是 Linux 限定发3个包Windows 用ping -n 3。测试必须用网关 IP而非域名——这是隔离 DNS 故障的第一步。4.3 第三层应用层验证我能解析和访问吗目标确认 DNS 解析正常TCP 连接可达服务端口开放。# Windows Linux 通用 # 1. DNS 解析测试用 nslookup 或 dig nslookup www.baidu.com 61.155.18.30 # 指定 DNS 服务器查询 # 或 Linux 专用 dig 61.155.18.30 www.baidu.com A short # 2. TCP 连通性测试验证端口是否开放比 ping 更准 # Windows PowerShell需管理员权限 Test-NetConnection -ComputerName www.baidu.com -Port 443 # Linux nc -zv www.baidu.com 443 # nc (netcat) 是终极端口检测工具 # 或用更轻量的 timeout 3 bash -c echo /dev/tcp/www.baidu.com/443 echo OK || echo FAIL # 3. 终极验证curl 获取 HTTP 头确认全栈通 curl -I https://www.baidu.com --connect-timeout 5为什么curl -I是终极验证它同时验证了DNS 解析www.baidu.com→ IP、TCP 三次握手443 端口、TLS 握手HTTPS、HTTP 协议响应。任何一个环节失败curl都会明确报错Could not resolve host,Connection refused,SSL connect error比ping或telnet信息量大得多。5. 避坑指南Windows 与 Linux 网络配置中 5 个真实发生过的致命错误5.1 现象Windowsnetsh设置后ipconfig显示 IP但ping网关超时原因网卡驱动异常或 VMware 桥接模式未正确启用。ipconfig只读取注册表配置不代表驱动已加载真实 IP。解决在设备管理器中卸载网卡驱动勾选“删除此设备的驱动程序软件”重启后让 Windows 重装在 VMware 中右键虚拟机 → Settings → Network Adapter → 确认 Bridged 模式已勾选且“Replicate physical network connection state”已启用。5.2 现象Linuxip addr add添加 IP 后ping本机新 IP 成功但ping网关失败原因子网掩码配置错误。例如将/24255.255.255.0误配为/16255.255.0.0导致系统认为网关192.168.10.254与本机192.168.10.201不在同一子网从而不走默认路由。解决ip addr show enp0s3检查inet行末尾的/xxip route show table local | grep 192.168.10.确认本地子网路由是否存在用ip addr flush dev enp0s3清空后重配。5.3 现象Ubuntunetplan apply成功但systemd-resolved仍使用 127.0.0.53 作为 DNS原因Netplan 配置了renderer: networkd但systemd-resolved服务仍在运行并劫持/etc/resolv.conf。解决sudo systemctl disable systemd-resolved停用该服务sudo rm /etc/resolv.conf sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf或改用renderer: NetworkManager并确保 NM 服务运行。5.4 现象Rocky Linuxnmcli修改 DNS 后cat /etc/resolv.conf仍显示旧 DNS原因NetworkManager 默认将 DNS 写入/var/run/NetworkManager/resolv.conf而/etc/resolv.conf是指向它的符号链接。但某些应用如 Docker会直接读/etc/resolv.conf若链接损坏则失效。解决ls -l /etc/resolv.conf确认是否为有效链接若损坏重建sudo rm /etc/resolv.conf sudo ln -sf /var/run/NetworkManager/resolv.conf /etc/resolv.confsudo systemctl restart NetworkManager强制刷新。5.5 现象ping本机 IP 成功ping网关成功但ping外网域名如www.baidu.com超时nslookup却能解析出 IP原因防火墙拦截了 ICMP 回应包ping用 ICMP但允许 DNS 查询UDP 53。这是企业网络常见策略。解决telnet www.baidu.com 443或nc -zv www.baidu.com 443测试 TCP若 TCP 通则确认是 ICMP 被策略屏蔽非配置错误用curl -I https://www.baidu.com验证业务层连通性。6. 进阶技巧用 Bash/PowerShell 脚本实现「一键双系统网络配置」与故障自检6.1 Linux 侧net-config-auto.sh—— 自动识别网卡、设置 IP、DNS、路由这个脚本解决了实验中最耗时的环节手动查网卡名、手动输 IP。它能自动完成从探测到验证的全流程#!/bin/bash # net-config-auto.sh - Ubuntu/Debian/Rocky 通用网络配置脚本 # 用法sudo ./net-config-auto.sh 192.168.10.201 255.255.255.0 192.168.10.254 61.155.18.30 if [ $# -ne 4 ]; then echo 用法: sudo $0 IP NETMASK GATEWAY DNS exit 1 fi IP$1 NETMASK$2 GATEWAY$3 DNS$4 # 1. 自动探测主网卡排除 lo, docker0, veth* ETH$(ip -br link show | grep -E UP | grep -v lo\|docker\|veth | head -n1 | awk {print $1}) if [ -z $ETH ]; then echo 错误未找到活动的以太网卡 exit 1 fi echo 检测到网卡: $ETH # 2. 根据发行版选择配置方式 if [ -f /etc/os-release ]; then . /etc/os-release case $ID in ubuntu|debian) echo Ubuntu/Debian 系统使用 Netplan NETPLAN_FILE/etc/netplan/99-auto-config.yaml cat $NETPLAN_FILE EOF network: version: 2 renderer: networkd ethernets: $ETH: dhcp4: false addresses: [$IP/$NETMASK] routes: - to: default via: $GATEWAY nameservers: addresses: [$DNS] EOF netplan apply ;; rocky|centos|rhel) echo Rocky/CentOS/RHEL 系统使用 nmcli CONN_NAME$(nmcli connection show | grep $ETH | awk {print $1}) if [ -z $CONN_NAME ]; then echo 错误未找到 $ETH 对应的 NetworkManager 连接 exit 1 fi nmcli connection modify $CONN_NAME \ ipv4.addresses $IP/$NETMASK \ ipv4.gateway $GATEWAY \ ipv4.dns $DNS \ ipv4.method manual nmcli connection down $CONN_NAME nmcli connection up $CONN_NAME ;; *) echo 不支持的发行版: $ID exit 1 ;; esac else echo 无法识别操作系统 exit 1 fi # 3. 自动验证 echo 配置验证 echo IP 地址: $(ip addr show $ETH | grep inet | awk {print $2}) echo 默认网关: $(ip route | grep default | awk {print $3}) echo DNS 服务器: $(grep nameserver /etc/resolv.conf | head -n1 | awk {print $2}) ping -c 2 $GATEWAY /dev/null echo ✅ 网关连通 || echo ❌ 网关不通使用方法chmod x net-config-auto.shsudo ./net-config-auto.sh 192.168.10.201 24 192.168.10.254 61.155.18.30注24是 CIDR 表示法脚本内部自动转为255.255.255.06.2 Windows 侧win-net-config.ps1—— PowerShell 一键配置与日志审计PowerShell 比 CMD 更强大支持对象化输出和日志记录适合企业环境# win-net-config.ps1 param( [Parameter(Mandatory$true)] [string]$InterfaceName, [Parameter(Mandatory$true)] [string]$IPAddress, [Parameter(Mandatory$true)] [string]$SubnetMask, [Parameter(Mandatory$true)] [string]$Gateway, [Parameter(Mandatory$true)] [string]$DNSServer ) # 1. 记录操作日志 $logFile $env:USERPROFILE\Desktop\net-config-$(Get-Date -Format yyyyMMdd-HHmmss).log $(Get-Date): 开始配置网卡 $InterfaceName | Out-File $logFile -Append # 2. 设置 IPv4 地址和网关 try { $iface Get-NetAdapter | Where-Object {$_.Name -eq $InterfaceName} if (-not $iface) { throw 网卡 $InterfaceName 未找到 } # 删除现有 IPv4 配置 Remove-NetIPAddress -AddressFamily IPv4 -InterfaceAlias $InterfaceName -Confirm:$false -ErrorAction SilentlyContinue # 设置新 IP 和网关 New-NetIPAddress -InterfaceAlias $InterfaceName -AddressFamily IPv4 -IPAddress $IPAddress -PrefixLength 24 -DefaultGateway $Gateway | Out-Null ✅ IP 和网关设置成功: $IPAddress/$SubnetMask - $Gateway | Out-File $logFile -Append } catch { ❌ IP 设置失败: $($_.Exception.Message) | Out-File $logFile -Append exit 1 } # 3. 设置 DNS try { Set-DnsClientServerAddress -InterfaceAlias $InterfaceName -ServerAddresses $DNSServer | Out-Null ✅ DNS 设置成功: $DNSServer | Out-File $logFile -Append } catch { ❌ DNS 设置失败: $($_.Exception.Message) | Out-File $logFile -Append exit 1 } # 4. 验证并输出结果 $ipConfig ipconfig /all | Select-String $IPAddress|$DNSServer|$Gateway $(Get-Date): 配置完成验证结果: | Out-File $logFile -Append $ipConfig | Out-File $logFile -Append 日志已保存至: $logFile使用方法以管理员身份运行 PowerShellSet-ExecutionPolicy RemoteSigned -Scope CurrentUser首次运行需授权.\win-net-config.ps1 -InterfaceName 以太网 -IPAddress 192.168.10.201 -SubnetMask 255.255.255.0 -Gateway 192.168.10.254 -DNSServer 61.155.18.306.3 故障自检清单5 分钟定位网络问题根源当ping不通时别急着重装系统。按此顺序执行90% 的问题能在 5 分钟内定位步骤命令Linux命令Windows期望结果问题定位1. 物理层ip link show enp0s3 | grep state UPGet-NetAdapter | Where-Object {$_.Name -eq 以太网} | Select-Object Name, Statusstate UP/Status Up网卡未启用、网线未插、VMware 网卡禁用2. 链路层arp -n | grep 192.168.10.254arp -a | findstr 192.168.10.254显示 MAC 地址二层不通检查交换机、VMware 桥接、防火墙3. 网络层ip route show defaultroute print | findstr 0.0.0.0显示via 192.168.10.254默认路由缺失netsh或ip route add未执行4. DNS 层dig 61.155.18.30 www.baidu.com shortnslookup www.baidu.com 61.155.18.30返回 IP 地址DNS 配置错误或 DNS 服务器宕机5. 应用层nc -zv www.baidu.com 443Test-NetConnection www.baidu.com -Port 443succeeded目标端口被防火墙拦截或服务未运行从那以后我每次配新机器都强制走一遍这个五步清单——不是为了炫技而是因为 80% 的“网络不通”问题其实卡在第一步网卡没 UP或第三步路由没加。这份实验报告的价值正在于它把教科书里的 TCP/IP 四层模型变成了终端里一行行可敲、可错、可改、可验证的真实命令。它不承诺“一键解决”但它给你一把足够锋利的刀让你自己切开网络问题的黑匣子。希望帮到你。本文还有配套的精品资源点击获取