iptables 基础总结
前提
由于常见都是把iptables防火墙关闭的,所以不是很多人对iptables有多少的了解,但是iptables对云计算虚拟化场景下作用还是很大的,所以有必要学习下,对于理解虚拟化网络通讯原理很有必要。(openstack、docker)
学习参考:点击访问
iptables 实现的功能是在内核中
防火墙全景图,图片为学习参考网站
红色部分
5节点,实现防火墙规则载体,数据包传输必须经过他们才能正常传输
- INPUT和OUTPUT控制用户空间和内核空间的进出节点
- INPUT为外部访问服务器,比如我SSH访问服务器,服务器需要允许我通过
- OUTPUT跟INPUT相反,是服务器访问外部
- PREROUTING、FORWARD、POSTROUTING控制数据包的整个传输周期
- 数据包从物理网卡进口–转发–出口
表现形式
- 到本机某进程的报文:PREROUTING --> INPUT
- 由本机转发的报文:PREROUTING --> FORWARD --> POSTROUTING
- 由本机的某进程发出报文:OUTPUT --> POSTROUTING
黄色部分
4种表,表的作用就是为了制定规则,让数据包按照不同规则传输
- filter表:负责过滤功能,最常用的表
- nat表:网络地址转换功能,docker常用的表,作用就是使容器能联网
- mangle表:拆解报文,做出修改,并重新封装 的功能,也就是策略路由和QOS功能,一般很少使用,由硬件实现会更好
- raw表:关闭nat表上启用的链接追踪机制,为了提高性能(也就是NAT功能无法使用)
表链关系
链就是节点规则的集合,规则为顺序匹配,序号1开始匹配
表链就是节点的表集合,多个表都配置了规则,那么就需要分出高低优先级进行顺序匹配表规则
- raw --> mangle --> nat --> filter(高到低优先级匹配)
规则的组成
匹配条件
- 由网络五元组:源IP地址、目的IP地址、协议号、源端口、目的端口
- 五元组可以随意组合符合需求的规则
处理动作
常用:
- ACCEPT:允许数据包通过
- DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应
- REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息
- SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题
- DNAT:目标地址转换
不常用:
- MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上
- REDIRECT:在本机做端口映射
- MIRROR :镜像数据包,也就是将来源 IP与目的地IP对调后,将数据包返回,进行完此处理动作后,将会中断过滤程序
- QUEUE :中断过滤程序,将封包放入队列,交给其它程序处理
- RETURN :结束在目前规则链中的过滤程序,返回主规则链继续过滤,如果把自订规则炼看成是一个子程序,那么这个动作,就相当于提早结束子程序并返回到主程序中
- MARK:将封包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此处理动作后,将会继续比对其它规则
target也是可以自定义链