https://blog.csdn.net/weixin_38166318/article/details/127344897
目录
防火墙基本概念
https://www.zsythink.net/archives/1199
https://blog.csdn.net/qq_34645863/article/details/129329035 (条理)
https://blog.csdn.net/wzj_110/article/details/108890766
https://blog.csdn.net/wzj_110/article/details/108875481(详细说明了数据包的流向)
由大到小,表、链、规则。
链的执行顺序
语法
https://blog.csdn.net/qq_43320461/article/details/106518013
一、表、链
1.链
1.1自定义链
https://blog.csdn.net/ss810540895/article/details/127427771
https://www.cnblogs.com/YuAnTime/p/13998574.html
自定义链并不能直接使用,而是需要被默认链引用才能够使用;删除自定义链注意2个错误。
二、规则
匹配+动作
-
如何看某个表中有哪些链和规则
iptables -t nat -nvL --line-numbers
-
在已知链末尾添加规则(举例,拒绝某个ip的访问)
iptables -t filter -A INPUT -s 59.45.175.62 -j REJECT
-A 表示Append,其后紧跟的是链的名称,表示该条规则要被添加到哪个链中。
-s 表示包的来源ip即source。除了指定固定的ip外,我们还可以指定ip范围,比如59.45.175.0/24
-j 表示jump 也即是我们最终的动作,这里的动作是拒绝
- 在已知链链首插入规则
iptables -t filter -I INPUT -s 59.45.175.62 -j REJECT
1.匹配
1.1 基本匹配条件
- -m -p
-m: module_name
-p:protocol
iptables -p tcp : 表示使用 TCP协议
iptables -m tcp:表示使用TCP模块的扩展功能(tcp扩展模块提供了 --dport, --tcp-flags, --sync等功能)
- -s (src_ip)
1.指定1或者多个源IP,多个IP并列时可以使用逗号隔开;
iptables -t filter -I INPUT -s 192.168.10.32,192.168.10.6 -j DROP
2.指定网段IP
iptables -t filter -I INPUT -s 192.168.0.0/16 -j DROP
- -i / -o (指定网卡)
当本机有多个网卡时,我们可以使用 -i /-o选项去匹配报文是通过哪块网卡流入/出本机的。从eth3接收的icmp报文将被丢弃 iptables -t filter -I INPUT -i eth3 -p icmp -j DROP
-i选项只能用于上图中的PREROUTING链、INPUT链、FORWARD链。
-o选项只能用于FORWARD链、OUTPUT链、POSTROUTING链中。
- 条件取反(!)
1.2 扩展匹配条件 --
netfilter中的一部分,以模块的形式存在,如果想要使用这些条件,则需要依赖对应的扩展模块。
语法:-m 模块名称 --扩展条件
2.处理动作
3.规则管理
不同的操作系统兼容性问题
-
在debian上使用iptables命令:ERROR: Couldn't determine iptables version
https://www.cnblogs.com/liujiaxin2018/p/17081003.html -
iptables/1.8.2 Failed to initialize nft: Protocol not supported
https://codeleading.com/article/48046401113/
在内核中添加nf_tables支持。
打开kernel/arch/arm64/configs/rockchip_linux_defconfig
文件添加:
CONFIG_NF_TABLES=y
0 条评论