Linux学习笔记 - iptables
Linux学习笔记 - iptables
一、简介
iptables 是 Linux 内核中的防火墙软件 netfilter 的管理工具,位于用户空间,同时也是 netfilter 的一部分。
Netfilter 位于内核空间,不仅有网络地址转换的功能,也具备数据包内容修改、以及数据包过滤等防火墙功能。
iptables主要是专门用来做主机防火墙的,而不是专长做负载均衡的。
虽然通过iptables的statistic模块以及DNAT能够实现最简单的只支持概率轮询的负载均衡,
但是往往我们还需要更多更灵活的算法,比如基于最少连接算法、源地址HASH算法等。
而同样基于netfilter的ipvs却是专门做负载均衡的,配置简单,基于散列查找O(1)复杂度性能好,支持数十种调度算法。
因此显然ipvs比iptables更适合做kube-proxy的后端,毕竟专业的人做专业的事,物尽其美。
二、功能
封包过滤
封包重定向
NAT 地址转换
三、核心概念
规则:
网络管理员预定义的条件,规则一般的定义为”如果数据包头符合这样的条件,就这样处理这个数据包”。
根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理;
过滤表:
规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。
我们把具有相同功能的规则的集合叫做”表”。
- filter表:负责过滤功能,防火墙;内核模块:iptables_filter
- nat表:network address translation,网络地址转换功能;内核模块:iptable_nat
- mangle表:拆解报文,做出修改,并重新封装 的功能;iptable_mangle
- raw表:关闭nat表上启用的连接追踪机制;iptable_raw
优先级次序(由高而低):raw –> mangle –> nat –> filter
动作:
放行(accept)、拒绝(reject)和丢弃(drop)
当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包。
处理动作在iptables中被称为target 。
关卡:
prerouting(路由前) 、input(输入:内核空间-》用户空间)、 forward(重定向)、output(输出:用户空间-》内核空间)、postrouting(路由后)
链:每一个关卡上的一系列规则。
请求链路:
client-》网卡-〉内核空间-》input-〉用户空间-〉output-》网卡-〉client
参考资料:
理解 Istio Service Mesh 中 Envoy 代理 Sidecar 注入及流量劫持