iptables不算是一个真正的防火墙,它是一个配置Linux内核防火墙的命令行工具。将用户的安全设置同步到对应的安全框架–Netfilter。netfilter位于内核空间,iptables位于用户空间。

iptables用于ipv4,ip6tables用于IPv6。
netfilter/ptables 一起组成了linux平台下的包过滤防火墙。其功能包括:网络地址转换(NAT)、数据包内容修改、数据包过滤等功能。
- 主机型防火墙
- 网络型防火墙

原图:https://thermalcircle.de/lib/exe/fetch.php?media=linux:netfilter-packet-flow.png
Netfilter Hooks
iptables是与协议栈中具有包过滤功能的hook交互完成工作的,而这些hook就构成了netfilter框架。
netfilter框架包含5个hook点:
-
NF_IP_PRE_ROUTING:在数据包进入协议栈后,再决定对此数据包进行路由判断之前,触发此HOOK -
NF_IP_LOCAL_IN:通过路由判断,此数据包是给本机的,触发此HOOK -
NF_IP_FORWARD:通过路由判断,此数据包是给其他机器的,触发此HOOK -
NF_IP_LOCAL_OUT:本机触发即将发送的数据包在进入协议栈后,触发此HOOK -
NF_IP_POST_ROUTING:本机触发即将发送或要转发的数据包,在路由判断之后,触发此HOOK
在注册这些钩子函数时,同时需要提供优先级,以便在触发HOOK时确定调用顺序。
IPTables 表和链(Tables and Chains)
在Iptables中有四表五链。

Iptables处理流程

iptables配置规则
iptables [-t table] {-A|-C|-D} chain rule-specification
iptables [-t table] command [链名] [条件匹配] [-j 目标动作]
-
-t table,指明要是使用的表。filter(默认)、nat、mangle、raw、security(强制访问控制(MAC)网络规则) -
通用选项
-
-p:匹配协议类型-p TCP/UDP/ICMP -
-sport:匹配源端口 -
-dport:匹配目的端口 -
-s:匹配源地址 -
-d:匹配目的地址 -
-m limit:匹配转包速率 -
-m mac:匹配MAC地址
-
-
command-
-L:--list [chain]查看规则列表 -
-A:--append chain rule-specification追加一条规则
-
-D:--delete chain rule-specification删除指定规则 -
-I:--insert chain [rulenum] rule-specification在指定位置插入一条规则
-
-R:--replace chain rulenum rule-specification替换所选链中的规则 -
-C:--check chain rule-specification -
-E:--rename-chain old-chain new-chain给链重命名 -
-F:--flush [chain]清空规则
-
-N:--new-chain chain用给定的名称创建一个新的用户定义的链 -
-P:--policy chain target对某条链设置默认规则 -
-X:--delete-chain [chain]删除用户自定义链,如果该链被使用,需要先删除规则 -
-Z:--zero [chain [rulenum]]将指定链的所有计数器归零,默认所有链 -
-h:Help
-
-
-j 目标动作-j ACCEPT:允许通过 -j DROP:丢弃数据包,不允许通过 -j SNAT:源地址转换 -j DNAT:目的地址转换 -j MASQUERADE:动态源IP转换
iptables规则备份
由于我们在执行iptables命令时,规则只是保存在内存中,机器重启后规则就没了。因此我们在规则设定完毕后,可以使用命令保存规则。
iptables-save – 保存规则
iptables-restore – 恢复规则




![[网络] TCP协议是什么?套接字Socket是什么?它们是什么关系?](https://img-blog.csdnimg.cn/38a79dac84df43c6a2d2a3fdd77a52b2.png)














