这篇将讲解iptables防火墙的基础知识
一、 iptables链结构
规则的作用:对数据包进行过滤或处理
规则链的作用:容纳各种防火墙的规则
五链
- input:处理入站数据包
- output:处理出站
- forward:处理转发
- postrouting:在路由选择后处理 内到外 SNAT
- prerouting:在路由选择前处理 外到内 DNAT
二、 iptables表结构
规则表作用:容纳各种规则链
四表
- raw:确定是否对该数据包进行状态跟踪
- mangle:为数据包设置标记
- nat:修改源、目标IP/端口
- filter:确定是否过滤
表链示意图
三、 匹配流程
表:raw-mangle-nat-filter
链
- 入站:prerouting-input
- 出站:output-postrouting
- 转发:prerouting-forward-postrouting
链内匹配顺序:按顺序一次检查,匹配即停(log除外),若找不到相匹配的规则,则按该链默认策略
入站数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING链处理(是 否修改数据包地址等),然后进行路由选择(判断该数据包应发往何处);如果数据包的 目标地址是防火墙本机(如Internet用户访问网关的Web服务端口),那么内核将其传 递给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序 (如httpd 服务器)进行响应
转发数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING链处理,然 后再进行路由选择;如果数据包的目标地址是其他外部地址(如局域网用户通过网关访 问QQ服务器),则内核将其传递给FORWARD链进行处理(允许转发或拦截、丢弃), 最后交给POSTROUTING链(是否修改数据包的地址等)进行处理
出站数据流向:防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS 服务时),首先进行路由选择,确定了输出路径后,再经由OUTPUT链处理,最后再 交给POSTROUTING链(是否修改数据包的地址等)进行处理
四、 语法
iptables [-t表名] 选项 [链名] [条件] [-j控制类型]
选项
- -A:添加
- -I:插入
- -D:删除
- -L:列出
- -n:数字形式
- -v:更详细
- -F:删所有
- -P:设置默认
控制类型
- ACCEPT:允许
- DROP:丢弃
- REJECT:拒绝
- LOG:日志
五、 匹配
1. 通用匹配
协议匹配:-p 协议名
地址
-s:源地址 -d:目标地址
接口
-i:入站 -o:出战
2. 隐含匹配
端口匹配
--sport:源端口 --dport:目标端口
ICMP
--icmp-type 类型
3. 显示匹配
多端口
-m multiport --sports -m multiport --dports
IP范围
-m iprange --src-range
MAC
-m mac --mac-source
状态
-m state --state
域名
-m string --string ".com" --algo bm
六、 SNAT
- 源地址转换,修改数据包的源地址
iptables -t nat -A POSTROUTING -s 192.168.180.0/24 -o ens37 -j SNAT --to-source 100.0.0.1
- 地址伪装-MASQUERADE,适用于外网IP地址不固定
iptables -t nat -A POSTROUTING -s 192.168.180.0/24 -o ens37 -j MASQUERADE
七、 DNAT
- 目标地址转换,修改数据包的目标地址
iptables -t nat -A PREROUTING -i ens37 -d 100.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.180.100
八、 规则备份及还原
1. 备份
iptables-save
iptables-save > 1.txt //备份并保存到1.txt里
2. 还原
iptables-restore
iptables-restore < 1.txt //从1.txt文件里导出备份的内容
版权归原作者 羊村懒哥 所有, 如有侵权,请联系我们删除。