入门计算机网络,这一篇把“网络一”讲透
很多人学“计算机网络一”这门课,上来就背OSI七层模型、TCP三次握手,背完就忘,因为压根没和实际场景挂上钩。我自己带过不少新人,也踩过不少坑,一个很深的体会是:计算机网络不是靠背出来的,是靠“出问题—排查—解决”练出来的。这篇博文不打算按教材顺序复述知识点,而是从“两台电脑怎么才能连上”这个最朴素的问题出发,把网络一涉及的核心概念讲清楚,再落到实际操作上。不管你是在校学生、刚入行的运维新人,还是自己折腾NAS、软路由的玩家,这篇文章能帮你把零散的网络知识串成一条线。
1. 网络到底是什么:从“两台电脑传文件”说起
1.1 通信的本质:约定、地址与道路
先别管那些高大上的术语。网络要解决的终极问题只有一个:让两台设备之间能把数据准确送到。这背后其实对应三个基本问题。
第一个问题是“约定”。两台设备要通信,必须用同一种语言,这就是协议。大家都讲普通话,才能互相听懂。网络里的“普通话”就是TCP/IP协议族,而HTTP、DNS、DHCP这些全是它的子集。这里有个常见的误区:很多人把“协议”理解成某种抽象规则,其实协议就是一套格式约定——包头怎么写、数据怎么分段、错误怎么标记,全部写死在标准文档里。通信双方按这个格式收发数据,才能保证彼此能看懂。
第二个问题是“地址”。数据要发给谁,必须有一个唯一标识,这就是IP地址。你可以把IP地址想象成门牌号,但光有门牌号还不够——同一栋楼里住着很多人,数据到了楼下还得知道具体给哪一户。这就是端口号的作用。IP加端口,才是网络世界里完整的“收件人信息”。比如访问一个网站,域名解析后得到一个IP,默认情况下网页服务跑在80或443端口,浏览器就是通过“IP:端口”这个组合找到服务器的。
第三个问题是“道路”。数据从A到B,中间经过无数个路由器,这条路是怎么选的?这就是路由协议干的事。你可以把它理解为地图导航:有高速、有省道、有乡道,路由协议会根据路径长度、带宽、延迟等因素选择一条最合适的路。而且网络是动态的,某条路突然断了,数据会自动绕道,这就是路由的“动态收敛”。
理解了这三个基本问题,你就掌握了理解一切网络技术的主线。后面的VLAN、ACL、NAT、防火墙,本质上都是在这三个基本问题上的衍生和加固。
1.2 分层的真正意义:为什么非得分七层
教材上让你背OSI七层模型,很多人背完就忘,因为它看起来和实际使用毫无关系。但分层这件事,恰恰是网络能发展到今天规模的关键。
分层解决的痛点很简单:如果所有网络功能都耦合在一起,那么每出现一种新应用,就要重写整个通信逻辑。分层的思路是把通信过程拆成几个独立环节,每层只干一件事,层与层之间通过标准接口打交道。这样好处有三点:第一,某层技术升级不影响其他层,比如从双绞线换光纤,应用层毫无感知;第二,各层可以独立开发、独立演进,TCP还是那个TCP,底下从IPv4换到IPv6,应用层不用改;第三,排查问题时分而治之,网页打不开,先判断是物理层断了、网络层不通还是应用层故障,一步就能缩小范围。
实际工程中我们最常用的是四层简化模型:应用层、传输层、网络层、链路层。应用层管的是“数据长什么样”,比如HTTP报文、DNS查询;传输层管的是“数据怎么可靠送达”,TCP和UDP就是这一层的代表;网络层管的是“数据从哪条路走”,IP协议在这里;链路层管的是“数据在物理线路上怎么传输”,包括MAC地址、网卡驱动。
这几层之间的协作,我用一个寄快递的类比来解释:链路层是你家门口的快递员,网络层是快递分拣中心,传输层是快递单上的“确认签收”服务,应用层是你打包好的货物本身。数据发送时,从应用层一路向下,每经过一层就被套上一个“信封”(头部信息),这叫封装;接收时一路向上,每层拆掉自己的信封,这叫解封装。你抓包看到的那些十六进制数据,其实就是这些信封叠在一起的样子。
1.3 网络一到底在学什么:建立网络思维
说完基本概念,再回到“计算机网络一”这门课本身。这门课的核心不是让你记住所有协议细节,而是建立一种“网络思维”——面对一个网络问题,你能从物理层一路分析到应用层,快速定位问题出在哪一环。
这种思维在职场上极为管用。我见过太多新人,遇到“网站打不开”只会重启电脑,甚至直接重装系统。但一个有网络思维的人,会先ping网关确认链路通不通,再pingDNS确认域名解析正不正常,再用telnet或nc确认端口通不通,最后才看应用日志。每一步都在缩小问题范围,通常五分钟内就能定位。
所以这篇博文接下来的内容,全部围绕“怎么让网络思维落地”来展开。从拓扑设计到VLAN划分,从抓包分析到故障排查,每个环节我都会结合自己的实际操作讲清楚。
2. 手把手搭一个能用的网络环境
2.1 网络拓扑:画图之前先想清楚需求
很多人在学习时忽略网络拓扑图,觉得这是给领导汇报用的形式主义。实际上,拓扑图是你头脑中网络结构的可视化,画不清楚图,就说明你根本没想清楚设备之间怎么连接。
搭网络环境的第一步不是买设备,而是画图。你在纸上画一个最基础的家庭网络拓扑:光猫—路由器—交换机—电脑。看起来简单,但每个节点都值得追问:光猫为什么要拨号?路由器为什么开DHCP?交换机为什么不需要配置IP?想清楚这些问题,拓扑图才不算白画。
画图时有几个实操要点。第一,物理拓扑和逻辑拓扑要分开。物理拓扑画的是网线怎么插,逻辑拓扑画的是数据怎么走。很多时候物理上两台设备直连,逻辑上数据却走了别的路径,排查问题时两者缺一不可。第二,标注要完整,每台设备的IP、掩码、网关都标在图上。这样配置时一目了然,避免“连不上才发现IP段不对”的尴尬。第三,拓扑图要跟着变更走,机房改过线路、加过设备,图必须同步更新。我见过不少团队的拓扑图停留在三年前,真正排查故障时只能现猜现摸。
企业网络的拓扑设计比家庭复杂得多,核心要考虑三层架构:接入层、汇聚层、核心层。接入层连接终端设备,汇聚层做策略控制和路由分发,核心层负责高速转发。这样分层的意义在于隔离故障域——某台接入交换机坏了,只影响那一小片区域,核心层不受干扰。
2.2 VLAN与ACL:网络域隔离的实战配置
热搜里有个词叫“网络域隔离-vlan划分与acl配置”,这正好是网络一进阶到网络二之间的关键内容,但在这里我先给一个入门级的实战演示,因为很多新手第一次接触企业网络就是从这个需求开始的。
VLAN(虚拟局域网)解决的核心问题是:一台物理交换机上,怎么让不同部门的电脑互相隔离。比如财务部和技术部在同一台交换机上,但财务数据不应该被技术人员随意访问。最简单粗暴的办法是换两台交换机,但成本高、浪费端口。VLAN的解决方案是:在同一台交换机上切出多个虚拟网络,每个VLAN是一个独立的广播域,默认情况下VLAN之间不能互相通信。
实际配置只需要几条命令。以华为交换机为例:
<Huawei> system-view [Huawei] vlan 10 [Huawei-vlan10] name Finance [Huawei-vlan10] quit [Huawei] interface GigabitEthernet 0/0/1 [Huawei-GigabitEthernet0/0/1] port link-type access [Huawei-GigabitEthernet0/0/1] port default vlan 10这段配置的含义是:创建一个编号为10的VLAN,命名为Finance,把物理端口GigabitEthernet0/0/1设为access模式并划入VLAN 10。这样插在这个端口上的电脑,就被隔离在VLAN 10内部了。
但光有VLAN还不够——VLAN把网络隔开了,可财务部的人需要访问服务器呢?这就要用到ACL(访问控制列表)。ACL本质上是一套规则表,告诉设备“允许谁访问谁、拒绝谁访问谁”。比如允许财务部(VLAN 10)访问数据库服务器(192.168.100.10),但拒绝技术部(VLAN 20)访问:
[Huawei] acl 3000 [Huawei-acl-adv-3000] rule 5 permit ip source 192.168.10.0 0.0.0.255 destination 192.168.100.10 0.0.0.0 [Huawei-acl-adv-3000] rule 10 deny ip source 192.168.20.0 0.0.0.255 destination 192.168.100.10 0.0.0.0 [Huawei-acl-adv-3000] quit [Huawei] interface GigabitEthernet 0/0/24 [Huawei-GigabitEthernet0/0/24] traffic-filter inbound acl 3000这里有个关键点:ACL规则是自上而下匹配的,匹配到第一条就不会再看后面的规则。所以配ACL时,“允许”规则必须放在“拒绝”规则前面,否则允许规则永远不会生效。这个细节我见过无数新人踩坑,写完ACL发现全部流量都被拒了,一查才发现规则顺序写反了。
还要补充一点:VLAN间的通信需要三层设备介入。交换机默认不做路由,VLAN 10要访问VLAN 20,必须配置VLANIF接口(虚拟三层接口)作为各VLAN的网关。这也是为什么企业核心交换机都叫“三层交换机”——它在传统交换机的基础上增加了路由能力。
2.3 一次典型配置:从零搭建小型企业网
把上面的东西串起来,我带你完整走一遍小型企业网的搭建流程,假设需求是:30台电脑分属财务、技术两个部门,一台文件服务器,一台出口路由器接运营商宽带。
第一步,规划IP地址。财务部用192.168.10.0/24网段,技术部用192.168.20.0/24网段,服务器放在192.168.100.0/24网段。每个网段的第一个可用地址做网关,比如192.168.10.1作为财务部网关。第二步,交换机上创建VLAN 10和VLAN 20,把端口分别划入对应VLAN,同时创建VLANIF接口并配置IP地址作为各VLAN网关。第三步,配置ACL限制跨部门访问,只开放必要端口。第四步,配置出口路由器的NAT,让内网能访问互联网。
这个流程看起来很简单,但每个环节都有细节陷阱。比如服务器放在独立网段的用意,是为了让ACL规则写起来更清晰——你只需要放行特定VLAN访问192.168.100.0/24,而不是把规则写成“允许VLAN10访问VLAN20里的某台机器”,那样规则会非常繁琐且容易出错。再比如出口路由器的NAT,如果忘记配置,内网能访问内网但上不了外网,而且这个问题ping网关是测不出来的,必须直接ping公网地址才能暴露。
我自己在实际配置中还有一个习惯:每完成一步配置,立刻验证一步,而不是全部配完再统一测试。配置VLAN后就ping一下跨VLAN是否不通(预期不通),配置VLANIF后再ping网关(预期通)。这样做的好处是,一旦出问题,你清楚地知道是刚配的这一步导致的,排错范围瞬间缩小。
3. 网络排查工具箱:不靠玄学靠工具
3.1 网络运维工具箱清单:入门必装的几个命令
说到网络排查,很多人第一反应是用大而全的网管软件。但真正高效的做法是先掌握一组命令行工具,因为服务器上未必有图形界面,而命令行工具几乎在所有系统上都有。
我常用的网络排查工具箱核心成员如下:
ping:测试网络连通性,基于ICMP协议。它能告诉你“通不通”和“大概延迟多少”,但注意它测的是网络层连通性,测不出端口问题。traceroute(Linux) /tracert(Windows):跟踪数据包路径,显示经过的每个路由器。定位“走到哪一步断了”特别有用。ipconfig(Windows) /ip addr(Linux):查看本机IP、掩码、网关、DNS等配置。netstat(Windows) /ss(Linux):查看本机端口监听状态和当前连接。排查“服务起来了但连不上”时先看服务端口有没有LISTEN。telnet/nc:测试指定端口是否开放。很多场景下端口不通和网络不通是两回事,telnet直接测端口能一秒分清。nslookup/dig:诊断DNS解析问题。排查“能上QQ但打不开网页”类问题必备。iperf/iperf3:测试实际带宽。测速网站只能测到互联网出口带宽,内网设备之间的真实速率要用iperf局域测。
这套工具箱不用全部精通,但至少ping、traceroute、netstat、telnet这四个必须熟练。它们能覆盖80%以上日常网络故障的定位需求。
3.2 排查思路:从应用层到物理层的倒推法
排查网络问题的核心方法论是“逐层缩小范围”。我常用的顺序是从应用层开始往下查,因为应用层最容易确认,也最快能判断问题性质。
举一个真实案例。“用户反映财务系统打不开。”我的排查路径是:第一步,先在本机telnet财务服务器IP的8080端口,如果通,说明网络没问题,问题在应用本身或浏览器缓存,直接看应用日志;如果不通,进入第二步,ping财务服务器IP,如果不通,说明网络层有问题,看路由和VLAN配置;如果通,说明端口有问题,可能是防火墙拦了或服务没启动。第三步,如果ping也不通,就traceroute看路径上哪个节点断掉了。
这个倒推法的优势在于,每一步都能把问题域缩小一半。telnet不通但ping通,说明网络通但端口被拦,检查防火墙策略或服务监听状态;ping不通但网关通,说明问题在跨网段路由上;网关都不通,检查物理链路和本机IP配置。
配合抓包分析,问题定位会更精准。Wireshark是这个领域的事实标准,它能捕获网卡上的原始数据包并解析协议。但新手用Wireshark容易一头雾水,因为信息量太大。我的建议是:先确定要看什么协议,在过滤栏输入对应过滤条件,比如只看HTTP流量就输入http,只看某个IP的流量就输入ip.addr == 192.168.10.5。抓包不是漫无目的地看,而是带着假设去验证。
我特别想提醒一个TCP握手相关的细节。TCP建立连接要三次握手:SYN、SYN-ACK、ACK。如果抓包只看到客户端发SYN,服务器不回SYN-ACK,说明服务器根本没收到或直接丢弃;如果看到SYN-ACK了,但客户端不回ACK,问题可能出在客户端的防火墙或内核参数。这三次握手的过程,是排查“连接超时”问题的最底层依据。
3.3 网络测速的正确姿势:别被测速网站骗了
热搜词里出现了“网络测速”和“百兆网络用”,这里有必要聊透一个经常被误解的话题:测速到底测的是什么。
很多人用网页测速工具,看到下载速率50Mbps就觉得“我的宽带是100M,怎么只有一半”。且慢,网页测速可能受限于服务器位置、本地Wi-Fi信号、甚至浏览器本身。正确的测速姿势应该分场景。第一种是测互联网出口带宽,可以选择运营商官方的测速平台,尽量在网线直连光猫的情况下测,排除Wi-Fi干扰。第二种是测局域网内设备之间的带宽,用iperf3搭一个简单的客户端-服务器测速环境,比如一台电脑当服务端跑iperf3 -s,另一台当客户端跑iperf3 -c 192.168.10.5,测出的结果才是内网真实的传输速率。
我再解释一下百兆网络的瓶颈问题。百兆网络指的是以太网速率为100Mbps,也就是理论最大每秒12.5MB。很多人抱怨“百兆网络拷贝文件只有10MB/s”,其实这已经接近理论上限了,因为网络传输有协议开销(TCP头和IP头会占用一部分带宽),实际有效吞吐能达到理论值的80%~90%就已经不错了。而家用千兆网络理论125MB/s,实际能跑到110MB/s左右就相当理想。所以测速结果比预期低,先别急着骂运营商,先用上述方法排除内网瓶颈。
还有一类测速是检测网络质量,比如看延迟、抖动和丢包率。这类指标对视频会议、在线游戏尤其重要。测延迟最朴素的办法就是持续ping一个目标地址,观察响应时间的波动:如果延迟稳定在20ms,说明线路质量很好;如果延迟忽高忽低(比如20ms、200ms、20ms、150ms),说明存在链路拥塞或无线干扰,需要检查是不是有设备在大量下载占满带宽。
4. 网络安全入门:先有安全意识,再谈安全技术
4.1 网络安全不是防火墙一个设备的事
很多人一谈网络安全就想到防火墙、杀毒软件,仿佛买齐装备就安全了。这是非常大的误解。网络安全的第一原则是“最小权限”——任何人或系统,只给完成任务所需的最小权限,多了就是风险。这个原则贯穿于账号管理、端口开放、防火墙策略等所有环节。
我看到过太多失败的加固案例:防火墙买了最贵的,但为了“省事”,在防火墙上把所有端口全部放行,形同虚设;服务器密码设成Admin123这种强度,和没设密码一样;开放了远程桌面端口,却没有任何来源IP限制。这些都属于“设备到位但安全意识不到位”。
入门网络安全,应该从三个方面建立起基础防线。第一是减少攻击面:关闭不需要的服务,删除多余的账号,不用的端口及时关掉。第二是访问控制:用ACL限制谁能访问什么资源,用防火墙按来源IP和目的端口做精细化管控。第三是日志审计:开启系统日志和网络设备日志,至少要知道谁在什么时候访问了什么资源。
4.2 常见攻击类型与初级防护手段
理解了安全原则,再来看几种最常见的网络攻击及对应的初级防护手段,不需要高深的技术就能实现。
第一种是暴力破解攻击。攻击者不断尝试用户名和密码组合,最终猜出登录凭据。防护手段很简单:一是设置密码复杂度策略和定期更换机制;二是开启失败锁定策略,比如连续5次密码错误锁定账号15分钟;三是限制管理端口的来源IP,只允许办公网段的IP访问。如果还嫌不够,可以部署Fail2ban这类自动封禁工具,检测到连续失败尝试就自动添加防火墙封禁规则。
第二种是DDoS(分布式拒绝服务)攻击。本质上是用大量流量打瘫目标服务器,让正常用户无法访问。这是最难防御的攻击类型之一,个人和小企业的初级防护是:启用云服务商提供的基础DDoS防护,隐藏真实服务器IP(用CDN或反向代理),以及做好带宽冗余规划。但老实说,面对大流量DDoS,没有专业清洗服务的个人用户基本无解,能做的就是快速切换IP止损。
第三种是中间人攻击。攻击者插入通信双方之间,拦截和篡改数据。防范手段就是全程加密通信:网站必须启用HTTPS,远程管理必须走SSH,敏感数据传输不得使用明文协议。对于个人用户,还有一个容易被忽视的点:公共Wi-Fi上不要登录网银、邮箱,因为公共Wi-Fi上的通讯很容易被监听。如果实在需要,至少确保目标网站是HTTPS。
还有一个经常被忽视的是内网横移风险。攻击者攻破一台内网机器后,以此为跳板攻击其他内网主机。这也是前面讲VLAN隔离的重要意义所在:网络域隔离本身就是一种安全机制。就算攻击者拿下了财务部的电脑,由于ACL限制,他无法访问服务器网段,损失就被限制在一定范围内。
4.3 动手做一次基础安全加固
把安全知识落到操作上,我会带你做一次面向Linux服务器的基础安全加固,这些操作成本低、效果好,适合所有刚接触服务器的人。
第一步,修改SSH默认配置。编辑/etc/ssh/sshd_config,把PermitRootLogin改成no,禁用root直接登录;把默认的22端口改成其他高位端口,能有效减少自动化扫描攻击的噪声。修改后重启sshd服务,新建一个普通用户并用sudo执行管理命令。第二步,配置防火墙。以常见的ufw为例,先设置默认策略拒绝所有入站流量,再按需放行SSH、HTTP、HTTPS端口:
sudo ufw default deny incoming sudo ufw allow 22022/tcp # 你修改后的SSH端口 sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable第三步,配置Fail2ban保护SSH。安装Fail2ban后,默认配置就会监控SSH的登录失败记录,达到阈值自动封禁来源IP。这里要提醒一个配置细节:如果你修改过SSH端口,要同步修改Fail2ban的配置,否则特殊端口下的暴力破解不会被监控到。
第四步,定期更新系统补丁。这一步最基础但也最容易被忽略。很多攻击利用的都是已公开的已知漏洞,系统只要及时打补丁就能堵住大部分风险。建议开通自动安全更新,至少也要每周手动检查一次。
这套基础加固做完,你的服务器安全性已经超过大多数“裸奔”状态下的机器了。剩下的就是持续学习和保持安全意识。
5. 真实环境中的网络故障排查实录
5.1 DNS问题:能上QQ却打不开网页
这是一个非常典型的现象:微信、QQ都能正常收发消息,但浏览器打开任何网页都提示无法解析服务器地址。很多人第一反应是断网重连、重启路由器,但其实这是DNS解析故障的典型症状。
为什么QQ能用而网页不能用?因为QQ这类应用使用的服务器地址通常直接填IP或使用内置的IP列表,不依赖域名解析;而浏览器访问网站必须先把域名解析成IP,这依赖DNS服务器。DNS配置错误、DNS服务器本身故障、或者本地hosts文件被篡改,都会导致这种“部分能用、部分不能用”的现象。
排查步骤是这样的:先用nslookup www.baidu.com看解析是否正常。如果返回“找不到主机”,先检查本机DNS配置——ipconfig /all或cat /etc/resolv.conf,看DNS服务器指向哪里。通常改成公共DNS如223.5.5.5(阿里DNS)或119.29.29.29(腾讯DNS)就能解决。如果改了DNS还是不行,检查防火墙是否拦截了UDP 53端口,DNS查询默认走UDP 53,有些安全策略会拦这个。最后再看hosts文件,Windows路径是C:\Windows\System32\drivers\etc\hosts,Linux是/etc/hosts,确认没有异常条目把正常域名指向错误IP。
这里有一个我踩过多次的坑:在Linux上修改了/etc/resolv.conf,但系统重启后配置被还原。这是因为很多Linux发行版使用NetworkManager或systemd-resolved管理DNS,直接改resolv.conf会被覆盖。正确的做法是在网络管理工具里改,比如Ubuntu用nmcli或修改/etc/netplan/*.yaml。热搜词里“linux修改dns后重启网络+还原”就是这个经典场景,解决办法是找到正确的配置文件入口,而不是手动改resolv.conf。
5.2 网段冲突与IP地址配置错误
“网络异常990002请使用正确网段的网络”,这种报错信息看起来像某个特定应用或特定运营商网络的提示,但本质指向的是一个非常基础的问题:本机IP地址和所在网络不在同一网段。
排查这类问题,第一步是查看本机IP配置。如果IP是自动获取的,先确认DHCP服务器正常——很多家用路由器由于断电重启后租约混乱,会导致设备获取到异常IP。如果IP是静态配置的,检查掩码和网关是否匹配。一个经典错误是:子网掩码配置成255.255.255.0,但实际网络用了255.255.255.128划分,就会导致本机认为目标地址不在同一网段,不发送ARP请求,表现为“ping不通网关”。
再说一个和Windows域环境相关的经典问题:“映射网络驱动 用户名和密码不正确”。这个问题看起来是凭据错误,但很多时候和网络环境有关。排查顺序是:先确认目标共享服务器的IP能ping通;再确认当前登录的Windows账号确实有访问共享的权限;然后重点检查是否使用了正确的凭据格式——跨域访问时通常需要“域名\用户名”而不是单纯“用户名”;最后检查是否开启了SMB相关的安全策略。如果都正常,尝试在凭据管理器里删除旧凭据重新连接。
还有一种情况是电脑从有线网络切换到Wi-Fi后,旧网卡的静态IP配置影响路由。Windows会为多个网卡维护各自的路由表,如果旧网卡的网关配置还在,数据包可能走了错误的路由。处理办法是查看路由表route print,把多余的默认路由删掉。
5.3 Docker网络不通的排查思路
容器化普及之后,“Docker网络不通”成了高频排查场景。这个问题的排查路径和传统网络故障有相似之处,但多了几个容器特有的检查项。
首先确认Docker守护进程的当前网络状态,用docker network ls查看现有网络,docker inspect <容器名>查看容器实际连接的网络和IP。常见的不通原因有以下几种。
第一种是容器默认桥接网络和外网不通。docker run默认使用bridge网络,容器通过NAT访问外网。如果iptables规则被误改(有些防火墙脚本会清理Docker创建的规则),容器就会失去网络。这种问题的处理办法一般是重启Docker服务让规则重新生成。
第二种是容器需要复用宿主机网络。热搜词里“宝塔内某个容器让他使用宿主机的网络环境”就是这个需求,解决方法是创建容器时指定--network host,让容器直接使用宿主机的网络栈。这种方法性能好、延迟低,适合需要大量映射端口的场景,但缺点是容器和宿主机共享端口空间,有端口冲突风险。
第三种是跨主机容器通信。这是Kubernetes等编排工具的核心场景,常见的解决方案有Overlay网络、Macvlan、Calico等。对初学者来说,先别急着上这些复杂方案,先把单机网络排查思路掌握扎实,跨主机的坑后面自然会理解。
这里还有一个经常被忽略的问题:宝塔面板等多服务管理工具会修改防火墙规则,可能在系统重启时重置,导致之前放行的Docker端口失效。所以排查Docker网络问题时,先检查防火墙规则是否完整,再检查容器内部进程是否监听正确端口。容器跑起来了但不是你想的那样,优先看容器日志:docker logs <容器名>。
5.4 常见网络问题速查表
为了让你能快速上手排查,我把上面涉及的问题整理成一张速查表,放在手边随查随用。
| 现象 | 可能原因 | 优先排查命令/操作 |
|---|---|---|
| 网页打不开但QQ能用 | DNS故障 | nslookup、检查DNS配置、清hosts |
| ping不通网关 | 物理链路、IP配置错误 | ipconfig/ip addr、检查网线 |
| ping网关通、ping外网不通 | 路由或NAT问题 | traceroute、检查默认网关 |
| 端口不通但IP通 | 服务未启动或防火墙拦 | netstat -tlnp、telnet IP 端口 |
| 能上内网但上不了外网 | DNS、NAT、上游链路问题 | 逐层ping测试,从网关逐级往外 |
| 网络延迟忽高忽低 | 无线干扰或带宽被占满 | ping持续测试、检查带宽占用 |
| Docker容器无网络 | 网桥或iptables规则异常 | docker network ls、重启Docker |
| Linux改DNS重启后还原 | 配置文件被覆盖 | nmcli、netplan等系统配置入口 |
| 映射网络驱动报密码错误 | 凭据格式或SMB策略 | 凭据管理器、确认“域名\用户名”格式 |
这张表只是起点,实际环境中的问题往往叠加了多个故障,但排查思路始终不变:先确认哪一层出了问题,再集中火力处理那一层。按照这个思路,加上这套工具,绝大多数网络故障都能在可预期的时间内定位。
我自己的经验是,网络排查这件事,工具和知识只占一半,另一半是心态。不要凭猜测跳步骤,每一步都用实测数据说话,问题自然会浮出水面。这也是“记算计网络一”这门课最想传达的东西:网络不是玄学,每一步都有迹可循。把这套排查思路练成本能,比背下一百个协议细节有用得多。