IPtables五表五链 规则以及应用
1.iptables是什么?
iptables是开源的基于数据包过滤的防火墙工具。
2.iptables企业应用场景
1、主机防火墙(filter表的INPUT链)。
2、局域网共享上网(nat表的POSTROUTING链)。半个路由器,NAT功能。
3、端口及IP映射(nat表的PREROUTING链),硬防的NAT功能。
4、IP一对一映射。
3.iptables工作流程
iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。
1.防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
2.如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。
3.如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
4.防火墙的默认规则是对应链的所有的规则执行完以后才会执行的(最后执行的规则)。
4.表与链
一张表里有链,防火墙规则:改的是哪张表哪个链?
防火墙的4张表
iptables为我们提供了如下规则的分类,或者说,iptables为我们提供了如下”表”
filter表:负责过滤功能,防火墙;内核模块:iptables_filter
nat表:network address translation,网络地址转换功能;内核模块:iptable_nat
mangle表:拆解报文,做出修改,并重新封装 的功能;iptable_mangle
raw表:关闭nat表上启用的连接追踪机制;iptable_raw
表:
filter表(默认,实现防火墙功能是准许或是拒绝)
nat表:
- 内网服务器上外网(共享上网)
- 端口映射
mangle表
raw表
大佬博文讲解iptables
https://www.zsythink.net/archives/1199
表(功能)<–> 链(钩子):
raw 表中的规则可以被哪些链使用:PREROUTING,OUTPUT
mangle 表中的规则可以被哪些链使用:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat 表中的规则可以被哪些链使用:PREROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)
filter 表中的规则可以被哪些链使用:INPUT,FORWARD,OUTPUT
图解表与链
iptables的增删改查
iptables删除nat规则 iptables -t nat -L -n --line-numbers
[root@node-2 ~]$ iptables -t nat -L -n --line-numbers
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 SNAT all -- 10.8.0.0/24 10.0.12.0/24 to:10.0.12.11
2 SNAT all -- 10.18.0.0/24 10.0.12.0/24 to:10.0.12.11
3 SNAT all -- 10.18.0.0/24 10.0.12.0/24 to:10.0.12.6
4 SNAT all -- 10.18.0.0/24 10.0.12.0/24 to:10.0.16.11
5 SNAT all -- 10.18.0.0/24 10.0.16.0/24 to:10.0.16.11
#删除规则
iptables -t nat -D POSTROUTING 1
iptables的规则
**参数 -m mac --mac-source **
说明 用来比对封包来源网络接口的硬件地址,这个参数不能用在 OUTPUT 和
Postrouting 规则链上,这是因为封包要送出到网卡后,才能由网卡驱动程序透过 ARP 通讯
协议查出目的地的 MAC 地址,所以 iptables 在进行封包比对时,并不知道封包会送到哪
个网络接口去。
示例:
拒绝 91.27 计算机的 MAC 能够访问 91.241主机
iptables -t filter -I INPUT -d 192.168.91.27/24 -m mac --mac-source b6:6b:8d:6f:87:cb -j DROP
openvpn中iptables的应用
iptables -t nat -A POSTROUTING -s 10.18.0.0/24 -d 10.0.12.0/24 -j SNAT --to-source 10.0.12.11
iptables -nL -t nat
规则解释如下:
-t nat :NAT表
-A POSTROUTING :POSTROUTING链
-s -s 10.18.0.0/24 :源地址-s 10.18.0.0/24
-d 10.0.12.0/24 指定目的地址
-j SNAT :SNAT 改写源地址
--to-source 10.0.12.11 :将源地址改写成10.0.12.11
理解:从10.18.0.0/24的tun网卡的源地址,到达10.0.12.0/24**目的地址的数据包,经过转发 到 **10.0.12.11这个地址
附加规则解释
-s #<==指定源地址或网段(192.168.1.0/24)。 ! 取反。
-d #<==指定目的地址(nat表prerouting)。
-i #<==进入的网络接口(eth0,eth1)。
-o #<==出去的网络接口(eth0,eth1)。
iptables基于状态回话的规则设置
背景:
server端和client端都能够互相ping通,然后基于回话层做一个规则,把server端的output链给drop掉,
这样,即使server端已经中了木马,也不能和外边的主机建立起回话了。
iptables的具体命令
参数 -m state
禁止一方给禁用ping
参数 -m icmp -icmp-type
参数 -m multiport
--sport
--dport
--ports
1、指定多端口号
拒绝192.168.80.0/24 访问192.168.10.0/24 1-1024 3389
iptables -t filter -I FORWORD -p tcp -d 192.168.10.0/24 -s 192.168.80.0/24 -m multiport --dports 1:1024,3389 -j DROP
参数 -m iprange
--src-range ip-ip
--dst-range ip-ip
2、拒绝IP地址段访问 192.168.80.0/24
iptables -t filter -I FORWORD
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器