表顺序:raw - mangle - nat - filter
FILTER:INPUT链  处理来自外部的数据
       OUTPUT链  处理向外发送的数据
       FORWARD链  将数据转发到本机的其他网卡设备上
NAT: PREROUTING链 处理刚到达本机并在路由转发前的数据包,常用于DNAT
     POSTROUTING链 处理即将离开本机的数据包,常用于SNAT
     OUTPUT链 处理本机产生的数据包
MANGLE: 用于指定如何处理数据包。能改变TCP头中的QoS位
        PREROUTING
        OUTPUT
        FORWARD
        INPUT
        POSTROUTING
RAW:用于处理异常
        PREROUTING
        OUTPUT


列顺序:入站 prerouting - input
        出站 output - postrouting
        转发 prerouting forward postrouting
规则: 按顺序依次检查,匹配即停止(LOG策略例外)没有相匹配相,默认匹配

入站数据流向:raw:prerouting-mangle:prerouting-nat:prerouting-filter:input-mangle:input
出站数据流向:raw:output-mangle:output-nat:output-filter:output-mangle:postrouting-nat:postrouting
转发数据流向:raw:prerouting-mangle:prerouting-nat:prerouting-mangle:forward-filter:forward-mangle:postrouting-nat:postrouting

语法规则
iptables [-t 表名]  选项 [连名] [条件] [-j 控制类型]

不指定表名,默认指filter表
不指定连名,默认指表内所有链
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其他均为小写

控制类型:
ACCEPT:允许通过
DROP: 直接丢弃,不给出任何回应
REJECT: 拒绝通过,必要时会给出提示
LOG; 记录日志信息,然后传给下一条规则继续匹配
SNAT: 修改数据包源地址
DNAT: 修改数据包目的地址
REDIRECT: 重定向

添加新的规则
    -A: 在链的末尾追加一条规则
    -I:  在链的开头(或指定序号)插入一条规则
iptables -t filter -A INPUT -p tcp -j ACCEPT
    -L:列出所有的规则条目
    -n: 以数字形式显示地址、端口等信息
    -v:以更详细的方式显示规则信息
    -line-numbers:查看规则时,显示规则的序号

iptables -L INPUT --line-numbers

    -D: 删除链内指定序号(或内容)的一条规则
    -F:清空所有的规则
    -P:为指定的链设置默认规则
   

 把应用中匹配规则最多的规则放在最上面


常见的通用匹配条件
协议匹配:-p 协议名
地址匹配: -s 源地址 -d 目的地址
接口匹配: -i 入站网卡 -o 出站网卡

常用的隐含匹配条件
端口匹配: --sport 源端口 --dport 目的端口
ICMP类型匹配: --icmp-type ICMP类型

常用的显式匹配条件
多端口匹配:-m multiport  --sport 源端口列表
            -m multiport  --dport 目的端口列表
IP范围匹配:-m iprange  --src-range IP范围
MAC地址匹配: -m mac  --macl-source MAC地址
状态匹配:-m state --state 连接状态

iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT //将25,80,110,143放在同一条规则
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT
iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT //三种连接状态放行

//报文状态
NEW: 连接中的第一个包,状态就是NEW,即新的连接的第一个包的状态
ESTABLISHED: 把NEW状态包后面的包的状态理解为ESTABLISHED,连接已建立
RELATED: 与其他报文存在依赖关系
INVALID: 如果一个包没有办法被识别,或者这个包没有任何状态,那么这个包的状态就是INVALID
UNTRACKED: 报文的状态为untracked时,表示报文未被追踪,当报文的状态为UNTRACKED时通常表示无法找到相关的连接


SNAT策略规则 //路由后转换
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT -to-source 218.29.30.31
//所有命令为临时生效,要想永久生效service iptables save 该命令将规则写入 /etc/sysconfig/iptables (centos)

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE //公网地址隐藏,自动绑定公网地址

DNAT策略规则  //路由前转换
iptables -t nat -A PREROUTING -i eth1 -d 20.20.20.12 -p tcp --dport 80 -j DNAT --to-destination 10.10.10.11

iptables备份导出
iptables-save > xx.iptables //文件名
还原
iptables-restore < xx.iptables

//安装iptables
sudo apt-get install iptables-services

//防御ddos攻击
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP //访问80端口同一个ip多于10个的连接丢弃(慎用,因为有些访问者的公网ip是共用的)

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐