> 网络管理 > iptables

iptables: Linux 防火墙规则管理

iptables 是一个命令行工具,用于使用 Linux 内核的 Netfilter 框架来配置和管理 IPv4 数据包过滤和 NAT(网络地址转换)规则。它允许您控制网络流量并增强系统安全性。iptables 使用链(chains)和表(tables)的概念来定义数据包处理规则。

概述

iptables 通过定义传入和传出网络数据包的规则来实现系统的安全策略。每条规则都为匹配特定条件的数据包指定一个目标(target),如 ACCEPT(接受)、DROP(丢弃)或 REJECT(拒绝)。通常使用 INPUT、OUTPUT 和 FORWARD 链,并利用 PREROUTING 和 POSTROUTING 链实现 NAT 功能。

主要功能

  • 数据包过滤(防火墙)
  • 网络地址转换(NAT)
  • 端口转发和重定向
  • 基于特定 IP 地址、端口、协议的流量控制

主要选项

iptables 命令与各种选项一起使用,用于添加、删除、修改特定规则或查看当前规则。

规则管理

匹配条件

目标(动作)

生成的命令:

请尝试组合命令。

描述:

`iptables` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

使用 iptables 配置常见防火墙规则的示例。建议在添加规则之前备份当前规则。

查看所有当前规则

sudo iptables -L -v -n

查看规则,显示详细信息和 IP 地址的数字表示。

允许 SSH(端口 22)

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

允许来自外部的 SSH 连接。

阻止特定 IP 地址

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

阻止来自特定 IP 地址(例如 192.168.1.100)的所有入站流量。

允许所有出站流量

sudo iptables -P OUTPUT ACCEPT

将 OUTPUT 链的默认策略设置为允许所有出站流量。

Web 服务器端口转发(80 -> 8080)

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

将入站的 80 端口请求重定向到本地的 8080 端口(使用 NAT 表)。

内部网络伪装(NAT)

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

当内部网络流量通过外部接口(例如 eth0)外出时,更改源 IP 地址(使用 NAT 表)。

安装

大多数 Linux 发行版都预装了 iptables。如果未安装,您可以使用以下命令进行安装。

Debian/Ubuntu

sudo apt update
sudo apt install iptables

CentOS/RHEL/Fedora

sudo dnf install iptables

提示与注意事项

iptables 规则在系统重启后可能会丢失,因此了解如何永久保存规则非常重要。此外,在设置规则时,请注意顺序和默认策略。

永久保存规则

iptables 规则默认是易失的,因此需要保存它们以在重启后保持不变。不同发行版有不同的推荐方法。

  • **Debian/Ubuntu**: 安装 `sudo apt install iptables-persistent` 后,使用 `sudo netfilter-persistent save` 命令保存规则。规则将保存在 `/etc/iptables/rules.v4` 和 `/etc/iptables/rules.v6`。
  • **CentOS/RHEL/Fedora**: 安装 `sudo dnf install iptables-services` 后,使用 `sudo systemctl enable iptables && sudo systemctl start iptables` 命令启用服务,并使用 `sudo iptables-save > /etc/sysconfig/iptables` 命令保存规则。
  • **通用方法**: 使用 `sudo iptables-save > /path/to/rules.v4` 将规则保存到文件,然后编写一个脚本在启动时使用 `sudo iptables-restore < /path/to/rules.v4` 命令加载该文件。

规则顺序的重要性

iptables 规则在链中按从上到下的顺序应用。当数据包匹配特定规则时,将执行该规则的目标,并且不再检查后续规则。因此,将更具体的规则(例如阻止特定 IP)放在更通用的规则(例如允许所有 HTTP)之上非常重要。

设置默认策略时的注意事项

设置链的默认策略(例如 `iptables -P INPUT DROP`)时必须非常谨慎。在将默认策略更改为 DROP 之前,应先添加允许 SSH 连接等必需服务的规则。否则,所有到系统的网络连接都将被阻止,导致无法访问。

迁移到 nftables

在最新的 Linux 发行版中,许多发行版使用 `nftables` 作为默认防火墙框架,而不是 iptables。`nftables` 集成了 iptables 的功能并提供了改进的语法。`iptables` 命令可能在内部使用 `nftables` 的兼容层运行,因此最好检查系统的默认防火墙工具。


相同类别命令