iptables指令逻辑详解

前言:本文主要讲解iptables的基本概念,工作处理流程,配置指令

 

一、基本概念

iptables用以进行网络防火墙,具体概念由表(table)、链(Chain)、规则构成。一个iptables包含多个表,一个表包含多条链、一条链包含多条规则,每条规则包含一个匹配项和数据包处理动作。iptables包含filter、nat、mangle、raw四张表,其中filter表最常用,链一共有PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING五条链(hook,即5个钩子函数),每个链上都有一些规则,一个规则定义了匹配模式和处理动作。具体每张表只能包含特定链,而一条链可以有多种规则,指定匹配模式和处理方式,如果一个数据包无法匹配链上的任何一条规则,则采取默认处理动作。

注:一共有4张表、5条链,但是每张表都只能包含特定的链,每条链可以包含不同的规则。具体关系如下图:

 

二、iptables处理流程

在得知iptables内部的静态结构后,需要进一步了解各个模块间的相互作用,如何实现防火墙,检测、修改、转发、重定向、丢弃数据包的。理解iptable如何工作关键是理解下图:

 

 

整个iptables的封包流向如上图所示:

 封包首先经过nat->PREROUTING,进行路由判断,本包数据是转发还是放行进入本机,是否需要进行网络地址转换。若果需要转发则走filter->FORWARD链,如果放行进本机,走filter->INPUT链。所以网络封包有两条线路:

1)转发线路:

nat-PREROUTING  ------------> filter-FORWARD-------------->nat-POSTROUTING

2)放行路线:

nat-PREROUTING------->filter-INPUT-------->local_process--------->nat-OUTPUT---------->filter-OUTPUT------->nat-POSTROUTING

更详细的流向:

三、iptables配置指令

指令基本模式如下:

iptables [-t table_name] -option [chain_name] [rule_no] [rule] [-j action] 
表示对表tablbe_name
### Firewalld 的详细介绍 #### 一、Firewalld 概述 Firewalld 是一款动态管理防火墙的软件,支持网络区域(zone)的概念来定义不同信任级别的网络连接。相比传统的 iptables 工具而言,firewalld 提供了一个更易于使用的命令行接口和图形界面[^1]。 #### 二、安装与启动服务 大多数现代 Linux 发行版默认已预装此组件;如果没有,则可以通过包管理器轻松获取。对于基于 Red Hat 的系统来说,可执行如下指令完成部署: ```bash sudo yum install firewalld ``` 接着启用并开启该守护进程: ```bash sudo systemctl enable firewalld.service sudo systemctl start firewalld.service ``` 确认其运行状态正常: ```bash sudo firewall-cmd --state ``` 上述操作完成后即可开始配置工作[^2]。 #### 三、基本概念解析 - **Zone**: 定义了一组具有相同安全策略的应用场景,默认存在 public/private/internal/drop/block/workstation/external/trusted 等多个内置 zone; - **Service**: 表示允许通过的服务类型列表,比如 ssh/http/https 等常见协议端口组合; - **Port**: 单独指定开放的具体 TCP 或 UDP 端口号; - **Rich Rule**: 支持创建复杂的条件语句实现高级过滤逻辑。 #### 四、常用命令集锦 查询当前活动区及其关联规则: ```bash sudo firewall-cmd --get-active-zones ``` 查看某特定 Zone 下的所有设置详情: ```bash sudo firewall-cmd --zone=public --list-all ``` 临时添加一条新规则至 Public 区域内(重启后失效): ```bash sudo firewall-cmd --add-service=http --zone=public ``` 永久生效需追加 `--permanent` 参数,并重新加载配置文件使更改立即起效: ```bash sudo firewall-cmd --runtime-to-permanent ``` 移除先前设定好的规则项: ```bash sudo firewall-cmd --remove-port=80/tcp --zone=public --permanent sudo firewall-cmd --reload ``` 针对 Rich Rules 进行增删改查的操作方式类似,在这里不再赘述具体语法结构。 #### 五、进阶特性说明 除了以上提到的基础功能外,firewalld 还具备 SNAT/DNAT 地址转换能力,能够灵活调整内外网之间的数据流向。此外,借助于 rich rules 可以构建更为精细的安全防护体系,满足企业级应用场景下的多样化需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值