ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

网络排障与运维实战:从拓扑到容器化网络的全景指南

网络排障与运维实战:从拓扑到容器化网络的全景指南 网络这个词可能是IT圈里被用得最泛滥、也最容易被误解的词了。网络拓扑图、网络测速、网络通信协议、网络安全技术、网络运维、Docker网络不通、虚拟机线缆已拔出……往小了说是一根网线、一个交换机的指示灯往大了说是整个互联网的分层架构。我带新人的时候发现大家最缺的不是某个命令不会敲而是脑子里没有一张“网络全景图”。这篇东西我就想用一篇博文的篇幅把这张图给你描出来从拓扑、VLAN这些二层的骨架到TCP/IP协议栈和虚拟化网络再到日常运维的测速、抓包、排障工具最后聊聊网络在安全、爬虫、AI这些场景里不同的“长相”。不管你是想网络运维7天上岗的新人还是在折腾Ubuntu虚拟机、Docker网络配置的老手甚至是准备华为ICT大赛网络赛道的学生读完应该能有个完整坐标以后再遇到“网络不通”至少知道该往哪一层去查。1. 网络拓扑图、VLAN划分与ACL配置先给网络搭骨架1.1 企业网络的第一张地图网络拓扑图该画什么很多人一提到网络拓扑图就觉得是给领导汇报用的花架子。实际上它是一张“作战地图”。没有这张图你排查故障就只能靠记忆和运气局域网里几百台设备光靠ping去试效率太低。一张合格的企业网络拓扑图至少要包含四样东西设备节点路由器、交换机、防火墙、AP、服务器、链路网线、光纤、无线、地址规划IP段、VLAN号、端口标注哪个口接哪台设备。常见的拓扑结构有星型、总线型、环型和网状企业里绝大多数是层次化的星型结构出口路由器接防火墙防火墙接核心交换机核心交换机下挂汇聚交换机汇聚再带接入交换机终端和AP都挂在接入层。画图工具有很多draw.io免费且够用Visio老牌但贵亿图也不错。我个人习惯是三层画法核心层、汇聚层、接入层用不同颜色区分同时把VLAN号和网段直接标在线缆上。这张图要持续维护改一个端口就更新一次不然三个月后图就失真了。1.2 网络域隔离VLAN划分与ACL配置背后的逻辑为什么要做网络域隔离直接说大白话一台交换机默认情况下所有端口都在同一个广播域里谁发个广播包大家都能收到设备一多广播风暴和安全问题都会冒出来。VLAN就是把一台交换机从逻辑上切成多个“虚拟交换机”让广播域变小也让办公区、服务器区、监控区互相隔离。实际操作时分两步。第一步是VLAN划分交换机上的端口分成Access口和Trunk口Access口直接属于某个VLANTrunk口用于交换机之间传递多个VLAN的流量配合IEEE 802.1Q打标签。跨VLAN通信需要三层设备介入最常见的是核心交换机上配VLANIF接口或者用单臂路由。第二步是ACL配置。VLAN把物理边界划开了但不同VLAN之间的访问控制还得靠ACL。比如办公区能访问服务器区的Web服务但服务器区主动访问办公区就要拒绝。华为交换机上典型的配置长这样acl 3001 rule 5 permit tcp source 192.168.10.0 0.0.0.255 destination 192.168.20.0 0.0.0.255 destination-port eq 80 rule 10 deny ip踩过的坑不少。最典型的是ACL匹配顺序默认从上往下匹配rule 5匹配不到才会走rule 10。还有个问题是很多人配完VLAN忘了配VLANIF接口或者三层路由导致同一个交换机上不同VLAN互相ping不通查了半天才发现是网关缺失。记住一个口诀VLAN划分管广播域ACL管访问边界三层路由管跨域互通三者缺一不可。2. 网络通信协议与虚拟化网络二层、三层和虚拟机里的“网”2.1 TCP/IP协议栈为什么非要分层网络通信协议是整个网络世界的“通用语言”。但协议太多了HTTP、TCP、UDP、IP、ARP、DNS、DHCP……要想不混乱就必须分层。OSI参考模型分了七层实际用最多的是TCP/IP四层模型应用层、传输层、网络层、网络接口层。打个比方你寄快递只需要写好地址交给快递员应用层快递公司负责打包、贴面单传输层运输系统规划走哪条路网络层到了本地站点再派件给收件人网络接口层。每一层只关心自己的事不需要知道其他层的细节。这种分层带来的好处非常实在一是模块化HTTP协议想升级不需要改动网线标准二是排障时可以精准定位网页打不开先看应用层服务是否正常再看传输层端口通不通最后查网络层路由和链路。很多新人一上来就抓包看HTTP状态码实际上问题可能出在TCP握手都还没完成这就是没建立分层思维。2.2 设备地址体系MAC、IP、IMEI 与 NBMA 网络通信的前提是“找得到对方”。网络里有好几套地址体系MAC地址是物理地址出厂烧在网卡里在局域网内部靠它传输数据帧IP地址是逻辑地址跨网络寻址靠它可以随时改。再把端口号加上就能唯一确定一台主机上的某个应用——比如访问Web服务器用80/443SSH用22MySQL用3306。在物联网和移动设备场景里还有一堆标识符SN序列号、IMEI手机国际移动设备识别码、MEID部分电信网络用、MAC地址。很多App以前都会收集这类设备信息用来做设备指纹识别、统计和反作弊。但近些年iOS和Android系统都收紧了权限普通第三方App已经很难拿到MAC和IMEI了这也是行业的大趋势。做设备接入方案的时候这套标识体系的设计要提前想清楚哪些是出厂固定的哪些是运行时可变的直接决定了业务逻辑能不能跑通。还有个概念叫NBMA网络全称Non-Broadcast Multiple Access非广播多路访问。传统以太网天生支持广播但帧中继、ATM这类广域网技术不支持广播一个接口连多个节点却不允许发广播包。这在配置OSPF这类依赖组播和广播的路由协议时会很麻烦需要手动指定邻居。现在帧中继和ATM基本退出历史舞台了但NBMA的概念在讲路由协议演进时还会反复出现面试也爱考。2.3 Ubuntu虚拟机、Docker网络不通、VMware网络模式排查实战虚拟化网络是当代工程师绕不开的日常。VMware Workstation的虚拟网络编辑器里有三种经典模式桥接模式、NAT模式、仅主机模式。桥接模式最“透明”虚拟机直接蹭宿主机的物理网卡看起来就像局域网里的一台独立主机NAT模式是宿主机当网关虚拟机共享宿主机的IP访问外网外网看不到虚拟机仅主机模式就是一个完全私密的虚拟网络虚拟机之间能互通但出不去。“Ubuntu虚拟机 网络 线缆已拔出”是我见过最多的报错。这个提示一出现几乎可以确定是虚拟网卡没连上。解决步骤很简单先看VMware工具栏里网卡是否勾选了“已连接”再去虚拟网络编辑器里看对应网卡的“桥接到”是不是选错了物理网卡最后确认宿主机物理网卡是不是被禁用了。大概率这三步能解决。Docker的网络模式也归类一路。bridge模式是默认的容器通过docker0网桥和宿主机通信容器之间可以互访但外网要映射端口才能进来host模式直接共享宿主机网络栈none模式相当于断网。遇到Docker网络不通我习惯按这个顺序查先docker network ls看网络在不在再docker network inspect看容器的IP分配最后查宿主机iptables的FORWARD链是不是被安全软件改了。很多Docker网络问题其实是防火墙策略导致的不是Docker本身的问题。virsh改默认网络到网桥模式属于KVM虚拟化的常见操作。默认的NAT网络改成桥接原理和VMware的桥接类似编辑default网络配置把forward modenat/改成forward modebridge/并且指定桥接口。注意改完要virsh net-destroy default和virsh net-start default才生效。Windows 11给Ubuntu虚拟机共享网络最简单的方式反而是开个“移动热点”虚拟机选NAT模式基本默认可通。3. 网络运维实操网络测速、命令行排障、网络唤醒与网络启动3.1 网络测速不是点一下“开始”那么简单iperf与带宽利用率测速大概是被误解最深的操作。普通人用Speedtest点一下就完事但做网络运维的想知道链路真实带宽和稳定性还得靠iperf。用iperf3做TCP带宽测试是最实战的方式# 服务端 iperf3 -s -p 5201 # 客户端 iperf3 -c 服务器IP -p 5201 -t 30 -i 5 -P 4-t 30表示测30秒-i 5每5秒打一次结果-P 4是4个并发流。为什么要有并发单流测试受限于单核性能和TCP窗口多流才能压出链路真实上限。跑完之后看SUM行那个速率就是实际可用带宽。带宽单位是个万年坑。运营商说的300M是Mbps除以8才是理论下载速度所以300M宽带满速也就37.5MB/s左右。iperf3默认输出是Mbits/sec如果你看到MB/sec的数字要乘以8再做比较。还有个经常被问的问题服务器的网络利用率一般达到多少才算正常其实没有一个绝对值要看业务场景。但有个经验值网卡利用率长期超过70%-80%就要关注了可能意味着软中断占用过高、单队列网卡打满、或者应用层有瓶颈。而且利用率高不一定代表带宽不够很多时候是CPU处理不过来用top看一下软中断和si列就能分辨。3.2 网络运维7天上岗先学会这组命令行排障工具新人在网络运维入门阶段最该练的不是某一个华丽工具而是一套组合拳。我心中的基础工具箱是这样ping测三层连通性通了说明IP和路由基本没问题。tracerouteWindows用tracert看数据包走的路径定位哪一跳丢包。ncnetcat测端口通不通还能当UDP调试工具用比如nc -u -v 目标IP 端口。tcpdump网络协议分析的利器tcpdump -i eth0 host 目标IP and port 80。ss或netstat看本机端口监听状态ss -lntp。排查“deepin应用商店连不上网络”这类问题时我的流程一般是先ping网关通了说明二层三层没问题再ping公网域名通但不解析就是DNS的事如果域名和IP都通但应用商店还是不行多半是别的问题——比如系统里残留了代理设置或者商店的服务器区域本身被墙了这里只说技术排查不展开。deepin这类基于Debian的系统DNS配置容易被NetworkManager接管直接改/etc/resolv.conf经常重启就还原。要用nmcli改才能持久化这就是“linux修改dns后重启网络还原”的原因。还有个真实案例某办公管理客户端一直提示“获取接收配置失败请检查网络设置”。我看了半天网络都通最后发现是客户端的配置文件里服务器地址写的是旧域名新域名解析不通。先用nslookup确认域名解析结果再用curl -v模拟请求看HTTP响应1分钟就能定位。所以遇到“网络错误”的报错不一定就是网络问题也可能是服务器变了、端口被拦、证书过期、甚至本地时间不对。3.3 网络唤醒和PXE网络启动远程开机的底层原理网络唤醒Wake-on-LANWOL是个很实用的功能尤其是装了飞牛OS这种私有NAS系统以后想远程开机就靠它。原理很简单给网卡发一个“魔法包”这个包的内容是连续6个FF加上目标MAC地址重复16次网卡识别到自己的MAC就会通知主板开机。但这玩意能不能生效有三个前提主板BIOS里要开启Wake on LAN相关选项ErP关闭、Resume by LAN开启网卡驱动里要开启“魔术包唤醒”Linux下可以用ethtool -s eth0 wol g设置如果是无线网卡很多默认不支持。HP主机装飞牛OS时我就是在这三处反复检查才搞定特别是ErP节能选项容易让人忽略。还要注意魔法包默认是广播帧跨VLAN或跨三层网段默认是过不去的要么在目标网段里发唤醒要么在路由器上开广播转发。网络启动PXE和iVentoy解决的是另一个痛点大规模装机。以前装系统要么刻盘要么U盘几十台机器要来回跑。PXE的思路是让机器从网卡启动通过DHCP获取IP和引导文件位置再通过TFTP或HTTP下载引导镜像。iVentoy这类工具把全流程图形化了维护一个镜像目录客户端网络启动后可以自动选择镜像安装全自动部署非常省心。我处理无光驱、无外设的服务器批量部署时全靠这套方案。4. 网络安全技术与更“高级”的网络爬虫、AI网络与网络编程4.1 从防火墙到设备信息网络安全技术的基本盘网络安全技术范围很广但最基础的几块是这个逻辑边界防护靠防火墙和ACL入侵检测靠IDS/IPS应用层防护靠WAF传输加密靠TLS身份认证靠AAA和证书体系。很多企业做到了内外网隔离、VLAN划分和ACL配置就已经挡住了大部分外部威胁剩下的更多是内部威胁和社工风险。收集设备信息这件事在安全合规里是个敏感点。以前做App或物联网平台硬件型号、MAC地址、系统类型、系统版本、分辨率、网络状态这些字段能拿到就顺手拿了用于设备指纹和风险识别。但现在的趋势是权限收得很紧IMEI、MEID、MAC这类硬件标识普通应用基本拿不到了能拿到的也大多变成匿名化的广告标识符。做数据采集时该脱敏的脱敏、该加密的加密、最小化收集不只是合规要求也是基本功。还有一个容易有的误区觉得装了防火墙就安全了。实际上防火墙只管边界策略VLAN内的横向移动、服务器的弱口令、未打补丁的Web服务照样能被攻破。安全是整体网络层的隔离、主机层的加固、应用层的防护哪一环都别缺。4.2 网络爬虫原理与高性能网络编程应用层视角下的网络网络爬虫大概是很多人接触应用层网络的第一步。底层原理其实就一句话HTTP请求加HTTP响应。爬虫做的事情是模拟浏览器发请求请求带上URL、Header、Method服务器返回HTML或JSON爬虫解析内容提取想要的字段再按策略控制抓取频率。批量获取网络资源的技术要点也在这套体系里要控制请求频率不然会给服务器造成压力要设置合理的User-Agent不然容易被反爬拦截要用多线程或协程提升效率但别忘了限速。有人总把“离线也能听歌”这种功能理解成某种“万能网络技术”实际上那就是把歌曲文件在联网时缓存到本地播放时走本地文件而已和网络没多大关系。弄清楚这个基本认知很多面试里的伪需求题都能很快拆穿。再往上走是高性能网络编程。libevent库很有代表性它用事件驱动加非阻塞I/O的方式处理海量连接不需要每个连接都开一个线程。网关、代理层、聊天服务器这类高并发场景经常用到它。嵌入式领域也有个典型例子基于STM32Cube的录音网络采集处理项目MCU采集音频数据通过以太网或WiFi模块按照TCP/UDP协议发送到服务器。这类项目看起来和Web开发完全不同但底层的socket、缓冲区、粘包拆包处理都是一回事掌握了网络协议栈的通透感做什么方向都不会慌。还有个概念叫网络编码它和我前面说的所有“网络”都不一样是信息论里的东西。传统网络中间节点只做存储转发网络编码允许中间节点对数据做线性组合再转发能显著提升组播场景的吞吐量和可靠性。听起来很数学但在无线网络、P2P内容分发里确实有应用面试时能说出这个概念会很加分。4.3 动态贝叶斯、对抗生成网络、LSTM机器学习里的“网络”不是一回事搜索热词里经常出现“动态贝叶斯网络”“对抗生成网络”“长短期记忆网络”“多目标网络”“双网络记忆模型”“机器人网络”很容易让人以为这些都归网络技术管。实际上这些是机器学习、概率图模型、深度学习里的“网络”和计算机网络完全是两套体系。动态贝叶斯网络是概率图模型用来对时序数据进行建模和推理对抗生成网络GAN是生成模型和判别模型互相博弈生成器负责造假判别器负责分辨最后生成器以假乱真长短期记忆网络LSTM是循环神经网络的一种解决长序列依赖问题翻译、语音识别里用过很多Dit网络是视觉Transformer类模型双网络记忆模型、多目标网络这些概念也都在各自领域有特定含义。作为网络技术从业者至少要做到“看到这个词不懵”能一眼判断出这是计算机网络的议题还是机器学习议题。很多跨领域的帖子标题写“网络”内容完全是人工智能关键词检索时容易混在一起。这篇文章提一嘴就是给大家锚定一个共识同叫“网络”含义天差地别别学串了。5. 网络不通的12个典型问题与排障方法避坑实录5.1 网络问题速查表虚拟化、Docker、专业软件和远程控制这些年处理过不少奇奇怪怪的“网络不通”我整理了一张速查表都是真实场景里的高频问题适合收藏起来当字典用。报错或现象可能的根因排查解决方向Ubuntu虚拟机显示“线缆已拔出”VM虚拟网卡没连接、桥接选错物理网卡勾选已连接检查虚拟网络编辑器Docker容器之间互ping不通自定义网桥没建好或iptables FORWARD被拦docker network inspect iptables -L FORWARDDeveco Studio模拟器没有网络模拟器DNS问题、宿主网络共享异常改模拟器DNS重启模拟器检查宿主防火墙deepin应用商店连不上网络DNS被NetworkManager覆盖用nmcli持久化配置DNS办公客户端报“获取接收配置失败”服务器域名解析失败、端口被拦nslookup域名 curl验证服务器地址RustDesk无法连接NAT类型限制、ID/中继服务器不可达检查服务器端口连通性换网络环境测试Moldflow2023网络许可不可用许可证服务器不可达或端口被防火墙拦确认许可证服务器地址和端口放通Allegro点信号网络不高亮颜色显示设置、网络名过滤被误开检查颜色分配和显示过滤条件随身WiFi“解除网络限速”运营商策略限制本地软件基本无效别轻信破解工具先确认套餐和限速逻辑virsh改成网桥后虚拟机失联桥接口配置错误宿主机网络也被桥接坏了检查brctl和网卡配置文件回滚配置Windows 11共享网络后Ubuntu还是不通ICS服务未启动或共享网卡选错确认移动热点或ICS启用的网卡正确华为ICT大赛网络赛道模拟器/实验环境异常软件版本兼容性、浏览器限制换设备环境更新模拟器检查本地代理设置这里要强调“随身WiFi解除限速”这类东西我也被问过很多次。实际测试下来绝大多数所谓的限速是运营商在套餐规则里做的策略终端软件层面能做的非常有限真正有效的是更换套餐或者检查信号质量。网上那些“破解软件”很多本身带广告和捆绑千万别随便装。5.2 从物理层到应用层网络排障的四步自查方法论结合上面的问题我发现大多数网络排查都能用“分层定位法”收敛。建议按这个顺序一层一层查每一层都有对应的命令和观察点第一层看物理和链路网卡指示灯亮不亮ethtool eth0看速率协商是否正常网线有没有松动交换机端口有没有down。很多“莫名其妙不通”最后都是网线被踢了。第二层看网络层ip addr确认IP地址有没有正确获取ping 网关确认二层转发和三层网关都正常。如果网关ping不通问题大概率在物理链路或交换机VLAN配置上。第三层看传输层nc -vz 目标IP 端口测端口ss -lntp看本机服务有没有监听。端口不通可能服务没起、防火墙拦截、或者NAT映射没做。第四层看应用层DNS解析是否正确HTTP状态码是否有异常证书有没有过期业务日志里有没有5xx报错。走到这一层说明基础网络已经通了问题在应用本身。我个人最大的体会是遇到网络问题先别急着重启先“看现象”。看看是全网不通、单台不通、还是单个应用不通这个判断就让排查范围缩小了一大半。然后记得日志比感觉可靠抓包比猜测可靠。花点时间学会tcpdump的基本用法很多疑难杂症都能一眼看穿。实在解决不了的时候大胆把现象发到社区提问把拓扑、配置、抓包结果三样摆出来高手们两三句话就能帮你点破。网络这东西摸到规律之后一点也不玄学。
返回列表