一、什么是 iptables

iptables 是 Linux 系统中用户空间的命令行工具,用于配置内核中 Netfilter 框架的防火墙规则。它用于控制进出系统的网络流量,支持:

  • 包过滤(Packet Filtering)
  • 网络地址转换(NAT)
  • 端口转发
  • 流量限制
  • 包记录(日志)

iptables 操作的四个主要表(tables):

表名用途
filter默认表,用于控制包是否被允许
nat用于网络地址转换,如 DNAT、SNAT
mangle用于修改数据包
raw用于配置不走连接跟踪的规则

二、iptables 能做什么?

  • 防火墙规则:允许或拒绝特定 IP/端口/协议的数据包
  • NAT:修改数据包源地址或目标地址(如端口映射)
  • 流量控制:限制某些连接速率
  • 网络隔离:不同网络或服务间通信隔离
  • 端口转发:将一个端口流量转发到另一个主机或端口

三、Kubernetes 中 iptables 的作用

Kubernetes 使用 iptables 实现以下关键网络功能:

1. Service 的流量转发(ClusterIP)

K8s 会将对 Service IP 的访问通过 iptables 转发到对应的后端 Pod

# 查看 Kube Proxy 安装的 iptables 规则
sudo iptables -t nat -L -n | grep KUBE

规则链示意(nat 表):

PREROUTING -> KUBE-SERVICES -> KUBE-SVC-xxxx -> KUBE-SEP-xxxx

其中:

  • KUBE-SERVICES:匹配所有服务 IP 的入口
  • KUBE-SVC-*:为每个 Service 创建的规则
  • KUBE-SEP-*:为每个 Pod 创建的规则,真实 IP:Port

2. NodePort 服务

K8s 使用 iptables 将宿主机某个端口(NodePort)映射到后端服务 Pod。

iptables -t nat -L -n | grep NODEPORT

3. 网络策略(NetworkPolicy)【若使用 iptables 实现的 CNI,如 Calico】

Calico 等插件可以通过 iptables 控制 Pod 与 Pod、Pod 与外部网络之间的访问权限。

4. DNS 拦截与处理

Kubernetes 的 DNS 请求也可能由 iptables 重定向至 CoreDNS。

四、举例说明:Service 流量转发(ClusterIP)

场景说明:

创建一个名为 my-nginx 的 Deployment,并暴露为 ClusterIP 服务。

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-nginx
  template:
    metadata:
      labels:
        app: my-nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: my-nginx
spec:
  selector:
    app: my-nginx
  ports:
  - port: 80
    targetPort: 80
  type: ClusterIP

查看 iptables 规则:

# 查找服务 IP 对应的 iptables 规则(假设服务 IP 为 10.96.0.100)
sudo iptables -t nat -L KUBE-SERVICES -n | grep 10.96.0.100

输出可能如下:

DNAT       tcp  --  0.0.0.0/0  0.0.0.0/0  tcp dpt:80 to:10.244.1.5:80

说明访问 10.96.0.100:80 会被重定向到实际 Pod(10.244.1.5:80)。

五、简要总结

功能iptables 在 K8s 中作用
服务转发将 Service IP 映射到 Pod IP
端口映射NodePort → Pod
网络隔离NetworkPolicy 实现
路由选择辅助 kube-proxy 实现服务发现
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐