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://test.idctop.com/article/588637.html

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

相关推荐

  • iis 浏览网站_IIS服务修改已绑定的网站域名

    修改IIS中已绑定的网站域名,核心操作是打开IIS管理器,找到对应网站,右键编辑绑定,在对话框中修改主机名或添加新域名,保存后重启网站即可生效,但实际场景中,很多人遇到域名变更后网站无法浏览、SSL证书不匹配、或绑定多个域名时配置混乱,本文从操作步骤、问题排查、多域名绑定技巧三个维度拆解,并附上常见问题解答,帮……

    2026年8月13日
    300
  • iptables 域名解析_nftables、iptables与IPVS如何选择

    iptables 原生不支持域名实时解析,使用域名规则会带来性能开销和缓存问题;nftables 通过集与映射支持动态域名,IPVS 则专注于四层负载均衡,三者各有局限,选择时需根据域名解析频率、规则数量和性能要求来定,多数情况下 nftables 是更现代的替代方案,iptables 域名解析效率低,如何优化……

    2026年8月21日
    300
  • IT垂直网站的容器垂直弹性引擎如何实现?,怎么配置

    在容器编排领域,垂直弹性引擎是解决资源利用率与性能瓶颈的关键工具,它通过自动调整Pod的CPU和内存规格,实现应用在负载变化时的无缝扩缩,尤其适合有状态应用和微服务架构中的资源优化,容器垂直弹性引擎是什么?核心概念与工作原理容器垂直弹性引擎,业内常称作垂直Pod自动缩放(VPA),它的核心逻辑是动态修改Pod的……

    2026年8月6日
    300
  • 房产网站开发公司哪家专业靠谱?,价格合理吗?

    选择房产网站开发公司,核心要看其技术栈、行业案例和售后服务,而非单纯比价格,房产网站开发公司哪家好——三个核心判断维度你判断一家开发公司是否靠谱,不能只看官网的炫酷页面,真正的价值藏在技术底层、实战经验和长期服务里,下面这三个维度,是行业内普遍认可的筛选标准,技术实力与开发语言技术选型直接决定网站未来的扩展性和……

    2026年7月29日
    500
  • 服务器和虚拟服务器区别是什么,云服务器和物理服务器的区别

    服务器是拥有独立硬件资源的物理实体,而虚拟服务器则是通过虚拟化技术在物理服务器上切割出的逻辑单元,两者在成本、灵活性和性能隔离性上存在本质区别,选择哪种方案取决于你的业务规模、预算以及对资源独占性的具体需求,想象一下,服务器就像是一栋独栋别墅,你拥有整块土地、整栋房子以及里面的所有设施,想怎么装修就怎么装修,但……

    2026年7月3日
    19900
  • ICP备案记录怎么管理?,具体流程有哪些?

    ICP备案信息管理并非一次性工作,而是需要持续跟踪和维护的周期性任务,核心在于确保备案主体信息、域名、接入商等数据的实时准确,避免因信息不实或过期导致备案被注销,ICP备案信息管理为什么重要很多网站运营者认为ICP备案提交通过后就万事大吉,但行业共识表明,备案信息的动态管理才是避免网站被关停的关键,工信部对备案……

    2026年8月21日
    500
  • 什么是服务编码,服务编码怎么查询在哪里查看?

    什么是服务编码服务编码(Service Code) 是一种将特定的服务项目、功能模块或业务流程通过唯一且标准化的代码(通常由数字、字母或两者的组合构成)进行标识的系统,服务编码就像是给每一种服务贴上的“身份证号”,目的是为了在计算机系统、管理流程或行业标准中,用一个简短的代码代替冗长的文字描述,从而实现高效的识……

    2026年7月14日
    1900
  • 分布式数据库缓存原理是什么?分布式数据库缓存解决方案

    分布式数据库缓存的核心价值在于通过多级存储架构显著降低延迟并提升吞吐量,其本质是解决高并发场景下数据库IO瓶颈的关键技术,在构建现代互联网应用时,单体数据库往往难以应对海量用户同时发起的请求,当业务流量激增,直接查询后端关系型数据库会导致响应时间急剧上升,甚至引发服务雪崩,引入分布式缓存并非简单的技术堆砌,而是……

    2026年7月9日
    10400
  • 发短信的通道到底该怎么选,短信通道哪家平台便宜又好用?

    发短信的通道是短信发送的核心环节,选择合适的通道能显著提升送达效率和用户体验,通常分为运营商直接通道和第三方短信平台通道,什么是发短信的通道?想象一下,你发送一条短信时,它就像一封信需要通过邮局投递,发短信的通道就是这条“邮路”,负责将短信从发送方传递到接收方手机,业内专家指出,通道的质量直接决定短信能否准时……

    2026年7月17日
    500
  • 鱼C论坛热帖分析到底讲了啥?鱼C论坛热帖分析

    鱼C论坛热帖之所以能持续霸榜,核心在于其构建了从零基础入门到高级架构实战的完整闭环,通过高频互动的问答社区模式,精准解决了Python学习者“找不到好教程”和“遇到Bug无人解”的两大痛点,在2026年的编程学习生态中,资源虽然泛滥,但高质量、成体系且具备即时反馈的学习社区依然稀缺,鱼C论坛(小甲鱼社区)作为老……

    2026年7月12日
    6500

发表回复

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