1. 为什么你网卡明明配了,服务却死活不通
遇到过太多这样的场景:新装好的Linux虚拟机,ip addr一看IP地址确实是配上了,但ping网关不通,SSH也连不进去。新手第一反应往往是再改一遍配置文件,然后重启网络服务,结果还是不通。其实大部分网络问题,根源不在“配置”这一步,而是没搞懂Linux网络栈到底是怎么工作的。
我写这篇内容的落脚点就是这件事:把Linux网络的概念理清楚,把从网卡、IP、路由到网关、DNS这一整条链路的配置方法串起来。适合刚接触Linux运维、或者做嵌入式开发要自己调试网络的人,也适合那些配过几次网络但总是“配完就忘、忘了再查”的朋友。你能从这篇文章里拿走的,是一套可以照着操作的排查思路和配置规范,而不是零散的命令碎片。
网络配置这件事,本质上就是回答四个问题:机器上有几块网卡,每块网卡该拿什么地址,数据包该从哪块网卡出去,出去之后怎么找到对方。搞懂这四个问题,配置和排障就都不会抓瞎。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 先搞清楚Linux网络栈的几个基本概念
2.1 网卡、IP地址和接口名,别再把它们混为一谈
Linux里一块物理网卡对应一个网络接口,接口名通常是eth0、ens33、enp3s0这类。很多人配置的时候只改IP,不管接口名,这就会出问题。比如你明明有两块网卡,物理上分别连了内网和外网,但系统里接口名对不上物理位置,你给eth0配了外网IP,实际插的却是内网网线,那数据包就全走错了地方。
接口名的编号规则并不神秘:传统的是eth0、eth1按识别顺序编号;较新系统用enpXsY这种带总线位置的命名,en代表以太网,p3代表PCI总线3号,s0代表插槽0。在配置前用ethtool -i或者直接看/sys/class/net/下的符号链接,能确认接口和物理网卡的对应关系。
IP地址是网卡上绑定的一层逻辑标识,同一块网卡可以绑多个IP(比如eth0上同时有内网和公网地址),这种叫IP Alias。所以理解Linux网络的第一件事就是分层:网卡是物理设备,IP是逻辑地址,接口名是系统给这个设备的“身份证号”。配置时三者的关系必须明确。
MAC地址是网卡出厂烧录的硬件地址,和IP最大的区别是:MAC在同一个二层网络里用来找设备,IP用来跨网络找设备。有一回我排查一个“静态IP配置生效但服务访问慢”的问题,查了半天发现是有人手工改了网卡的MAC地址,导致二层交换机上的ARP表一直反复刷新。这个细节提示一下:除非有特殊的MAC绑定需求,否则不要在配置文件里乱动MACADDR字段。
2.2 路由表、网关和DNS,数据包出门的三道关卡
IP配好之后,数据包要发出去,第一步就是查路由表。Linux里ip route看到的输出,就是一套“往哪个网段走、从哪块网卡出去、下一跳是谁”的规则表。
默认路由(default via)就是当你不知道该往哪走时,把包交给网关处理。家用场景里网关就是路由器,机房场景里网关是交换机或防火墙。很多人配置完IP但没配默认路由,导致的结果特别迷惑:ping 192.168.1.1(同网段)能通,ping 8.8.8.8(外网)不通。这种人一看路由表就明白了:ip route show里只有一条192.168.1.0/24 dev eth0,没有default那条。
DNS是第三道关卡,它解决了“知道对方域名但不知道对方IP”的问题。Linux的域名解析顺序受/etc/nsswitch.conf控制,里面hosts这一行默认是files dns,意思是先查本地/etc/hosts文件,再走DNS服务器。所以你在/etc/hosts里写了127.0.0.1 myhost,那ping myhost永远会走本地,根本不经过DNS服务器。
DNS配置在/etc/resolv.conf,但这里有个很容易踩的坑:很多系统(特别是CentOS/RHEL的NetworkManager)会自动重写这个文件。你手动改了resolv.conf,重启网络服务后又变回原样。正确做法是去网卡配置文件里改DNS1=、DNS2=字段,或者用nmcli改。
2.3 看懂ip addr的输出,比背命令更重要
ip addr显示的内容乍一看挺多,其实核心信息就几块:接口状态(UP/DOWN)、MAC地址、IPv4地址、IPv6地址。其中state UP表示链路是激活的,state DOWN表示接口被禁用了。如果你看到state DOWN但配置没错,先别急着改配置,执行ip link set eth0 up把它拉起来再看。
还有个很容易误解的地方:inet 192.168.1.100/24里的/24是子网掩码的缩写形式,表示前24位是网络位,也就是掩码是255.255.255.0。这个网段里可用的主机地址范围是192.168.1.1到192.168.1.254,其中192.168.1.0是网络地址,192.168.1.255是广播地址。
子网划分这块要稍微算一算。比如你要把192.168.1.0/24分成两个子网,每个子网能容
