k8s学习笔记——iptables基础
表顺序:raw - mangle - nat - filterFILTER:INPUT链 处理来自外部的数据OUTPUT链 处理向外发送的数据FORWARD链 将数据转发到本机的其他网卡设备上NAT: PREROUTING链 处理刚到达本机并在路由转发前的数据包,常用于DNATPOSTROUTING链 处理即将离开本机的数据包,常用于SNATOUTPUT链 处理本机产生的数据包MANGLE: 用于
表顺序: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是共用的)
更多推荐
所有评论(0)