Iptables详解是什么,iptables怎么配置?

Iptables是Linux内核内置的报文过滤防火墙,它通过操作规则表来允许或拒绝数据包进出,掌握它,你就能精准掌控服务器的每一条流量去向。这篇文章从零梳理iptables的核心概念到落地配置,不绕弯子,直接讲透。

iptables 和 firewalld 到底怎么选,才能让服务器既安全又不卡

很多刚接触Linux服务器的朋友会问,iptables 和 firewalld 有什么区别,简单说,firewalld是动态防火墙,适合频繁变更规则的桌面或云主机场景,它按区域管理流量,配置起来更像“填空”,而iptables是静态规则集,每一条规则都按顺序匹配,匹配到就停止,效率极高,资源占用极低,多数生产环境下的Linux老手,尤其跑着Nginx、MySQL的服务器,仍然偏向iptables。

第27课:iptables 详解
加载中
第27课:iptables 详解

坦白说,两者并不冲突,但一台机器上同时启用两个防火墙服务会导致规则互相覆盖,排查问题时容易让人抓狂,如果你的Linux版本是CentOS 7或以上,系统自带firewalld,也可以手动切换回iptables:

systemctl stop firewalld
systemctl disable firewalld
yum install -y iptables-services
systemctl start iptables
systemctl enable iptables

为何国内服务器运维仍偏爱 iptables 做流量入口管控

去各大IDC机房转一圈,或翻看技术社群的讨论,你会发现大量云服务器在Nginx前置层、数据库访问层仍用iptables做白名单,原因很直接:iptables规则生效是内核态直接处理,不经过用户态转发,延迟极低,脚本化部署方便,写一段shell即可在批量服务器上同步规则,而firewalld的XML配置在批量场景下反而不太直观。

iptables 规则怎么添加:从四表五链到你的第一条规则

要上手,得先理解它的骨架,iptables包含四张表和五条链,表是功能的分类,链是报文流经的关卡,四张表分别是:

  • filter表:核心的过滤功能,允许或拒绝数据包,最常用。
  • nat表:网络地址转换,端口映射、共享上网靠它。
  • mangle表:修改数据包的服务类型、TTL等特殊字段。
  • raw表:用于配置NOTRACK,跳过连接跟踪。

五条链则对应数据包在内核中的五个挂载点:

  • PREROUTING:报文进入路由决策之前。
  • INPUT:报文发给本机进程。
  • FORWARD:报文需本机转发。
  • OUTPUT:本机进程发出报文。
  • POSTROUTING:报文即将离开网卡前。

第一道指令:查看当前规则与清空规则

执行iptables -L -n --line-numbers,即可看到服务器当前的规则列表,注意-n表示不做反向域名解析,速度更快也更清晰,若机器刚买回来,规则大概率是空的,此时不要急着加规则,先执行

Iptables详解是什么,iptables怎么配置?

iptables -F清空默认规则,避免旧配置干扰后续调试。

第二道指令:放行SSH,避免自己把自己锁在门外

给服务器配防火墙最怕的是规则顺序写错,把自己拒之门外,很多人在配置iptables的实战演练中都会踩这个坑,务必在添加任何拒绝规则之前,先将SSH端口放行,假设你修改过SSH端口,假设是22026,那应该执行:

iptables -A INPUT -p tcp --dport 22026 -j ACCEPT

这行命令的意思:追加一条规则到INPUT链,匹配TCP协议且目标端口为22026,动作为接受,这里有一个通用建议,端口号在规则里一定要用22端口还是22026,取决于你实际改过的配置,别照抄网络教程不带脑子。

第三道指令:配置默认策略

默认策略是整个规则的兜底,如果规则全部没匹配上,走默认策略,安全角度建议将INPUT链默认策略设为DROP,但在设置前确保已经有了放行规则:

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

设定之后你会发现,这台服务器只有你显式放行的流量能进来,这就是iptables使用教程中最核心的“白名单思维”。

Linux iptables 配置实战:端口转发与NAT场景

NAT表与mangle表在真实业务中高频应用,尤其在公网IP不足或内网服务隔离的场景,下面是两个业内最常见的配置场景。

端口映射,把内网MySQL服务暴露给指定公网IP

假设内网有一台数据库服务器,IP为192.168.1.100,运行在3306端口,防火墙服务器有两块网卡,公网网卡eth0,内网网卡eth1,操作为:

iptables -t nat -A PREROUTING -d 公网IP -p tcp --dport 3306 -j DNAT --to-destination 192.168.1.100:3306
iptables -t nat -A POSTROUTING -s 192.168.1.100 -p tcp --sport 3306 -j SNAT --to-source 公网IP
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 3306 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.100 --sport 3306 -j ACCEPT

需要注意,做完DNAT之后还要确保FORWARD链没有拦截,多数运维新手在这里漏掉FORWARD规则,导致内网服务通了但数据包没被转发,这也是nginx 做反向代理时 iptables 规则怎么配这类问题里经常被提及的坑,反向代理机器本身也要放行相应端口。

共享上网,让内网机器统一走一台服务器出口

办公室或家里有多台内网设备,不想每台都配公网IP,直接用一台Linux盒子做网关:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

这样内网所有机器把网关指向这台服务器即可自然上网,MASQUERADE适合动态获取IP的出口线路,若是固定IP,建议用SNAT指定具体源IP,性能更好,整体而言,

Iptables详解是什么,iptables怎么配置?

iptables端口转发机制适用于链路层以上的流量控制,但内核生产版本更推荐直接使用nftables替代旧命令集,不过这是后话。

iptables 规则保存:重启不丢的三步操作

新手最常见的疑惑:明明配置好了规则,重启服务器或者重启iptables服务后,规则全没了,因为iptables规则的默认状态是内存态,重启即失。

正确的保存姿势:

  1. CentOS 6或较早版本:执行/etc/init.d/iptables save
  2. CentOS 7及以上版本:先安装iptables-services,执行service iptables save,规则会写入/etc/sysconfig/iptables。
  3. 通用备份方式:执行iptables-save > /root/iptables.rules,恢复时用iptables-restore < /root/iptables.rules。

生产环境建议把规则文件纳入版本管理,修改前先备份,每次变更后执行iptables-save,做到重启不慌、回滚有据。

iptables 常见疑难排查与错误处理

规则已放行,流量仍无法到达服务

按顺序排查三个层面,先用iptables -L -v -n查看规则命中计数,若计数为0,说明数据包根本没走到这条链,此时需要检查数据包是否被前面的DROP规则拦截,或者流量压根没到达本机。别忘检查系统里是否还有firewalld在运行,两个防火墙服务并存会导致规则互相覆盖又不报错,是排障中最隐蔽的源头。

配置了端口转发,内网访问不正常

多数情况下是回程流量没有做SNAT,DNAT只改了目标地址,如果出口报文源地址仍是内网机器的私有IP,对端响应时无法正确回包,解决办法是追加POSTROUTING链的SNAT规则。

iptables服务启动失败且无报错

检查内核模块是否加载:lsmod | grep ip_tables,若输出为空,执行modprobe ip_tables,云服务器厂商的控制台安全组也要确认已放行对应端口,有时规则没错,但云平台安全组把流量挡在了外面。

iptables 删除规则与规则优化技巧

删除规则有两种方式。方法一:按规则编号删除,先iptables -L -n --line-numbers查看规则序号,再iptables -D INPUT 3,含义为删除INPUT链第3条规则。方法二:按规则内容精确匹配删除,例如iptables -D INPUT -p tcp --dport 22 -j ACCEPT,后者适合脚本中动态删除某条已知规则的场景。

优化方面,行业内共识是把高命中率的规则放在链的前面,每条规则被匹配就会产生CPU开销,链越长,线性匹配耗时越大,一个常见做法是:将同类别规则聚合,多个端口可合并为连续端口范围,减少规则条目数。

Iptables详解是什么,iptables怎么配置?

iptables -A INPUT -p tcp -m multiport --dports 80,443,8080 -j ACCEPT

若规则条目动辄上百条,且需要频繁变更,建议考虑使用ipset配合iptables,ipset能大幅提升集合匹配性能,尤其适合封禁大量IP的场景,值得注意的是,即使遇到复杂场景也切莫偏离基础逻辑,iptables命令本身依然是所有上层工具的最终执行者。

iptables 和 nftables 演变趋势,2026年还值得学吗

Linux内核早已用nftables逐步替代iptables框架,但iptables命令在不少存量服务器上仍长期存在,从结局看,iptables被nftables完全取代是趋势,但存量规模庞大,2026年主流发行版依然默认兼容iptables命令集,学习iptables的价值并不局限于命令本身,它让你理解报文在内核中经过的路径和挂载点,这个底层概念在理解nftables、ebtables乃至云原生网络插件时依旧适用,可以按时间预算分配,先熟练掌握iptables再过渡到nftables,而非跳过基础。

常见问题解答:iptables 详解周边疑问

修改iptables规则后,连接中的TCP会话会立即断开吗?

不会,iptables是基于连接跟踪状态的机制,修改规则仅影响新建立连接的报文匹配,已经处于ESTABLISHED状态的连接,只要没有显式删除对应的状态放行规则,通常不会被立刻切断,但若执行iptables -F清空所有规则,则状态跟踪表也会丢失上下文,导致会话中断,需要应用层重连。

docker容器端口映射与iptables规则冲突,网站为何无法访问?

Docker在启动时会动态写入iptables的DOCKER链,许多软件在安装防火墙规则时习惯添加-I INPUT将规则插入最前,从而拦截了Docker的FORWARD流量,排查方法是执行iptables -L -n查看FORWARD链和DOCKER链的位置关系,解决办法是通过iptables -A追加规则而非强制插入最前,或为Docker流量单独放行。

规则都是正确的,为何本机访问公网IP的映射端口不通,其他机器却正常?

这通常被称为“NAT回环”问题,本机发出的数据包若经过PREROUTING的DNAT规则,源地址是本机,出口为lo接口,实际并不经过eth0,导致回包时无法正确匹配源地址,业内专家指出,解决思路有两种:一是添加内部访问的独立DNAT规则指向内网IP;二是在POSTROUTING链为本机地址追加一条SNAT规则。

最终的判断标准很简单,将filter链的默认策略设为DROP后,你需要的服务端口全部显式放行,规则顺序清晰可读,这就是一份合格的iptables配置,从内核报文路径到实战命令,养成配置、验证、保存的闭环习惯,防火墙不再是绊脚石。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/588637.html

赞 (0)
为什么我的电脑玩CF会连接服务器失败,怎么解决
上一篇 2026年8月21日 06:17
如何选择iaas云服务中的存储云服务?,选哪个好?
下一篇 2026年8月21日 06:24

相关推荐

  • iis中主机头名用途_主机未安装IIS问题

    IIS主机头名(Host Header)允许服务器根据域名将请求分发到不同网站,是节约IP地址实现多站共享的关键;若主机未安装IIS,则需先通过服务器管理器或PowerShell安装IIS角色,才能启用主机头功能,iis主机头名用途全面解析主机头名是什么,它如何工作主机头名是HTTP请求中的Host字段,IIS……

    2026年8月5日
    600
  • id_token的基本验证和管理应该如何操作?,有哪些方法?

    id_token验证是OIDC流程中确认用户身份的核心环节,管理得当能避免大部分安全漏洞,它不像access_token那样用于调用接口,而是直接告诉你的应用“用户是谁”,很多开发者在集成单点登录时,要么跳过验证直接信任,要么验证逻辑写得太松,导致身份伪造风险,这篇文章把验证步骤、常见失败原因、令牌管理策略一次……

    2026年8月11日
    1000
  • 大模型如何领域适应?大模型领域适应Domain Adaptation方法

    大模型的领域适应(Domain Adaptation)本质是通过微调或提示工程,将通用大模型转化为特定行业专家,以解决通用模型在垂直场景下专业性不足、幻觉率高及数据隐私泄露的核心痛点,在2026年的今天,企业级AI应用早已跨越了“能用”的阶段,进入了“好用”和“专用”的深水区,通用大模型虽然博学,但在面对医疗诊……

    2026年6月21日
    2100
  • 福建物联网市场发展现状怎么样,未来趋势有哪些?

    福建物联网市场已形成以福州、厦门为双核,覆盖工业互联、智慧城市、车联网等领域的产业生态,在政策扶持和龙头企业带动下,正成为华东地区物联网应用落地的典型样本,福建物联网市场现状近年来,福建物联网市场持续升温,尤其在福州和厦门两大城市,产业链条日趋完整,据行业数据显示,全省物联网企业数量逐年攀升,相当一部分集中在福……

    2026年7月21日
    1400
  • 大模型RLHF训练成本有多高?大模型训练成本具体包含哪些

    大模型RLHF训练成本极高,单轮迭代通常需数百万至数千万人民币,且随模型规模呈指数级增长,主要消耗在高质量人类标注数据获取、算力集群租赁及算法优化迭代上,很多人对“人工智能”的理解还停留在代码编写阶段,让模型从“能说话”变成“懂人性”,RLHF(基于人类反馈的强化学习)才是那道最昂贵的门槛,这不仅仅是技术问题……

    2026年6月17日
    5300
  • IoT能创建云数据库吗,怎么创建IoTDB权限角色?

    在IoTDB中,通过CREATE ROLE命令可以创建权限角色,并支持在云数据库实例中绑定用户实现精细化访问控制,很多运维人员初次接触IoTDB时,都会问:iot能创建云数据库吗?IoTDB既可以部署在本地,也能灵活迁移到云平台,并创建数据库(存储组),而权限角色管理是保障数据安全的核心功能,下面从模型到实操……

    2026年7月31日
    400
  • IDEA的JDBCMySQL数据库怎么配置?,连接不上怎么办

    IDEA连接MySQL数据库,核心就三步:导入驱动JAR包、配置JDBC URL、写代码验证连接,许多人卡在驱动版本不匹配或时区参数遗漏上,本文按实战顺序拆解全部细节,并附IDEA自带数据库工具的替代方案,IDEA连接MySQL数据库失败的常见原因先聊最头疼的部分,IDEA里连不上MySQL,八成问题出在驱动版……

    AI资讯 2026年8月9日
    300
  • 世界10大AI大模型哪个最强?2026最新AI大模型排名

    截至2026年,全球AI大模型格局已形成以OpenAI、Google、Anthropic为第一梯队,中国百度、阿里、腾讯、智谱等厂商紧随其后的多极化竞争态势,选择模型需根据具体业务场景、数据隐私要求及预算成本进行精准匹配,人工智能技术在过去几年经历了从“可用”到“好用”的跨越,2026年的今天,大模型不再仅仅是……

    2026年6月15日
    85000
  • 发送验证码服务器发送失败的原因及解决方法有哪些,怎么解决?

    发送验证码服务器是企业验证用户身份的核心基础设施,选型核心在于平衡到达率、并发能力和成本,没有绝对最优的方案,只有匹配业务场景的匹配,很多项目上线后才发现验证码发不出去,用户流失率飙升,根源往往出在发送验证码服务器没选对,这个环节看似底层,实则直接影响账号安全、注册转化和品牌信任,今天咱们就拆开这个黑盒,聊聊怎……

    2026年7月23日
    1500
  • 新建IIS站点的步骤是什么?,注意事项有哪些?

    新建IIS站点是Windows服务器部署网站的基础操作,通过IIS管理器填写站点名称、物理路径和绑定信息即可快速完成,整个过程仅需几分钟,新建IIS站点步骤:从准备到完成很多用户第一次接触IIS时,会直接搜索新建IIS站点步骤,然后发现流程比想象中简单,但前提是系统环境已经准备好,下面按顺序拆解整个过程,准备I……

    2026年8月13日
    200

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注