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

 

 

参考资料:

随笔分类 - iptables

iptables命令

iptables详解(3):iptables规则管理

理解 Istio Service Mesh 中 Envoy 代理 Sidecar 注入及流量劫持

Istio 中的 Sidecar 注入及透明流量劫持过程详解

理解 Linux 下的 Netfilter/iptables

posted @ 2021-06-03 15:37  风过无痕521  阅读(96)  评论(0编辑  收藏  举报