做网络工程师的第一道坎,往往不是命令记不住,而是这四个名词放在一起就乱了:IP地址、子网掩码、网关、DNS。面试官问“你配好IP为什么还是不通”,很多人第一反应是重启网卡,其实问题可能出在掩码算错、网关指向了别的VLAN、DNS写成了路由器管理地址。
这次我们直接从理论讲到实验配置,把IP地址、子网掩码、网关、DNS四个点全部串起来。内容覆盖Windows、Linux、国产操作系统,以及华为、华三、思科三类设备的常用配置思路,适合准备软考网络工程师、HCIA/H3CNE/CCNA的读者,也适合刚接手企业网络项目的运维。
先给学习目标:按60分钟规划,前35分钟搞定概念和计算,后25分钟做实验和排错。学完你应该能在模拟器里从零搭出一个“PC-交换机-路由器-DNS”全部能通的小型网络,并且能解释每一条配置背后的原理。
1. 核心能力速览
| 项目 | 说明 |
|---|---|
| 知识范围 | IPv4地址分类、私有地址、子网掩码计算、子网划分、VLSM/CIDR、网关三层转发、DNS递归解析 |
| 覆盖设备 | Windows/Linux主机、国产操作系统、华为路由器/交换机、华三交换机、思科交换机 |
| 实验工具 | eNSP、HCL、Cisco Packet Tracer、GNS3、Wireshark(可选) |
| 前置要求 | 熟悉二进制与十六进制基础,会使用命令行 |
| 建议用时 | 60分钟:理论35分钟 + 实验25分钟 |
| 关联认证 | 软考网络工程师、HCIA-Datacom、H3CNE、CCNA |
| 核心难点 | 子网掩码计算、网关不在同一网段、DNS配置被还原、三层设备管理IP配置 |
这篇文章不是速查手册,而是想把“你知道该填什么”变成“你知道为什么这样填”。
2. IP地址与子网掩码:先把地址算明白
2.1 IPv4地址分类与私有地址
IPv4地址是32位二进制数,通常写成点分十进制。判断一个地址属于哪一类,不用背整段范围,抓住前几位就能快速判断:
| 地址类别 | 首字节范围 | 默认子网掩码 | 用途 |
|---|---|---|---|
| A类 | 1 - 126 | 255.0.0.0 | 大型网络 |
| B类 | 128 - 191 | 255.255.0.0 | 中型网络 |
| C类 | 192 - 223 | 255.255.255.0 | 小型网络 |
| D类 | 224 - 239 | 组播 | 组播 |
| E类 | 240 - 255 | 保留 | 实验保留 |
需要特别注意几个特殊地址:
- 127.0.0.0/8是回环地址,ping 127.0.0.1能通只代表本机协议栈正常。
- 169.254.0.0/16是APIPA地址,Windows主机如果拿到这个地址,说明DHCP请求失败,网卡自己“临时编”了一个地址。
- 0.0.0.0代表任意地址,常用于默认路由和DHCP请求。
私有地址是考试和实际项目中反复出现的重点:
| 私有网段 | 地址范围 |
|---|---|
| 10.0.0.0/8 | 10.0.0.1 - 10.255.255.254 |
| 172.16.0.0/12 | 172.16.0.1 - 172.31.255.254 |
| 192.168.0.0/16 | 192.168.0.1 - 192.168.255.254 |
在企业规划中,推荐按设备角色划分地址段。例如核心设备用10.0.0.0/24,办公区用192.168.10.0/24,服务器区用192.168.20.0/24,这样后续维护时只看第三段就能判断区域。
2.2 子网掩码的快速计算技巧
子网掩码的作用是区分网络位和主机位。网络位相同的主机才处于同一广播域,才能不经过三层设备直接通信。
常见的快速计算方法是“256减掩码最后非0字节”。例如255.255.255.192,最后一个非0字节是192,那么地址块大小就是256 - 192 = 64。这个网段从0开始,就是192.168.1.0 - 192.168.1.63,可用主机地址是1 - 62,广播地址是63,下一个网段从64开始。
对应关系可以直接记:
| 前缀 | 掩码 | 每个子网地址数 | 可用主机数 |
|---|---|---|---|
| /24 | 255.255.255.0 | 256 | 254 |
| /25 | 255.255.255.128 | 128 | 126 |
| /26 | 255.255.255.192 | 64 | 62 |
| /27 | 255.255.255.224 | 32 | 30 |
| /28 | 255.255.255.240 | 16 | 14 |
| /29 | 255.255.255.248 | 8 | 6 |
| /30 | 255.255.255.252 | 4 | 2 |
面试和考试中最容易踩的坑是把192.168.1.65/26当成192.168.1.0/24网段内的地址。实际上/26的第二个子网是192.168.1.64 - 192.168.1.127,网络地址是192.168.1.64,不是192.168.1.0。判断两个IP是否互通,先换算成二进制,再对比网络位。
2.3 CIDR与VLSM:从“看懂”到“会用”
CIDR让子网规划不再受ABC类的限制。比如一个部门需要30个可用IP,用/27就够,不需要分配整个C类。VLSM则是在同一个主类网络内使用不同长度的掩码,减少地址浪费。
实际规划建议按“主机数 + 2”来选掩码。网关、广播地址各占一个,所以可用IP至少满足N+2。规划时还要为未来扩容预留20%左右的地址空间。例如当前只有20台设备,如果预计明年增长到40台,可以选择/26而不是/27,避免后期重新划分网段导致全网断网。
3. 网关:三层设备为什么是你的“出口”
3.1 网关的本质
网关本质上是连接不同网段的“翻译官”。同一网段内通信走交换机二层转发,跨网段通信必须把数据交给网关,由三层设备查找路由表后转发出去。
PC的默认网关一定是三层接口的IP地址,且必须和PC自身处于同一网段。如果PC的IP是192.168.1.10/24,网关却写成192.168.10.1,那么PC会认为网关不在本网段,直接丢弃数据包。
这也是路由器网关原理中最关键的一点:网关只负责“收下数据包”,能不能到达最终目的网段,取决于三层设备的路由表是否完整。很多项目里PC能ping通网关,但上不了外网,问题就出在路由器缺少默认路由。
3.2 多厂商三层设备网关配置
以交换机VLANIF接口为例,华为和华三的命令非常接近。
华为配置:
system-view sysname SW1 vlan batch 10 interface vlanif 10 ip address 192.168.1.2 255.255.255.0 quit ip route-static 0.0.0.0 0.0.0.0 192.168.1.1华三配置:
system-view sysname SW-H3C vlan 10 quit interface vlan-interface 10 ip address 192.168.1.2 255.255.255.0 quit ip route-static 0.0.0.0 0.0.0.0 192.168.1.1思科交换机配置:
enable configure terminal hostname SW-Cisco vlan 10 exit interface vlan 10 ip address 192.168.1.2 255.255.255.0 no shutdown exit ip default-gateway 192.168.1.1注意华为和华三的路由器上通常直接给物理接口配置IP。如果用的是二层交换机做接入,一定要把接入PC的接口划进对应VLAN:
interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit否则VLANIF 10的网关地址永远不会在这个接口上收到帧。
3.3 网关配置的验证方法
配置完成后,先验证三层接口状态:
华为或华三:
display ip interface brief思科:
show ip interface brief然后从PC去ping网关地址。ping通只代表“网关在线”,还不能代表跨网段能通。继续从路由器ping远端地址,例如:
ping 10.0.0.2只有路由表和下一跳地址都正确,数据包才能到达对端。
4. DNS:域名解析原理与配置
4.1 完整解析过程
DNS解决的是“人类记不住IP”的问题。访问一个域名时,系统按以下顺序查找:
- 浏览器缓存。
- 本机hosts文件。
- 操作系统级DNS缓存。
- 向本地配置的DNS服务器发起递归查询。
- 本地DNS服务器依次向根服务器、顶级域服务器、权威服务器迭代查询。
- 最终拿到域名对应的IP地址并返回,同时在本机缓存结果。
因此,PC配置的“DNS服务器地址”不是最终解析答案的来源,而是帮你去互联网上“跑腿查询”的递归解析器。
4.2 Windows、Linux与国产系统DNS配置
Windows命令行下配置IP和DNS:
netsh interface ip set address name="以太网" static 192.168.1.10 255.255.255.0 192.168.1.1 netsh interface ip set dns name="以太网" static 223.5.5.5 ipconfig /all先用netsh interface show interface确认网卡名称,否则命令会提示找不到接口。
CentOS/RHEL这类使用NetworkManager的系统,推荐用nmcli:
nmcli con mod ens33 ipv4.method manual nmcli con mod ens33 ipv4.addresses 192.168.1.10/24 nmcli con mod ens33 ipv4.gateway 192.168.1.1 nmcli con mod ens33 ipv4.dns 223.5.5.5 nmcli con up ens33Ubuntu使用netplan,配置文件位置在/etc/netplan/下:
network: version: 2 ethernets: ens33: dhcp4: no addresses: - 192.168.1.10/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: - 223.5.5.5执行:
sudo netplan apply ip addr show ens33 ip route show银河麒麟等国产操作系统一般也提供nmcli命令和图形化网络设置界面,配置思路和标准Linux一致。重点要记住:只要系统用NetworkManager管理网络,直接改/etc/resolv.conf很可能会被还原。
4.3 DNS验证和常见故障
解析验证用nslookup:
nslookup www.example.com nslookup www.example.com 223.5.5.5第二条命令指定DNS服务器解析,能快速判断是本地DNS缓存问题还是上游服务器问题。
Windows下清除DNS缓存:
ipconfig /flushdnsWindows事件查看器中常见的DNS Client Events事件ID 1014,表示系统向DNS服务器发起解析请求后没有在限定时间内收到响应。排查顺序是:先确认网卡能ping通网关,再确认客户端和DNS服务器之间的路由可达,然后手动指定一个公共DNS或公司内部DNS做对照测试。如果裸奔公网DNS不稳定,优先改用运营商的递归DNS或企业内部DNS。
5. 实验环境准备:模拟器选型与资源占用
动手实验前先选工具。
- eNSP:华为官方模拟器,适合华为路由交换实验,AR路由器设备镜像资源占用较高。
- HCL:华三官方模拟器,支持华三设备,界面和真实设备接近。
- Cisco Packet Tracer:思科教学工具,适合入门,命令完整度足够做VLAN和静态路由实验。
- GNS3:支持多厂商虚拟化和真机镜像,适合进阶,但对电脑配置要求更高。
资源占用方面,设备数量越多,CPU和内存占用上升越明显。每启动一台AR路由器模拟器就会多占用一部分内存,常见办公电脑同时运行5到8台设备通常还能接受,如果超过15台设备并且还要开Wireshark抓包,建议给实验虚拟机预留8GB以上内存。
需要注意模拟器版本与操作系统的兼容性。eNSP和HCL的新版本对Windows 10/11的支持相对稳定,但仍有依赖VirtualBox或Wireshark的情况。安装时确保这些依赖组件的版本匹配,启动报错多数和VirtualBox版本冲突有关。
实验资源占用观察思路是:打开任务管理器,分别记录设备全部关闭、启动3台、启动8台三种状态下的CPU和内存占用,对比后再决定是否扩大拓扑。这个过程也可以用来验证“设备负载与性能”的关系,对面试中提到的网络监控指标理解有帮助。
6. 全流程实验:搭一个能完整通信的小型网络
6.1 实验拓扑与IP规划
实验目标是让PC能ping通网关、能ping通远端路由器接口、能通过域名解析访问测试站点。
拓扑:PC -> 交换机 -> 路由器。
IP规划:
| 设备 | 接口/地址 | 掩码 | 网关 |
|---|---|---|---|
| PC | 192.168.1.10 | 255.255.255.0 | 192.168.1.1 |
| 交换机管理VLAN | 192.168.1.2 | 255.255.255.0 | 192.168.1.1 |
| 路由器内网接口 | 192.168.1.1 | 255.255.255.0 | - |
| 路由器外网接口 | 10.0.1.1 | 255.255.255.0 | 10.0.1.2 |
| 模拟公网设备 | 10.0.1.2 | 255.255.255.0 | 10.0.1.1 |
6.2 路由器配置
华为AR路由器:
system-view sysname R1 interface GigabitEthernet0/0/0 ip address 192.168.1.1 255.255.255.0 quit interface GigabitEthernet0/0/1 ip address 10.0.1.1 255.255.255.0 quit ip route-static 0.0.0.0 0.0.0.0 10.0.1.2最后一条默认路由让内网所有未知目标都走出口。没有这条路由,PC即使配置了网关,数据包到达路由器后也会被丢弃。
还可以在路由器上配置DHCP地址池,并把打印机等设备做静态绑定:
dhcp enable interface GigabitEthernet0/0/0 dhcp select interface dhcp server static-bind ip-address 192.168.1.100 mac-address 00e0-fc12-3456这样就实现了“路由器固定分配IP地址”,避免打印机每次重启后地址漂移。
6.3 PC配置与验证
Windows下执行:
netsh interface ip set address name="以太网" static 192.168.1.10 255.255.255.0 192.168.1.1 netsh interface ip set dns name="以太网" static 223.5.5.5然后依次验证:
ipconfig /all ping 192.168.1.1 ping 10.0.1.2 nslookup www.example.com tracert -d 10.0.1.2判断标准:
- 第一步通,说明PC协议栈和网卡正常。
- 第二步通,说明PC到网关的二层三层链路正常。
- 第三步通,说明路由器路由表正常,默认路由生效。
- nslookup有结果,说明DNS服务器可达且解析链路正常。
做这一步时建议打开Wireshark在交换机镜像口或PC网卡上抓包,重点看ARP请求和DNS查询报文。能看到真实报文后,对网关和DNS的工作方式理解会明显加深。
7. 批量配置与自动化运维:网络工程师的“批量任务”
网络设备数量一多,逐台登录配置效率太低。常见做法是批量下发命令,但必须先在测试环境验证语法。
Windows批量配置多台主机的IP,可以用批处理脚本:
@echo off set INTERFACE=以太网 set IP=192.168.1.10 set MASK=255.255.255.0 set GATEWAY=192.168.1.1 set DNS=223.5.5.5 netsh interface ip set address name="%INTERFACE%" static %IP% %MASK% %GATEWAY% netsh interface ip set dns name="%INTERFACE%" static %DNS% ipconfig /flushdnsLinux下用nmcli加for循环:
for ip in 192.168.1.11 192.168.1.12 192.168.1.13; do nmcli con mod ens33 ipv4.addresses $ip/24 nmcli con up ens33 done注意这个例子会反复改同一块网卡的地址,实际项目里每台主机的网卡名、网络路径不同,脚本必须按实际环境调整。
对交换机、路由器的批量配置,可以用Python的netmiko库。下面的示例是一个通用模板,实际执行前必须确认设备类型、开启SSH、账号权限都满足:
from netmiko import ConnectHandler device = { "device_type": "huawei", "host": "192.168.1.2", "username": "admin", "password": "your-password", "port": 22, } commands = [ "system-view", "interface GigabitEthernet0/0/1", "port link-type access", "port default vlan 10", "quit", ] with ConnectHandler(**device) as conn: output = conn.send_config_set(commands) print(output)批量任务的关键不是一次性跑完,而是分小批验证。一个常见的工程化流程是:先在一台设备上执行并查看回显,再扩展到5台,最后整个网段并行。每台任务要记录日志和失败重试次数,避免因一台设备命令错误导致后续设备全部跳过。
8. 网络故障排查实战:从底层往上层排
网络排障不要“到处乱试”,按照网卡驱动、链路、IP配置、网关、DNS、应用层这个顺序逐层排查,效率更高。
| 问题现象 | 可能原因 | 排查命令 / 动作 | 解决方向 |
|---|---|---|---|
| ping不通网关 | VLAN不匹配、接口没加入对应VLAN | display vlan/show vlan | 将接口划入网关所在VLAN |
| ping不通网关 | 三层接口被shutdown | display interface brief | 执行undo shutdown恢复接口 |
| IP配置正确但无法上网 | 路由器缺默认路由 | display ip routing-table | 补默认路由 |
| DNS能解析但网页打不开 | HTTP/HTTPS被安全策略拦截 | 检查防火墙策略 | 放行对应端口或联系安全团队 |
| Windows事件1014断网 | DNS Client无法在规定时间内收到解析响应 | ipconfig /flushdns;换DNS测试 | 更换公共DNS或检查上游DNS |
| Linux修改DNS重启还原 | NetworkManager覆盖resolv.conf | nmcli con show | 用nmcli持久化配置DNS |
| ESXi虚拟机ping不通网关 | 虚拟机端口组VLAN ID不正确 | 检查vSwitch/端口组配置 | 修正VLAN ID |
| ESXi虚拟机ping不通网关 | 防火墙拦截ICMP | esxcli network firewall ruleset list | 按需放行或关闭ICMP过滤 |
| 地址冲突 | DHCP静态绑定与手动IP冲突 | arp -a、ipconfig /all | 统一使用DHCP或修正绑定 |
| ping通网关但跨网段不通 | 中间设备没有回程路由 | tracert定位断点 | 补全路由表 |
ESXi虚拟机ping不通网关是一个高频问题。很多情况下不是虚拟机本身配置错了,而是虚拟交换机的端口组VLAN ID和物理交换机上对应的Access/Trunk配置不一致。另外ESXi管理网络默认有防火墙规则,ICMP回显不一定放行,先检查防火墙,再查VLAN。
Linux修改DNS重启后被还原,本质是NetworkManager接管了/etc/resolv.conf。正确做法是在连接配置里持久化:
nmcli con mod ens33 ipv4.ignore-auto-dns yes nmcli con mod ens33 ipv4.dns "223.5.5.5 119.29.29.29" nmcli con up ens33如果系统使用systemd-resolved,还需要同步检查resolvectl status的全局DNS配置。
排查过程还要注意安全边界。ping、tracert、arp、扫描类命令只能在自有或已获授权的网络中执行,不应对未授权目标进行探测。抓包分析同样如此,捕获到敏感信息时要做好脱敏和合规处理。
9. 60分钟学习安排与认证进阶路线
如果你想按标题说的60分钟完成一轮学习,建议这样分配时间:
| 时间段 | 学习内容 | 验证方式 |
|---|---|---|
| 0 - 15分钟 | IP地址分类、私有地址、子网掩码快速计算 | 手算10道子网划分题 |
| 15 - 25分钟 | 网关原理、三层设备VLANIF配置 | 模拟器ping通网关 |
| 25 - 35分钟 | DNS递归解析、各系统DNS配置 | nslookup解析测试域名 |
| 35 - 50分钟 | 全流程实验:PC-交换机-路由器通信 | ping通远端+解析域名 |
| 50 - 60分钟 | 故障排查:制造断点再定位 | 完成至少2个排障场景 |
认证路线方面,软考网络工程师会考子网划分、地址规划、DNS和路由协议基础;华为HCIA-Datacom的考试范围内,IP编址、VLAN、静态路由和网络排障是入门重点;华三H3CNE和思科CCNA同样把这些内容放在前置章节。
学习资料要注意版权合规,不要使用未授权的电子版教材,建议购买正版教程或从官方渠道获取实验手册。模拟器实验尽量自己搭拓扑,不要直接使用来源不明的现成工程文件。
10. 总结与下一步
这套内容里最值得掌握的三个点:子网掩码快速计算、网关三层转发、DNS递归解析。先把这三个动作练熟,后面学VLAN间路由、DHCP中继、OSPF都会更顺畅。
最先应该动手做的实验是:让PC能ping通网关。连这一步都有问题的话,先查VLAN和三层接口状态,不要急着改防火墙和路由。最容易踩的坑是掩码写错导致跨网段误判、网关写成了不同网段地址、Linux修改DNS后配置被NetworkManager还原。
下一步建议扩展方向:在之前拓扑里增加第二个VLAN,配置VLANIF 20并开启VLAN间路由;把路由器改成两台,跑一个静态路由或OSPF实验;在核心层部署DHCP中继,让不同VLAN的终端从同一个DHCP服务器获取地址。把这张基础拓扑吃透,再往上加QoS、ACL、IPv6都不难。