iptables简述

netfilter

iptables的底层实现是netfilter。netfilter实在Linux内核2.4版引入的子系统,作为通用框架提供一套hook函数的管理机制,使得数据包过滤、地址转换、访问控制、连接跟踪等功能得以实现。netfilter的架构就是在整个网络流程中放置了一些钩子,并在钩子上挂载一些函数进行处理。
下面是一张netfilter的原理图。
图

当网卡收到一个数据包到达协议栈时:

  1. 经过PREROUTING 钩子,如果这里有用户配置的钩子函数,那么内核在这里对数据包做DNAT。
  2. 不管在PREROUTING 有没有做DNAT,内核都会查本地路由表决定这个数据包是发个本地还是其它设备。
  3. 如果经过路由决策内核把数据包发给本地,就会经过INPUT钩子。
  4. 本地进程收到数据包后发送回程包,先经过OUTPUT钩子,然后经过路由决策出口,
  5. 最后经过POSTROUTING出协议栈,这里可以设置SNAT的钩子函数。
  6. 如果经过路由决策内核把数据包发给其它设备或net namespace,就会经过FORWARD钩子这里可以设置包过滤函数例如reject。
  7. 最后是POSTROUTING出协议栈,这里可以设置SNAT的钩子函数。

iptables 三件套:chain、table、rule

iptables是一个用户空间程序,负责往钩子上配置回调函数。一般用于构建Linux内核防火墙。

链chain

5条链chain对应netfilter的5个钩子:
INPUT链:处理进入本地进程的数据包;
OUTPUT链:处理本地进程发出的数据包;
FORWARD链:处理转发到其它设备或net namespace的数据包;
PREROUTING链:处理DNAT;
POSTROUTING链:处理SNAT。
除此之外用户还可以自定义链,自定义的链没有与netfilter绑定,所以不会自动触发,只能从其它链上JUMP跳转过来。

表table

5张表table分别是:
filter表:用于控制某条链上的数据包放行、丢弃、拒绝;
nat表:用于修改数据包的源目IP地址;
mangle表:用于修改数据包的IP头信息;
raw表:iptable是有状态的,即连接追踪(connection tracking),raw可以去掉追踪机制;
security表:数据包上应用SELinux。
5张表的优先级从高到底依次是:raw、mangle、nat、filter、security

链和表的对应关系

不是每个链都能挂表
在这里插入图片描述

规则rule

iptables的规则rule是通过表table来分类管理的,或者说iptables规则被划分到不同的表集合中。例如,filter表是过滤数据包的规则,nat表是做地址转换的规则。
iptables规则由用户自定义。一般规则包含两部分:匹配条件和动作。匹配条件包括:协议类型、五元组、连接状态等,多匹配条件可以任意组合。
动作包括:DROP直接丢弃、REJECT丢弃后返回提示、ACCEPT数据包通过并执行下一个规则、JUMP跳到其它用户自定义链上继续执行等。

iptables用法

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
例如:
iptables -L -n 输出iptables所有filter表的规则,-n 表示IP地址形式展示
iptables -t nat -L -n 输出iptables所有nat表的规则
iptables -A INPUT -s 10.0.0.1/32 -j ACCEPT 在INPUT最后追加一条记录
iptables -I INPUT 1 -i lo -j ACCPET 在第1条的位置插入一条记录,接受所有来自lo网口的访问
iptables -D INPUT 2 删除INPUT第2条记录
iptables -F 清理所有已定制的规则
保存iptables规则:
iptables-save > /etc/sysconfig/iptables
从文件里面恢复iptables规则:
iptables-restore < /etc/sysconfig/iptables

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值