CentOS7 运维 - iptables防火墙 | 规则实例 | SNAT | DNAT | 超详细

本文详细介绍了CentOS7中iptables防火墙的工作原理,包括规则表(raw、mangle、nat、filter)和规则链(input、output、forward、prerouting、postrouting)。重点讲解了SNAT和DNAT的转换应用,如何设置SNAT以共享公网IP地址,以及DNAT如何发布内网服务器。同时,文章还提供了iptables命令行配置方法和规则匹配条件的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

工作在网络层的IP信息包过滤系统,由netfilteriptables组成,对数据包内IP地址和端口等信息的处理

netfilter 属于内核的防火墙功能体系,由一些数据包过滤表组成,用于控制数据包过滤处理

iptables 属于用户的刚获取管理体系,用于管理Linux防火墙的命令工具

二、规则表

netfilter/iptables后期简称为iptabes,是基于内核的防火墙,其中内置了rawmanglenatfilter
表里有链,链里有规则

① raw表

  • 用于确定是否对该数据包进行状态追踪
  • 规则链 output | prerouting

② mangle表

  • 修改标记数据包,用于流量整形和策略路由等高级应用
  • 规则链 input | output | forward | prerouting | postrouting

③ nat表

  • 地址转换以及修改数据包中源、目标IP地址或端口
  • 规则链 output | prerouting | postrouting

④ filter表

  • 负责数据包的过滤及规则
  • 规则链 input | forward | output

三、规则链

① input

处理入站数据包,匹配目标IP为本机的数据包

② output

处理出站数据包[一般无需额外配置]

③ forward

处理转发数据包,匹配流经本机的数据包

④ prerouting

在路由选择前处理数据包,用来修改目的地址DNAT,类似映射

⑤ postrouting

在路由选择后处理数据包,用来修改源地址SNAT,类似NAT

►规则表优先顺序

数据包到达防火墙时,规则表之间的优先顺序

raw > mangle > nat > filter

►规则链之间的匹配顺序

  1. 主机型防火墙
  2. 入站数据
prerouting -> input -> 本机的应用程序
  1. 出站数据
本机的应用程序 -> output -> postrouting
  1. 网络型防火墙
  2. 转发数据
prerouting -> forward - > postrouting

自上而下一次匹配,找到的规则就停止(LOG除外),如找不到匹配的规则则按默认策略处理(没修改时,默认允许)

四、iptables的安装

若想使用iptables就需要先关闭firewalld

systemctl stop firewalld
systemctl disable firewalld.service
yum -y install iptables iptables-services
systemctl start iptables

① iptables 命令行配置方法

命令格式

iptables [-t 表名] 管理选项 [链名] 
### 配置 SNATDNAT 的方法及示例 #### 1. 配置 SNAT SNAT 是指 **源网络地址转换**,它修改数据包的源 IP 地址。通常用于让内部网络通过 NAT 设备访问外部网络。 以下是配置 SNAT 的具体方法: - 使用 `iptables` 工具来设置规则- 将指定范围内的源 IP 地址替换为公共 IP 地址。 ##### 示例:将内网子网 192.168.1.0/24 转换为外部 IP 地址 203.0.113.5 ```bash iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 203.0.113.5 ``` 这条命令的作用如下: - `-t nat`: 表明操作的是 NAT 表。 - `-A POSTROUTING`: 添加一条规则到 POSTROUTING 链中。 - `-s 192.168.1.0/24`: 指定要转换的源 IP 子网。 - `-o eth0`: 数据包从 eth0 接口发出时执行此规则- `-j SNAT --to-source 203.0.113.5`: 执行 SNAT 并将源地址更改为 203.0.113.5[^5]。 --- #### 2. 配置 DNAT DNAT 是指 **目标网络地址转换**,它修改数据包的目标 IP 地址。通常用于允许外部设备访问特定的服务或端口。 以下是配置 DNAT 的具体方法: - 同样使用 `iptables` 来创建规则- 将发往某个公共 IP 地址的数据包重定向到内部服务的实际 IP 地址和端口号。 ##### 示例:将发送至公网 IP 203.0.113.5 上的 HTTP 请求 (TCP 端口 80) 转发给内网主机 192.168.1.100 的 TCP 端口 80 ```bash iptables -t nat -A PREROUTING -d 203.0.113.5 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80 ``` 这条命令的作用如下: - `-t nat`: 表明操作的是 NAT 表。 - `-A PREROUTING`: 添加一条规则到 PREROUTING 链中。 - `-d 203.0.113.5`: 指定原始目标 IP 地址。 - `-p tcp --dport 80`: 指定协议为 TCP,并匹配目标端口 80。 - `-j DNAT --to-destination 192.168.1.100:80`: 执行 DNAT 并将目标地址更改为目标主机 192.168.1.100 的端口 80[^2]。 --- #### 注意事项 - 在实际环境中,可能还需要启用 IPv4 转发功能以支持 NAT 功能。可以通过以下命令开启转发: ```bash echo 1 > /proc/sys/net/ipv4/ip_forward ``` 或者永久生效可以编辑 `/etc/sysctl.conf` 文件并添加以下内容: ```text net.ipv4.ip_forward=1 ``` 随后运行 `sysctl -p` 应用更改。 - 如果需要保存 `iptables` 规则以便重启后仍然有效,则需根据操作系统安装相应的工具(如 Red Hat/CentOS 中的 `service iptables save` 或 Ubuntu 中的 `iptables-save` 命令)[^4]。 --- ### 总结 以上展示了如何利用 `iptables` 实现 SNATDNAT 的基本配置。这些技术广泛应用于防火墙、路由器以及负载均衡器等场景下,能够显著提升网络安全性和资源利用率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值