尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

iptables 五表五链超全详解(优先级、数据包流转、命令语法、实战规则)

iptables 五表五链超全详解(优先级、数据包流转、命令语法、实战规则) 引言iptables 是 Linux 内核级防火墙、流量控制、地址转发的核心工具属于内核 netfilter 子系统。所有数据包拦截、放行、端口映射、内网上网、流量修改、安全管控全部依靠 iptables 实现。在企业级 Linux 运维中除了网络层面的安全管控系统层面的基础服务同样至关重要例如确保所有服务器时间一致的时间同步服务chrony它为日志分析、故障排查和分布式系统协调提供了准确的时间基准。本文将从时间同步基础讲起完整梳理五表、五链、优先级、数据包完整流转、命令语法、匹配条件、处理动作是运维面试、防火墙实战、集群网络架构的必考核心。一、时间同步chrony基础在企业环境中确保所有主机的时间一致至关重要这关系到日志分析、故障排查、分布式系统协调等众多场景的准确性。chrony是 Linux 下最常用的时间同步软件之一相比传统的 NTP它更适用于动态网络环境能更快地收敛并保持高精度。核心定位与软件定位确保企业环境内所有主机的时间高度一致。软件chrony(包含chronyd服务端/客户端 和chronyc命令行工具)。常用命令与操作1. 查看时间源与客户端状态# 查看当前使用的所有时间源及其状态类似于 ntpq -pchronyc sources-v# 查看已连接到本 chronyd 服务的客户端列表chronyc clients2. 系统时间与 chrony 服务管理# 查看系统当前日期和时间date# 查看详细的系统时间和时区设置RHEL/CentOS 7 Ubuntu 16.04timedatectl# 查看 chronyd 服务状态systemctl status chronyd# 设置系统时区例如设置为上海时间timedatectl set-timezone Asia/Shanghai3. 系统资源限制ulimit虽然ulimit命令主要用于设置用户级的系统资源限制如打开文件数、进程数等但在高并发的时间服务器部署场景下也可能需要调整。# 查看当前用户的所有资源限制ulimit-a# 临时设置最大打开文件数仅当前会话有效ulimit-n65536注意ulimit的更改通常是临时的。永久生效需要修改/etc/security/limits.conf配置文件并重启会话。快速配置示例安装 chrony# RHEL/CentOSyuminstall-ychrony# Ubuntu/Debianapt-getinstall-ychrony配置时间源编辑/etc/chrony.conf添加或修改server行指向可靠的时间服务器如阿里云 NTP 服务器。server ntp.aliyun.com iburst server time.cloudflare.com iburst启动并设置开机自启systemctl start chronyd systemctlenablechronyd手动同步并验证# 手动触发一次时间同步chronyc makestep# 查看同步状态chronyc tracking小结在企业运维中chrony确保系统时间的基石稳固而iptables则守护网络边界安全。两者都是构建稳定、可观测的 Linux 基础设施的关键组件。二、iptables 核心架构五表优先级体系iptables 内置五张功能表其优先级从高到低固定为raw mangle nat filter security。记忆口诀raw去追踪mangle改报文nat做转换filter做拦截security控selinux。1. raw 表最高优先级核心功能关闭内核连接追踪conntrack、跳过状态检测、释放内核性能。适用场景大流量、高并发服务器避免内核追踪连接造成性能瓶颈。内置链PREROUTING、OUTPUT。背诵关键词去追踪、免状态检测、高性能优化。2. mangle 表报文修改表核心功能修改数据包头部信息如 TTL、TOS、MARK 标记用于流量调度、策略路由。适用场景QoS、流量整形、基于标记的路由。内置链PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING五链全通。背诵关键词改报文、打标记、流量调度。3. nat 表网络地址转换表核心功能网络地址转换实现内网上网、端口映射、服务暴露。核心特性只对新连接的首包生效后续报文自动复用规则无需重复匹配。三大 NAT 模式DNAT目的地址转换用于外网端口映射、内网服务暴露作用于PREROUTING链。SNAT源地址转换固定公网IP内网统一出口上网作用于POSTROUTING链。MASQUERADE动态 SNAT适配拨号动态IP、动态公网出口上网作用于POSTROUTING链。内置链PREROUTING、INPUT、OUTPUT、POSTROUTING。背诵关键词端口映射、内网上网、地址转换、仅首包生效。4. filter 表默认表 / 防火墙核心核心功能数据包过滤、放行、拒绝、拦截是最常用的防火墙规则表。内置链INPUT、FORWARD、OUTPUT。背诵关键词防火墙拦截、端口放行、IP拒绝、入站/出站/转发控制。5. security 表安全控制表核心功能配置 SELinux 安全上下文、强制访问控制。内置链INPUT、FORWARD、OUTPUT。说明生产环境极少使用多用于高安全等级服务器。背诵关键词SELinux、安全标签、强制访问控制。三、iptables 五链数据包五大关卡五链是数据包流转的五个关键时机口诀前预入本转发跨机出包本机后置离卡。PREROUTING 链预处理链时机数据包刚进入网卡路由判断之前。可用表raw、mangle、nat(DNAT)。场景端口映射、修改入站报文、关闭连接追踪。INPUT 链入站链时机路由判定目标为本机交付本地进程前。可用表mangle、filter、security。场景限制本机端口访问、拦截SSH/HTTP非法请求。FORWARD 链转发链时机路由判定数据包跨主机转发本机不接收、只转发。可用表mangle、filter、security。场景内网跨网段通信、内网访问外网、转发流量拦截。OUTPUT 链出站链时机本机进程主动发包路由判断之前。可用表raw、mangle、nat、filter、security。场景限制本机对外访问、本机出站流量控制。POSTROUTING 链后处理链时机路由完成数据包即将离开网卡。可用表mangle、nat(SNAT/MASQUERADE)。场景内网统一公网出口、修改出站TTL、源地址转换。四、数据包完整流转路径必考1. 外部数据包访问本机入站流程网卡 → PREROUTING(raw/mangle/nat) → 路由判断 → INPUT(mangle/filter/security) → 本地进程2. 外部数据包跨机转发转发流程网卡 → PREROUTING(raw/mangle/nat) → 路由判断 → FORWARD(mangle/filter/security) → POSTROUTING(mangle/nat) → 出网卡3. 本机程序向外发包出站流程本地程序 → OUTPUT(raw/mangle/nat/filter/security) → 路由判断 → POSTROUTING(mangle/nat) → 出网卡五、iptables 完整命令语法结构iptables [-t 表名] 操作命令 [链名] [匹配条件] [-j 处理动作]1.-t 表名可选不指定默认使用filter表。可选值raw、mangle、nat、filter、security。2. 核心操作命令面试必背参数全称作用-Aappend在链的末尾追加规则最常用-Iinsert在链的指定位置或顶部插入规则优先匹配-Ddelete删除链中指定的单条规则-Rreplace替换链中指定行号的规则-Llist查看规则列表-v显示详情-n不解析-Fflush清空链中所有规则-Xdelete-chain删除用户自定义的空链-Nnew-chain创建用户自定义链-Ppolicy设置链的默认策略ACCEPT/DROP-Zzero清空链中所有规则的流量计数器3. 匹配条件大全通用匹配全表通用-s源 IP 地址或网段如-s 192.168.1.0/24-d目的 IP 地址或网段-i数据包进入的网卡如-i eth0-o数据包离开的网卡-p协议类型tcp、udp、icmp、all协议专属匹配TCP/UDP--sport源端口如--sport 8080--dport目标端口如--dport 80--tcp-flags匹配 TCP 标记位如SYN,ACK,FIN,RST扩展模块匹配-m-m state连接状态匹配NEW,ESTABLISHED,RELATED,INVALID-m multiport多端口批量匹配如--dports 22,80,443-m iprangeIP 区间范围匹配如--src-range 192.168.1.1-192.168.1.100-m limit流量限流、防攻击如--limit 10/second-m mac匹配源 MAC 地址-m string匹配数据包中的字符串-m time按时间范围匹配隐式扩展无需-m-p tcp自动加载 TCP 扩展可使用--sport,--dport,--tcp-flags。-p udp自动加载 UDP 扩展可使用--sport,--dport。-p icmp自动加载 ICMP 扩展可使用--icmp-type。4.-j处理动作 (Target)通用基础动作ACCEPT放行数据包。DROP静默丢弃不返回任何响应。REJECT拒绝并返回报错提示如icmp-port-unreachable。RETURN退出当前自定义链返回上层链继续匹配。NAT 专用动作SNAT固定源地址转换需指定--to-source。MASQUERADE动态源地址转换用于拨号等动态IP出口。DNAT目的端口映射、内网服务暴露需指定--to-destination。REDIRECT本机端口转发。mangle 专用动作MARK给数据包打内核标记用于后续的流量调度、路由策略。六、实战规则示例示例1基础防火墙规则filter表# 1. 设置默认策略谨慎操作建议在测试环境进行iptables-PINPUT DROP iptables-PFORWARD DROP iptables-POUTPUT ACCEPT# 2. 允许本地回环通信iptables-AINPUT-ilo-jACCEPT iptables-AOUTPUT-olo-jACCEPT# 3. 允许已建立的连接和相关的连接iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT# 4. 开放SSH端口 (22)iptables-AINPUT-ptcp--dport22-jACCEPT# 5. 开放Web服务端口 (80, 443)iptables-AINPUT-ptcp-mmultiport--dports80,443-jACCEPT# 6. 允许ICMP (ping)iptables-AINPUT-picmp --icmp-type echo-request-jACCEPT示例2NAT 与端口转发nat表# 1. 开启内核IP转发echo1/proc/sys/net/ipv4/ip_forward# 2. SNAT内网(192.168.1.0/24)通过本机公网IP(10.0.0.1)上网iptables-tnat-APOSTROUTING-s192.168.1.0/24-oeth0-jSNAT --to-source10.0.0.1# 或使用动态IP的MASQUERADE# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE# 3. DNAT将公网IP的8080端口映射到内网服务器的80端口iptables-tnat-APREROUTING-d10.0.0.1-ptcp--dport8080-jDNAT --to-destination192.168.1.100:80# 4. 允许转发的流量通过filter表的FORWARD链iptables-AFORWARD-mstate--stateESTABLISHED,RELATED-jACCEPT iptables-AFORWARD-s192.168.1.0/24-jACCEPT示例3高级匹配与限流# 1. 限制同一IP对SSH端口的连接频率防暴力破解iptables-AINPUT-ptcp--dport22-mstate--stateNEW-mrecent--set--nameSSH iptables-AINPUT-ptcp--dport22-mstate--stateNEW-mrecent--update--seconds60--hitcount3--nameSSH-jDROP# 2. 限制ICMP洪水攻击iptables-AINPUT-picmp --icmp-type echo-request-mlimit--limit1/s --limit-burst10-jACCEPT iptables-AINPUT-picmp --icmp-type echo-request-jDROP# 3. 封禁特定IPiptables-AINPUT-s123.123.123.123-jDROP六、nftables 简介下一代替代nftables 是 iptables 的下一代替代品具有更统一的语法和更好的性能。核心概念对应表 (table)同 iptables但属于特定地址族ip, ip6, inet, arp, bridge。链 (chain)同 iptables有 base chain 和 regular chain。规则 (rule)由表达式 (expressions)和动作 (verdicts)组成。基本命令对比# 列出所有规则iptables-L-n-vnft list ruleset# 清空所有规则iptables-Fnft flush ruleset# 添加一条放行SSH的规则iptables-AINPUT-ptcp--dport22-jACCEPT nftaddrule inet filter input tcp dport22acceptnftables 规则结构示例# 创建一个表nftaddtable inet my_table# 创建一个链nftaddchain inet my_table my_input_chain{typefilter hook input priority0\;}# 添加规则nftaddrule inet my_table my_input_chain tcp dport22accept nftaddrule inet my_table my_input_chainipsaddr192.168.1.0/24 drop七、总结面试万能话术iptables 基于内核 netfilter 实现分为五表五链。优先级raw mangle nat filter securityraw 负责关闭连接追踪优化性能mangle 修改报文nat 实现地址转发与端口映射filter 负责防火墙包过滤security 管控 SELinux。五链对应数据包入站、转发、出站全流程配合丰富的匹配条件与跳转动作实现 Linux 防火墙、NAT 转发、流量管控、安全防护全能力。新一代的 nftables 提供了更简洁统一的语法是未来的发展方向。掌握 iptables就掌握了 Linux 网络安全的命脉。同时在企业运维中时间同步chrony作为系统稳定性的基石与iptables共同构成了 Linux 基础设施稳定、安全、可观测的两大支柱一个守护网络边界一个确保时间基准。
返回列表