服务连不上、域名解析失败、能 ping 通 IP 却打不开网页——这些网络问题的根源大多出在四个基本概念上IP、子网、网关、DNS再叠加一层路由。很多人对它们是「知道名字、说不清原理」的状态所以排障时只能靠重启和猜。这一篇把网络四要素讲透配合 Linux 下的查看命令帮你建立「数据包怎么从本机走到目标」的完整认知。一、网络四要素一张图搞懂想象你要寄一封信给「上海市浦东新区张江路 100 号的小明」。寄信需要收件人地址IP 地址小明的具体门牌地址里哪部分是区域子网掩码判断「本市内投递」还是「寄往外省」邮局大门默认网关出了本区域后交给谁继续送查号台DNS你说「小明的店」这个名字查号台告诉你具体门牌域名 → IP数据包发送的过程本质和寄信一样。把这张「寄信图」装进脑子后面全顺。概念作用类比IP 地址定位主机门牌号子网掩码划分网段判断是否同网区域划分网关跨网段的出口邮局大门DNS域名解析成 IP查号台路由表决定包从哪条路走投递路线二、IP 地址与子网掩码IP 地址IPv4 是 32 位写成点分十进制四个字节如192.168.1.10。它由两部分组成[ 网络号 ][ 主机号 ]网络号标识「在哪个网络」主机号标识「网络内的哪台机器」。两者怎么分由子网掩码决定。子网掩码掩码是连续的 1 后跟连续的 0。1覆盖的位是网络号0覆盖的位是主机号。常见掩码CIDR掩码可用主机数/24255.255.255.0254/25255.255.255.128126/16255.255.0.065534/8255.0.0.016777214为什么是 254 而不是 256每个网段有两个地址被保留网络地址主机号全 0如192.168.1.0代表「整个网络」广播地址主机号全 1如192.168.1.255发给网段内所有主机判断两台机器是否同网段核心规则两 IP 分别和掩码做「按位与」结果相同就是同网段可以直接通信不同就得走网关。# 示例192.168.1.10/24 与 192.168.1.20/24 192.168.1.10 255.255.255.0 192.168.1.0 # 网络地址相同 192.168.1.20 255.255.255.0 192.168.1.0 # 同网段 ✓ # 192.168.1.10/24 与 192.168.2.20/24 192.168.1.10 255.255.255.0 192.168.1.0 192.168.2.20 255.255.255.0 192.168.2.0 # 不同网段需网关私有地址这三个网段是私有地址只在局域网内用不能直接上公网网段说明10.0.0.0/8大企业常用172.16.0.0/12中型网络192.168.0.0/16家庭/小型办公保留地址地址含义127.0.0.0/8回环localhost169.254.0.0/16链路本地DHCP 失败时自动分配见到就说明网络没配好0.0.0.0本机所有地址 / 未指定看到169.254.x.x就是 DHCP 拿不到地址的信号是排障的重要线索。三、网关网关Gateway是「本网段通往其他网段的出口」。当你访问的 IP 不在本网段包会先发给网关由它转发。默认网关default gateway路由表里0.0.0.0那条是所有「不知道往哪走」的包的兜底出口。通常网关就是路由器的内网地址如192.168.1.1。没有网关本机只能和自己同网段的主机通信出不了网。查看网关ip route show defaultdefault via 192.168.1.1 dev eth0 proto dhcp metric 100via 192.168.1.1就是默认网关。四、DNS域名到 IP 的翻译官人对域名敏感www.baidu.com机器只认 IP110.242.68.66。DNS 负责翻译。解析流程以解析www.example.com为例1. 查本机 hosts 文件/etc/hosts 2. 查本地 DNS 缓存systemd-resolved / nscd 3. 问 /etc/resolv.conf 里配置的 DNS 服务器 └─ 递归查询根域名 → .com → example.com → www.example.com 4. 拿到 IP缓存并返回关键配置文件文件作用/etc/hosts本地静态解析优先级最高/etc/resolv.confDNS 服务器配置/etc/nsswitch.conf解析顺序hosts → dns 等/etc/hostscat /etc/hosts127.0.0.1 localhost 127.0.1.1 web01 192.168.1.100 db-server用途本地开发映射、临时绕过 DNS、屏蔽域名指向 127.0.0.1。hosts 优先于 DNS调试域名问题时先看它。/etc/resolv.confcat /etc/resolv.confnameserver 223.5.5.5 nameserver 8.8.8.8 options timeout:2 attempts:3nameserverDNS 服务器地址可配多个按顺序尝试options timeout查询超时秒options attempts重试次数⚠️ systemd-resolved 的坑Ubuntu 18.04 默认用systemd-resolved/etc/resolv.conf常是一个软链接ls -l /etc/resolv.conf /etc/resolv.conf - ../run/systemd/resolve/stub-resolv.conf直接编辑/etc/resolv.conf会被 systemd 覆盖。正确做法# 方法一改 resolved 配置 sudo vim /etc/systemd/resolved.conf # 填 DNS223.5.5.5 8.8.8.8 sudo systemctl restart systemd-resolved # 方法二改用真实文件关闭 stub sudo rm /etc/resolv.conf echo nameserver 223.5.5.5 | sudo tee /etc/resolv.conf sudo chattr i /etc/resolv.conf # 防止被覆盖五、Linux 下查看网络配置旧命令ifconfig、route、netstat已逐渐被ip系列取代属于iproute2包。现代系统优先用ip。ip addr看 IP 地址ip addr show2: eth0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc fq_codel state UP link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff inet 192.168.1.10/24 brd 192.168.1.255 scope global dynamic eth0 valid_lft 86390sec preferred_lft 86390sec inet6 fe80::5054:ff:fe12:3456/64 scope link关键信息state UP网卡启用、inet 192.168.1.10/24IPv4 地址和掩码、link/etherMAC 地址。ip route看路由表ip route showdefault via 192.168.1.1 dev eth0 proto dhcp metric 100 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10逐行看default via 192.168.1.1默认路由网关192.168.1.0/24 dev eth0 ... src 192.168.1.10本网段直连不用网关其他常用命令命令作用ip -br addr简洁显示所有接口ip link set eth0 up/down启用/禁用网卡ip route get 8.8.8.8查看到某 IP 会走哪条路由cat /etc/hosts本地解析cat /etc/resolv.confDNS 配置查看哪条路由会被选中ip route get 8.8.8.88.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.10 uid 1000这告诉你「去 8.8.8.8 会经 eth0、网关 192.168.1.1、源 IP 192.168.1.10」。排「走错网卡」「多网卡选路」问题时极其有用。六、⚠️ 常见错误改了/etc/resolv.conf却被覆盖。systemd-resolved 会重建它要改resolved.conf或用chattr i。看到169.254.x.x还在查上游。这是本机 DHCP 失败时的自分配地址说明本机根本没拿到网络配置先查 DHCP 或网线。hosts 改了不生效。可能是应用缓存了 DNS/连接或解析走了别的顺序检查/etc/nsswitch.conf。子网掩码配错导致「能通却不全通」。同网段却走网关或跨网段当同网段会出现部分通、部分不通的诡异现象。多网卡默认路由冲突。两个网卡都有 default 路由包从哪个走不确定。用ip route get确认必要时用 metric 调优先级。ping 域名不通但 ping IP 通。这是 DNS 问题不是网络不通去查 DNS 配置。防火墙放行忘了方向。出站出得去入站回不来或反过来表现为「主动连出去可以别人连不进来」。七、原理探究一个数据包的旅程理解数据包怎么走到目标网络问题就都串起来了。假设你在本机执行ping www.example.com第一步域名解析查 hosts → 查缓存 → 问 DNS 服务器 → 得到 IP 93.184.216.34第二步判断目标是否同网段用本机 IP 与掩码算出网络地址和目标的网络地址比同网段→ 直接 ARP 找到目标 MAC发出去不同网段→ 目标 MAC 填网关的 MAC交给网关转发第三步查路由表决定出口ip route get 93.184.216.34内核按「最长前缀匹配」选路由越具体的路由前缀越长优先级越高。默认路由0.0.0.0/0是兜底。第四步封装、封装、再封装数据从应用层往下走每层加自己的头[以太网头 [IP头 [TCP头 [数据]]]] ← 二层帧目标 IP 在IP 头里目标端口在TCP 头里目标 MAC 在以太网头里第五步ARP 找下一跳的 MAC同网段直接找目标 MAC跨网段找网关 MAC。ARP 就是「这个 IP 是谁报上 MAC」的广播请求。第六步出网卡 → 路由器 → 一跳一跳到目标包到达路由器后路由器只看 IP 头查自己的路由表决定下一跳重新封装二层头换源/目标 MAC继续转发。每一跳 IP 不变MAC 一直在变。第七步回包沿路返回目标回包时源/目标地址对调。回来时可能走不同路径互联网路由是动态的。把这七步记住「通不通、慢不慢、丢不丢」的问题都能一层层定位解析有没有问题DNS→ 路由对不对route→ 能不能到达链路→ 会不会被拦防火墙→ 回得来吗NAT/防火墙。八、网络基础速查表# IP 地址与网卡状态 ip addr show ip -br addr # 路由与默认网关 ip route show ip route get 8.8.8.8 # DNS 配置 cat /etc/resolv.conf cat /etc/hosts resolvectl status # systemd-resolved 用户 # 网卡启停 sudo ip link set eth0 down sudo ip link set eth0 up # 常见问题对应 # 169.254.*.* → DHCP 失败 # ping IP 通、域名不通 → DNS 问题 # 同网段不通 → 掩码或 ARP 问题 # 跨网段不通 → 网关/路由问题网络四要素是排障的骨架IP 定位、掩码分网、网关出门、DNS 翻译。下一篇讲怎么用ip、nmcli、netplan、ifcfg去实际配置这些参数把「看懂」变成「配得对」。
阅读完成 · 觉得有帮助?