netfilter 中五个勾子函数和报文流向

五个勾子

报文流向

流入本机:PREROUTING --> INPUT-->用户空间进程
流出本机:用户空间进程 -->OUTPUT--> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING

iptables的组成

iptables由五个表table和五个链chain以及一些规则组成

五个表

filter 表格(默认表格):用于过滤数据包,决定是否接受或丢弃数据包。它包含三个默认链:INPUT、OUTPUT 和 FORWARD。

nat 表格:用于网络地址转换(Network Address Translation,NAT),修改数据包的源或目标地址。它包含三个默认链:PREROUTING、OUTPUT 和 POSTROUTING。

mangle 表格:用于修改数据包的特定字段。它允许在数据包经过网络协议栈的不同阶段进行操作。

raw 表格:用于配置数据包在内核中的处理方式,通常用于跳过某些处理阶段,如连接追踪和网络地址转换。

security 表格:用于 Linux 安全模块(Security Modules)对数据包进行额外的安全检查和操作。

五个勾子函数

INPUT 链:用于处理目标地址为本机的数据包,即进入本机的数据包。

OUTPUT 链:用于处理源地址为本机的数据包,即从本机发出的数据包。

FORWARD 链:用于处理需要转发到其他主机的数据包。

PREROUTING 链:用于对数据包进行路由前的预处理,如目标地址转换。

POSTROUTING 链:用于对数据包进行路由后的处理,如源地址转换。

表和链的对应关系

li8x5cz3.png

优先级

security -->raw-->mangle-->nat-->filter

iptables的初步使用

iptables的参数解释

li8xwgej.png

iptables [-t 表名] 子命令 链名 [选项] [匹配条件] -j 目标动作 [目标动作选项]

-t 表名:

指定要操作的表名。默认为filter表,可以是filter、nat、mangle、raw、security等表名之一。

子命令:

链管理类子命令
-N:new, 自定义一条新的规则链
-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除
-X:delete,删除自定义的空的规则链
-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:ACCEPT:接受, DROP:丢弃
查看类子命令
-L:list, 列出指定鏈上的所有规则,本选项须置后
-n:numberic,以数字格式显示地址和端口号
-v:verbose,详细信息
-vv 更详细
-x:exactly,显示计数器结果的精确值,而非单位转换后的易读值
--line-numbers:显示规则的序号
-S selected,以iptables-save 命令格式显示链上规则
常用子命令组合
-vnL
-vvnxL --line-numbers
规则管理类子命令
-A:append,追加
-I:insert, 插入,要指明插入至的规则编号,默认为第一条
-D:delete,删除
   (1) 指明规则序号
   (2) 指明规则本身
-R:replace,替换指定链上的指定规则编号
-F:flush,清空指定的规则链
-Z:zero,置零
   iptables的每条规则都有两个计数器
 (1) 匹配到的报文的个数
 (2) 匹配到的所有报文的大小之和

链名:

指定要操作的链的名称。链是一系列规则的集合,用于决定数据包的处理方式。常见的链包括INPUT、OUTPUT、FORWARD、PREROUTING和POSTROUTING。

[选项]:

可选的命令选项,用于对iptables命令进行进一步的配置和控制。

[!] -s, --source address[/mask][,...]:源IP地址或者不连续的IP地址
[!] -d, --destination address[/mask][,...]:目标IP地址或者不连续的IP地址
[!] -p, --protocol protocol:指定协议,可使用数字如0(all)
 protocol: tcp, udp, icmp, icmpv6, udplite,esp, ah, sctp, mh or“all“  
 参看:/etc/protocols
[!] -i, --in-interface name:报文流入的接口;只能应用于数据报文流入环节,只应用于INPUT、
FORWARD、PREROUTING链
[!] -o, --out-interface name:报文流出的接口;只能应用于数据报文流出的环节,只应用于
FORWARD、OUTPUT、POSTROUTING链

[匹配条件]:

可选的匹配条件,用于指定数据包匹配的条件。可以使用不同的匹配模块和选项来匹配源地址、目标地址、协议类型、端口等。

-j 目标动作:

指定匹配成功后的目标动作,决定数据包的处理方式。常见的目标动作包括ACCEPT(接受数据包)、DROP(丢弃数据包)、REJECT(拒绝数据包)等。

[目标动作选项]:

可选的目标动作选项,用于进一步配置和控制目标动作的行为。

做个小例子

基本设置

iptables -A INPUT -s 192.168.2.100 -j ACCEPT
iptables -I INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT
iptables -I INPUT -p icmp -j DROP

分类: Linux教程 标签: linuxiptables防火墙

评论

暂无评论数据

暂无评论数据

目录