Netfilter匹配规则
在Netfilter中,我们的规则有很多,是按照先后顺序插入的我们的各个链中的
那么,一个包是如何匹配我们的规则的呢?
First Match: 即第一个匹配的规则生效,生效后,剩余的都不在进行判断
有一种特殊情况就是如果没有匹配任何的规则怎么办?
其实,每个链的最底端都有一个默认的策略,当一个数据包不符合上边所有的策略的时候,就按照默认的策略进行处理,可能是放行,也可能是Drop
注意:所有链的默认策略默认是ACCEPT
Netfilter和iptables的关系
iptables其实是一个管理Netfilter的工具,用来管理内存中的netfilter策略,并做语法检测等功能
IPtables工具的使用方法
先看一张图
iptables -t TABLE – 操作方式 规则条件
其中:
-t TABLE : 现在我们的netfilter中有4个表,分别为filter,nat,mangle,raw , 如果不指定,则默认为filter表
– 操作方式 : 当我们选择好具体的要操作的表的时候,接下来要决定要做什么操作,例如
-L : 列出所选表的所有的内容 后也可以跟某个链的名称,这个时候就只显示某个链的内容
-A : 在指定的链中填加一个规则
-F : 清除选中表的所有内容
-P : 设置指定链的的默认策略
-I : 在指定链中插入指定的表 需要跟插入的位置 例如:iptables -t filter -I INPUT 2 -p tcp -j ACCEPT
-R : 替换指定链指定位置的策略例如: iptables -t filter -R input 2 -p tcp -j ACCEPT
-D : 删除链中已经存在的策略 例如: iptables -t filter -D input 2
规则条件: 规则条件我们会在后边详细说,此处只给出例子
-p tcp -j ACCEPT
-p udp -j ACCEPT
实例:
#iptables -t filter -L
显示iptables 中filter 表中的所有内容
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我们可以看到我们的fitler表现在是空的,而且3个链的默认策略都是ACCEPT
添加一条记录:
iptables -t filter -A INPUT -p icmp -j ACCEPT
修改forword 链的默认策略为DROP
iptavles -t filter -P FORWARD DROP
注意 -F 不会影响默认策略,即使你清空了,也无法改变默认策略
其他的NAT 和mangle 表的操作也都是相同的,不同的是链的名字和表的名字
iptables的高级语法
iptables -t filter -A INPUT -m mac –mac-source 00:E0:18:00:7C:A4 -j DROP
-m : 要调用额外的模块, 例如本例子中的mac 模块,
我们先看一个基本的语法例子:
iptables -A INPUT -p icmp -s 192.168.1.100 -j DROP
-A : 指定了INPUT链,说明是为了保护本机
-p ; Protocol ,协议类型,例如: -p tcp ; -p udp ;-p tcp ; -p all
-s : Source 匹配来源的IP地址(或者网段)
-d : Destination 匹配目表的IP地址(或者网段)
–dport: 目标主机的端口
–sport :来源主机的端口
-j : 处理方式 ,一共有 ACCEPT , DROP ,REJECT
例子:
iptables -A INPUT -p udp -s 192.168.1.100 –dport 53 -j REJECT
不允许192.169.1.100这台主机使用本机的DNS解析服务
iptables -A INPUT -p tcp -i eth1 –dport 22 -j ACCEPT
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021