iptable是啥

参考维基百科:iptables是运行在用户空间的应用软件,通过控制Linux内核netfilter模块,来管理网络数据包的处理和转发。

iptables规则

iptables主要有raw、mangle、filter、nat这几个表,对应几个规则:PREROUTING 、INPUT 、FORWARD 、OUTPUT、POSTROUTING 。

NAT 包括 SNAT (源地址转换)和 DNAT (目的地址转换)。两者的区别在于做地址转换是在路由前还是路由后,SNAT和DNAT总是成对出现的。

对应的含义可以简单理解为:

表名 用途 包含的规则
表名 用途 包含的规则
raw 关闭nat表上启用的连接追踪机制 PREROUTING,OUTPUT
mangle 拆解报文,做出修改,并重新封装的功能 PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat 网络地址转换功能 PREROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)
filter 负责过滤功能,防火墙 INPUT,FORWARD,OUTPUT

规则的意义:

规则 意义
PREROUTING 报文刚刚到达主机,还没经过路由
INPUT 报文已经经过路由,判断是发送给本机的报文
FORWARD 报文已经经过路由,判断不是本机的报文,如果内核开启转发功能则转发出去,否则丢弃
OUTPUT 报文从应用发出报文已经经过路由
POSTROUTING 报文从应用发出已经经过路由,准备从网卡发出

数据从网络到达主机,再从主机到达应用的过程,以集群中traefik部署的Ingress为例,可以理解为:

iptable相关命令

查看iptables规则:

iptables -L, --list [chain] 列出链 chain 上面的所有规则,如果没有指定链,列出表上所有链的所有规则

参考https://wangchujiang.com/linux-command/c/iptables.html