🧩iptables in linux

type
status
date
slug
summary
tags
category
icon
password
Blocked by
Blocking
AI summary

iptables

是什么

Linux 系统中用于管理和操作网络包过滤规则的工具,是 Linux 内核中的 Netfilter 框架的用户态接口。它的主要作用是配置防火墙、网络地址转换(NAT)和流量控制规则,从而实现对进出网络的数据包进行监控和管理。
 

基本概念

  • 三个主要的chains
    • input:处理所有进入主机的流量
    • output:处理所有主机发出的流量
    • forward:处理所有经过主机发出的流量
  • tables
    • filter:根据数据包的IP地址、端口等信息来决定接受还是丢弃数据包,多用于防火墙规则配置
    • nat:用于网络地址转换的转换规则,当包进入协议栈时,nat中的规则决定是否修改以及如何修改数据包的源、目的IP地址以及端口号信息,以及改变包被路由时的行为
    • mangle:用于修改数据包的包头
    • raw:允许用户根据 connection tracking表配置规则,比如忽略connection tracking中的有效信息
 
这里是 iptables 的基本流程:
  1. 包接收: 当一个包到达 Linux 系统时,系统会将其传递给 iptables
  1. 规则匹配: iptables 将包与所有定义的规则进行比较。如果该包与某个规则相符,则会执行相应的动作。
  1. 动作执行: 根据规则的类型,iptables 可以执行以下动作用:
      • ACCEPT:允许该包通过本机网络。
      • DROP:拒绝该包,并将其丢弃。
      • REJECT:将该包传回源IP(通常是接口的原始 IP)。
      • LOG:记录相关信息并继续运行包。
  1. 规则链: iptables 有两个主要的规则链:INPUTOUTPUT。其中,INPUT 规则负责处理到达本机网络的包,而 OUTPUT 规则则负责从本机网络发出包。
 
 

常见参数

-A append,表示追加规则,追加到规则表的末尾
-I insert,表示插入到链的指定位置,默认为最前面
-D delete,表示删除
-R replace,表示替换
-X 选项可以快速删除不再需要的规则,这个命令可以应用于任何链,包括 INPUT, OUTPUT, FORWARD
-Z 重制计数器
-t表示选择表,摩恩为filter表
 
  • 设置协议
-p 指定协议,如tcp、udp、icmp、all等
  • 设置端口
—sport 指定源端口
—dport 指定目标端口
  • 设置IP
-s—source指定源IP
-d—destination指定目标IP
 
  • 设置网卡
-i—in-interface 指定进入的网络接口
-o—out-interface 指定离开的网络接口
  • 设置匹配条件
-m state 用于匹配连接状态,如NEW、ESTABLISHED、RELATED、INVALID
-m time 根据时间段匹配流量
  • 限流
—limit 限制每分钟的最大连接数
—limit-burst 触发限制前允许的处罚突发流量
  • others
-f—fragment匹配数据包片段
—tcp-flags 匹配TCP标志,如SYN、ACK
 
 

example

 
 
 

ref

 
Prev
从0到1,利用kubevirt构建ubuntu虚拟机
Next
LVM
Loading...
Article List