Linux 系统网络全景:从本机数据面到 Docker / Kubernetes

1. 本机身份

先看机器是谁:

  • interface:lo / eth0 / wlan0 / tun / veth
  • IP / prefix / scope
  • route / rule
  • namespace 边界

第一批命令:ip -br addrip route get

2. 名字解析

域名问题不要和网络连通性混在一起。

  • /etc/hosts
  • nsswitch.conf
  • resolv.conf
  • systemd-resolved
  • Docker / K8s 内部 DNS

先测:getent hosts

3. 路由与邻居

路由决定从哪张网卡、哪个源地址、哪个网关出去。

同网段还要 ARP / NDP 找 MAC。

关键命令: ip route get <ip> ip neigh

4. Socket / 端口

服务不只是“开端口”:

  • 进程是否监听
  • 监听 127.0.0.1、0.0.0.0 还是具体 IP
  • TCP 状态是 SYN-SENT、ESTAB、RST 还是 TIME-WAIT

核心命令:ss -lntup

5. 防火墙 / NAT / conntrack

Linux 数据包经常被规则改写或拦截。

  • nftables / iptables
  • ufw / firewalld
  • SNAT / DNAT / MASQUERADE
  • conntrack 状态

Docker 和 K8s 都会改这里。

6. 虚拟网络积木

这些是容器、VPN、虚拟机网络的共同地基:

  • network namespace
  • veth pair
  • Linux bridge
  • tun / tap
  • vxlan / overlay
  • qdisc / tc

看不懂它们,就容易误解 Docker / K8s。

7. Docker 对照

Docker 网络 = Linux 网络能力的自动化封装。

container netns -> veth -> bridge -> NAT / filter -> Host / Internet。

-p 本质是宿主机端口到容器端口的数据面转发。

8. Kubernetes 对照

K8s 把 Linux 网络对象化、集群化:

Pod netns、CNI、Service VIP、EndpointSlice、kube-proxy/eBPF、NetworkPolicy、Ingress/Gateway。

排障仍要回到底层:DNS、路由、监听、规则、抓包。

先确认自己名字变地址后看路径路径之后看端口端口之外看规则进入虚拟网络层单机容器网络集群化抽象继承旧排障路径落到 Docker落到 K8s排障速查挂回 Linux 总入口命令 MOC回到网络基础VM / WSL 对照