news 2026/10/18 6:09:56

Linux网络基础详解:IP、子网、网关、DNS、路由

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux网络基础详解:IP、子网、网关、DNS、路由

服务连不上、域名解析失败、能 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回环(localhost)
169.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 default
default via 192.168.1.1 dev eth0 proto dhcp metric 100

via 192.168.1.1就是默认网关。

四、DNS:域名到 IP 的翻译官

人对域名敏感(www.baidu.com),机器只认 IP(110.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/hosts

cat /etc/hosts
127.0.0.1 localhost 127.0.1.1 web01 192.168.1.100 db-server

用途:本地开发映射、临时绕过 DNS、屏蔽域名(指向 127.0.0.1)。hosts 优先于 DNS,调试域名问题时先看它。

/etc/resolv.conf

cat /etc/resolv.conf
nameserver 223.5.5.5 nameserver 8.8.8.8 options timeout:2 attempts:3
  • nameserver:DNS 服务器地址,可配多个,按顺序尝试
  • 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 # 填 DNS=223.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 show
2: 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/24(IPv4 地址和掩码)、link/ether(MAC 地址)。

ip route:看路由表

ip route show
default 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.8
8.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」。排「走错网卡」「多网卡选路」问题时极其有用。

六、⚠️ 常见错误

  1. 改了/etc/resolv.conf却被覆盖。systemd-resolved 会重建它,要改resolved.conf或用chattr +i。
  2. 看到169.254.x.x还在查上游。这是本机 DHCP 失败时的自分配地址,说明本机根本没拿到网络配置,先查 DHCP 或网线。
  3. hosts 改了不生效。可能是应用缓存了 DNS/连接,或解析走了别的顺序,检查/etc/nsswitch.conf。
  4. 子网掩码配错导致「能通却不全通」。同网段却走网关,或跨网段当同网段,会出现部分通、部分不通的诡异现象。
  5. 多网卡默认路由冲突。两个网卡都有 default 路由,包从哪个走不确定。用ip route get确认,必要时用 metric 调优先级。
  6. ping 域名不通但 ping IP 通。这是 DNS 问题,不是网络不通,去查 DNS 配置。
  7. 防火墙放行忘了方向。出站出得去,入站回不来(或反过来),表现为「主动连出去可以,别人连不进来」。

七、原理探究:一个数据包的旅程

理解数据包怎么走到目标,网络问题就都串起来了。假设你在本机执行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去实际配置这些参数,把「看懂」变成「配得对」。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 6:07:48

Ultra X7 358H 本地编码模型部署:llama.cpp 与 Vulkan 核显加速实战

1. 为什么要在本地跑编码模型&#xff1a;需求拆解与方案选型1.1 本地编码模型的真实需求场景先说说我为什么会折腾这件事。手头这台 Ultra X7 358H 的笔记本&#xff0c;日常主力是写代码&#xff0c;偶尔也跑一些数据处理脚本。之前一直用云端 API 做代码补全和生成&#xff…

作者头像 李华
网站建设 2026/10/18 6:04:36

不用向量数据库的语义搜索:Sirchmunk轻量架构解析

1. 为什么“不用向量数据库”这件事值得单独写一篇深度解析&#xff1f;“Sirchmunk”这个名字在最近三个月的开发者社区讨论中出现频率陡增——不是因为它是某个大厂新发布的商业产品&#xff0c;也不是某篇顶会论文的实验系统&#xff0c;而是一套由某开源实验室内部孵化、持…

作者头像 李华
网站建设 2026/10/18 6:00:42

openEuler上从源码编译VLC:环境配置、依赖处理与播放验证全流程

Linux 华为openEuler 测试编译VLC在国产操作系统上编译一个像VLC这样的重量级多媒体播放器&#xff0c;我个人的结论是&#xff1a;能跑通一次&#xff0c;你对Linux构建系统的理解会上一个台阶。openEuler虽然不是最热门的桌面发行版&#xff0c;但作为华为开源的操作系统&…

作者头像 李华
网站建设 2026/10/18 6:00:31

用人生重开模拟器实战Python流程控制:if、for、while不再难

有多少人是被“人生重开模拟器”这个实战项目吸引进来的&#xff1f;当初我学 Python 流程控制时&#xff0c;if、for、while 看了好几遍感觉自己懂了&#xff0c;一写代码就卡壳。直到某次被项目逼着做了一个简化版的人生重开模拟器&#xff0c;才真正把条件语句和循环语句焊在…

作者头像 李华
网站建设 2026/10/18 6:00:22

鸿蒙上React Native LayoutAnimation弹簧动画配置深度指南

1. 项目背景与核心需求解析1.1 为什么要在鸿蒙上重新审视LayoutAnimation先聊聊这套方案的来龙去脉。我们团队从去年开始把一套基于React Native的跨端业务逐步迁移到鸿蒙生态&#xff0c;目标很直接——在尽量不动业务逻辑的前提下&#xff0c;把RN容器跑在鸿蒙设备上。迁移过…

作者头像 李华
网站建设 2026/10/18 5:59:55

Laravel政务门户系统v1.0:可运行的政务网站MVP原型

简介&#xff1a;大气地方门户网站管理系统 v1.0 是一款面向个人开发者与中小型企业用户的轻量级建站解决方案&#xff0c;专为快速搭建和智能化运营地方性信息门户而设计&#xff0c;适用于无专业前端/后端开发经验但需自主维护网站的用户。资源包共1287个文件&#xff0c;主体…

作者头像 李华