0

0

如何配置Linux防火墙规则 iptables基础语法指南

P粉602998670

P粉602998670

发布时间:2025-08-17 13:20:01

|

563人浏览过

|

来源于php中文网

原创

iptables 是 linux 中用于配置防火墙规则的经典工具,其核心结构为“表→链→规则”,常用表包括 filter、nat、mangle 和 raw,每个表包含 input、output、forward 等链以处理不同路径的数据包;基本语法为 iptables [-t table] command [chain] [匹配条件] [-j 动作],其中常用命令有 -a、-i、-l、-f、-p,匹配条件包括 -p、-s、-d、--dport 等,动作为 accept、drop、reject、log;典型配置包括设置默认策略、允许回环接口、放行已建立连接、开放 ssh/http/https 端口、限制特定 ip 访问、配置 dnat 和 masquerade 实现端口转发与共享上网;规则可通过 service iptables save 或 iptables-save 命令保存,使用 iptables-restore 恢复;需注意规则顺序匹配特性,避免误锁,建议结合 conntrack 状态模块和 ipset 提升安全性与性能,最终通过理解表链结构与实际应用掌握 iptables 的网络控制能力。

如何配置Linux防火墙规则 iptables基础语法指南

配置 Linux 防火墙规则时,

iptables
是一个经典且功能强大的工具。虽然现代系统逐渐转向
nftables
,但
iptables
仍在大量环境中使用。掌握其基础语法,有助于管理网络流量、提升系统安全性。以下是
iptables
的基础语法和常用配置方法。


一、iptables 的基本结构

iptables
命令基于“表(tables)→链(chains)→规则(rules)”的结构:

  • 表(tables):定义防火墙的功能类别,常见有:

    • filter
      :默认表,用于包过滤(最常用)
    • nat
      :网络地址转换,用于修改源/目标IP或端口
    • mangle
      :修改数据包头部信息(较少用)
    • raw
      :用于配置连接追踪的例外
  • 链(chains):每个表包含若干预定义的链,用于处理特定时机的数据包:

    • INPUT
      :进入本机的数据包
    • OUTPUT
      :从本机发出的数据包
    • FORWARD
      :经过本机转发的数据包
    • PREROUTING
      :数据包刚到达,路由前(常用于 nat)
    • POSTROUTING
      :数据包即将发出,路由后(常用于 nat)

二、基本语法格式

iptables [-t table] COMMAND [chain] [匹配条件] [-j 动作]

常见命令(COMMAND):

  • -A
    :追加规则到链末尾
  • -I
    :插入规则(可指定位置)
  • -D
    :删除规则
  • -L
    :列出规则
  • -F
    :清空规则
  • -P
    :设置链的默认策略

常见匹配条件:

  • -P
    :指定协议(如 tcp、udp、icmp)
  • -s
    :源IP地址
  • -D
    :目标IP地址
  • --sport
    :源端口
  • --dport
    :目标端口
  • -I
    :输入接口(如 eth0)
  • -o
    :输出接口

常见动作(-j target):

  • ACCEPT
    :允许通过
  • DROP
    :丢弃,不回复
  • REJECT
    :拒绝,并返回错误信息
  • LOG
    :记录日志(通常与其他规则配合)

三、常用配置示例

1. 查看当前规则

iptables -L -n -v
  • -L
    :列出规则
  • -n
    :以数字形式显示IP和端口
  • -v
    :显示详细信息

2. 设置默认策略

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

建议先设置 OUTPUT 为 ACCEPT,避免断网。

3. 允许本地回环通信

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

4. 允许已建立的连接通过

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

conntrack
模块用于跟踪连接状态,这是允许响应包返回的关键。

5. 开放常用服务端口

# 允许SSH(端口22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许HTTP(80)和HTTPS(443)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

6. 限制来源IP访问

# 只允许特定IP访问SSH
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

注意规则顺序:先允许,再拒绝。

星流
星流

LiblibAI推出的一站式AI图像创作平台

下载

7. 配置端口转发(NAT)

# 启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward

# 将外部访问本机8080端口转发到内网192.168.1.10:80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80

# 源地址转换,让内网主机能通过本机上网
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

四、保存和恢复规则

不同发行版保存方式不同:

  • CentOS/RHEL 6 或使用 iptables-services

    service iptables save
  • Ubuntu/Debian

    iptables-save > /etc/iptables/rules.v4

    可配合

    iptables-restore < /etc/iptables/rules.v4
    恢复。

  • 手动保存

    iptables-save > ~/firewall.rules
    iptables-restore < ~/firewall.rules

五、注意事项

  • 规则按顺序匹配,一旦匹配就执行动作,后续规则不再检查。
  • 使用
    -I INPUT 1
    可在第一条插入规则,避免把自己锁在外面。
  • 修改远程服务器防火墙时,建议先测试规则,或设置定时清空规则的备用命令(如
    sleep 60; iptables -F
    )。
  • 复杂环境建议配合
    ipset
    提高效率(如封禁大量IP)。

基本上就这些。掌握

iptables
的核心在于理解“表-链-规则”的逻辑,以及状态追踪(conntrack)和NAT的应用。虽然语法略显繁琐,但足够灵活,适合深入控制网络流量。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1047

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

86

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

455

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

11

2026.01.19

点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

183

2023.11.24

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

375

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

412

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

2003

2024.03.12

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

9

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号