目录
"-D":指定要从某个规则链中删除一条规则,可以输入完整的规则或者指定规则编号
前言
iptables是与Linux内核集成的IP信息包过滤系统。它与netfilter组成可以实现封包过滤、封包重定向和网络地址转换(NAT)等功能。
如果Linux系统连接到因特网或LAN、服务器或连接LAN和因特网的代理服务器,则该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。
netfilter/iptables IP信息包过滤系统是一种功能强大的工具,可以用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在Linux内核中。在信息包过滤表中,规则被分组放到我们所谓的链(chain)中。
虽然netfilter/iptables IP信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter和iptables组成。netfilter组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。
其实iptables只是Linux防火墙的管理工具而已,而真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。
iptables传输数据包的过程
-
当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转发出去。
-
如果数据包就是进入本机的,它就会沿着向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本地上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
-
如果数据包是要转发出去的,且内核允许转发,数据包就会移动,经过FORWARD链,然后到达POSTROUTING链输出。
iptables的启用方法参考
-
source build/envsetup.sh和lunch选择目标方案。
-
进入buildroot-2019.11目录。在buildroot-2019.11目录下,输入命令:"make 方案名称_deconfig"选择目标编译方案,例如:
bash
a. $ cd buildroot-2019.11
b. buildroot-2019.11$ make list-defconfigs | grep "xxx"
xxx_1_defconfig - Build for xxx_1
xxx_2_defconfig - Build for xxx_2
xxx_3_defconfig - Build for xxx_3
xxx_4_defconfig - Build for xxx_4
-
在buildroot-2019.11目录下,输入命令:"make menuconfig" 进入图形化配置界面。
-
在图形化配置界面下,使用"/"键搜索"BR2_PACKAGE_IPTABLES"后选1,然后选中"iptables"。
-
退出图形化配置界面并save后,将buildroot的menuconfig的配置修改保存到目标编译方案配置文件,如下:
bash
buildroot-2019.11$ make savedefconfig
- 编译buildroot,如下:
bash
buildroot-2019.11$ make
- 编译buildroot完成后,查看编译后生成的rootfs的情况,如下:
bash
buildroot-2019.11$ cd output/images && ls
rootfs.tar sysroot.tar
-
确认正常生成rootfs后,把rootfs.tar和sysroot.tar按照具体方案进行重命名并拷贝到对应的目录下。
-
在SDK根目录下输入命令:"make kernel-menuconfig"进行Linux内核配置netfilter/iptables组件,如下:
bash
CONFIG_NETFILTER=y (选中Network packet filtering framework (Netfilter),即选中网络数据包过滤框架。)
CONFIG_NF_CONNTRACK=y (选中Netfilter connection tracking support,即选中Netfilter连接跟踪支持。)
CONFIG_NETFILTER_XT_MATCH_IPRANGE=y (选中Netfilter Xtables support (required for ip_tables),即选中Netfilter Xtables支持。)
CONFIG_IP_SET=y (选中IP set support。)
CONFIG_IP_VS=y (选中IP virtual server support,即选中IP虚拟服务器支持。)
CONFIG_IP_NF_IPTABLES=y (选中IP tables support (required for filtering/masq/NAT)。)
CONFIG_IP_NF_MATCH_AH=y (选中"ah" match support,即允许对IPSec包头的AH字段进行匹配。)
CONFIG_IP_NF_MATCH_ECN=y (选中"ecn" match support,即允许对TCP/IP包头的ECN(Explicit Congestion Notification 显示拥塞通知)字段进行匹配。)
CONFIG_IP_NF_MATCH_TTL=y (选中"ttl" match support,即允许对IP包头的TTL(生存期)字段进行匹配。)
CONFIG_IP_NF_FILTER=y (选中Packet filtering,即定义filter表以允许对包进行过滤。)
CONFIG_IP_NF_TARGET_REJECT=y (选中REJECT target support,即允许返回一个ICMP错误而不是简单的丢弃包。)
CONFIG_IP_NF_TARGET_SYNPROXY=y (选中SYNPROXY target support。)
CONFIG_IP_NF_NAT=y (选中iptables NAT support。)
CONFIG_IP_NF_TARGET_MASQUERADE=y (选中MASQUERADE target support。)
CONFIG_IP_NF_TARGET_NETMAP=y (选中NETMAP target support。)
CONFIG_IP_NF_TARGET_REDIRECT=y (选中REDIRECT target support。)
CONFIG_IP_NF_MANGLE=y (选中Packet mangling,允许在iptables中启用mangle表以便对包进行各种修改,常用于改变包的路由。)
CONFIG_IP_NF_TARGET_CLUSTERIP=y (选中CLUSTERIP target support。)
CONFIG_IP_NF_TARGET_ECN=y (选中ECN target support。)
CONFIG_IP_NF_TARGET_TTL=y (选中"TTL" target support。)
CONFIG_IP_NF_RAW=y (选中raw table support (required for NOTRACK/TRACE),在iptables中添加一个raw表,该表在Netfilter框架中非常靠前,并在PREOUTING和OUTPUT链上有钩子,从而可以对收到的数据包在连接跟踪前进行处理。)
- 退出图形化配置界面并save后,将kernel的menuconfig的配置修改保存到目标编译方案配置文件,如下:
bash
$ make kernel-savedefconfig
- 执行命令"make -j8 kernel&&make -j8 root&&make pkg"编译整个SDK,烧录固件且正常开机后输入命令:"iptables -V"检查下iptables是否存在,如下:
bash
# iptables -V
iptables v1.8.3 (legacy)
iptables的规则表和链
iptables采用"表"和"链"的分层结构。
表(tables)提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤、网络地址转换、包重构(修改)和数据跟踪处理。
链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。
规则表:
-
filter表------三个链:INPUT、FORWARD、OUTPUT,作用是过滤数据包,对应的内核模块是iptables_filter。
-
Nat表------三个链:PREROUTING、POSTROUTING、OUTPUT,作用是用于网络地址转换(IP、端口),对应的内核模块是iptable_nat。
-
Mangle表------五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD,作用是修改数据包的服务类型、TTL、并且可以配置路由实现QoS,对应的内核模块是iptable_mangle。
-
Raw表------两个链:OUTPUT、PREROUTING,作用是决定数据包是否被状态跟踪机制处理,对应的内核模块:iptable_raw。
规则链:
-
INPUT------进来的数据包应用此规则链中的策略。
-
OUTPUT------外出的数据包应用此规则链中的策略。
-
FORWARD------转发数据包时应用此规则链中的策略。
-
PREROUTING------对数据包作路由选择后应用此链中的规则。
-
POSTROUTING------对数据包作路由选择后应用此链中的规则(所有的数据包出来的时候都先由这个链处理)。
规则表之间的优先顺序:
Raw------>mangle------>nat------>filter。
规则链之间的优先顺序(分三种情况):
- 入站数据流向。
从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标主机时防火墙本机(比如Internet用户访问防火墙主机中的web服务器的数据包),那么内核将其传给INPUT链进行处理(决定是否允许通过等),通过以后再交由系统上层的应用程序进行响应。
- 转发数据流向。
来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其它外部地址(比如局域网用户通过网关访问站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交由POSTROUTING规则链(是否修改数据包的地址等)进行处理。
- 出站数据流向。
防火墙本机向外部地址发送的数据包(比如在防火墙主机中测试公网DNS服务器时)。首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理。
iptables常用的处理动作
iptables常用的处理动作包括ACCEPT、REJECT、DROP、REDIRECT、MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK。
- ACCEPT。
ACCEPT将数据包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链(natostrouting)。
- REJECT。
REJECT阻拦指定的数据包,并传送数据包通知对方,可以传送的数据包有几个选择:ICMP port-unreachable、ICMP echo-reply或是tcp-reset(这个数据包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
- DROP。
DROP丢弃数据包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
- REDIRECT。
REDIRECT将包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续比对其它规则。这个功能可以用来实作通透式porxy或者用来保护web服务器。
- MASQUERADE。
MASQUERADE改写数据包来源IP为防火墙NIC IP,可以指定port对应的范围,进行完此处理动作后,直接跳往下一个规则(mangleostrouting)。这个功能与SNAT略有不同,当进行IP伪装时,不需要指定伪装成哪个IP,IP会从网卡直接读取。
- LOG。
LOG将封包相关信息可以记录在/var/log中,进行完此处理动作后,将会继续比对其它规则。
- SNAT。
SNAT改写封包来源IP为某特定IP或IP范围,可以指定port对应的范围,进行完此处理动作后,将直接跳往下一个规则(mangleostrouting)。
- DNAT。
DNAT改写封包目的IP为特定IP或IP范围,可以指定port对应的范围,进行完此处理动作后,将会直接跳往下一个(filter:input或filter:forward)。
- MIRROR。
MIRROR镜像数据包,也就是将来源IP与目的IP对调后,将数据包送回,将数据包送回,进行完此处理动作后,将会中断过滤程序。
- QUEUE。
QUEUE中断过滤程序,将数据包放入队列,交给其它程序处理。
- RETURN。
RETURN结束在目前规则链中的过滤程序,返回主规则链继续过滤,如果把自定规则链看成是一个子程序,那么这个工作就相当于结束子程序并返回到主程序中。
- MARK。
MARK将数据包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此动作后,将会继续比对其它规则。
iptables语法格式
iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]
其中,表名、链名用于指定iptables命令所操作的表和链,命令选项用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等)。条件匹配用于指定对符合什么样的条件的数据包进行处理,目标动作或跳转用于指定数据包的处理方式(比如允许通过、拒绝、丢弃、跳转(Jump)给其它链处理)。
iptables命令的常见参数
"-h":查看帮助信息
例如:
bash
# iptables -h
iptables v1.8.3
Usage: iptables -[ACD] chain rule-specification [options]
iptables -I chain [rulenum] rule-specification [options]
iptables -R chain rulenum rule-specification [options]
iptables -D chain rulenum [options]
iptables -[LS] [chain [rulenum]] [options]
iptables -[FZ] [chain] [options]
iptables -[NX] chain
iptables -E old-chain-name new-chain-name
iptables -P chain target [options]
iptables -h (print this help information)
Commands:
Either long or short options are allowed.
--append -A chain Append to chain (附加到链。)
--check -C chain Check for the existence of a rule
--delete -D chain Delete matching rule from chain (从链那里删除匹配到的规则)
--delete -D chain rulenum (链 规则编号)
Delete rule rulenum (1 = first) from chain
--insert -I chain [rulenum]
Insert in chain as rulenum (default 1=first)
--replace -R chain rulenum
Replace rule rulenum (1 = first) in chain
--list -L [chain [rulenum]] ([链 [规则编号]]。)
List the rules in a chain or all chains
--list-rules -S [chain [rulenum]]
Print the rules in a chain or all chains
--flush -F [chain] Delete all rules in chain or all chains
--zero -Z [chain [rulenum]]
Zero counters in chain or all chains
--new -N chain Create a new user-defined chain
--delete-chain
-X [chain] Delete a user-defined chain
--policy -P chain target
Change policy on chain to target
--rename-chain
-E old-chain new-chain
Change chain name, (moving any references)
Options:
--ipv4 -4 Nothing (line is ignored by ip6tables-restore)
--ipv6 -6 Error (line is ignored by iptables-restore)
[!] --protocol -p proto protocol: by number or name, eg. `tcp'
[!] --source -s address[/mask][...] (地址[/掩码][...]。)
source specification (源规范。)
[!] --destination -d address[/mask][...]
destination specification
[!] --in-interface -i input name[+]
network interface name ([+] for wildcard)
--jump -j target (目标。)
target for rule (may load target extension) (规则的目标(可能加载目标扩展)。)
--goto -g chain
jump to chain with no return
--match -m match
extended match (may load extension)
--numeric -n numeric output of addresses and ports
[!] --out-interface -o output name[+] (输出名称)
network interface name ([+] for wildcard) (网络接口名称(用于通配符)。)
--table -t table table to manipulate (default: `filter') (要操作的表(默认是:"filter"表)。)
--verbose -v verbose mode
--wait -w [seconds] maximum wait to acquire xtables lock before give up
--wait-interval -W [usecs] wait time to try to acquire xtables lock
default is 1 second
--line-numbers print line numbers when listing
--exact -x expand numbers (display exact values)
[!] --fragment -f match second or further fragments only
--modprobe=<command> try to insert modules using this command
--set-counters PKTS BYTES set the counter during insert/append
[!] --version -V print package version.
"-V":查看版本
例如:
bash
# iptables -V
iptables v1.8.3 (legacy)
"-t":指定具体要操作的表
例如:
bash
# iptables -t nat --list (查看NAT表。)
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 192.168.169.0/24 anywhere
MASQUERADE all -- 192.168.169.0/24 anywhere
"-A":在指定的链末尾添加一条新的规则
例如:
bash
# iptables -A FORWARD -s 192.168.169.2 -j REJECT (拒绝转发来自192.168.169.2主机的数据。)
# iptables -A FORWARD -s 192.168.169.0/24 -j ACCEPT (允许转发来自192.168.169.0/24网段的数据。)
"-s":指定数据包的源IP地址或网段
例如:
bash
# iptables -A INPUT -s 192.168.169.0/24 -j DROP (将来自192.168.169.0/24网段的所有输入流量拒绝,并将其追加到INPUT链的末尾,其中-j DROP表示直接丢弃这些数据包,不给出人任何回应。)
"-o":指定数据包目标网络接口(输出网口)
例如:
bash
# iptables -t nat -A POSTROUTING -s 192.168.169.0/24 -o usb0 -j MASQUERADE (使用NAT技术将内部网络的IP地址转换成公网IP地址,从而实现对外访问。这个命令是在nat表中新增POSTROUTING规则,表示对从192.168.169.0/24网段发出的数据包,通过usb0网络接口发送出去时进行地址转换,使用MASQUERADE参数可以自动获取外部网络的IP地址。)
"-j":指定要执行的目标动作
例如:
bash
# iptables -t nat -A POSTROUTING -s 192.168.169.0/24 -o usb0 -j MASQUERADE (通过USB接口(usb0)将来自特定源地址(-s)的数据包进行地址伪装(MASQUERADE),从而使得出去的数据看起来像是从本机出去,而不是原始地址。)
"-D":指定要从某个规则链中删除一条规则,可以输入完整的规则或者指定规则编号
例如:
bash
# iptables -t nat -D POSTROUTING -s 192.168.169.0/24 -o usb0 -j MASQUERADE (从POSTROUTING链中删除一条规则。)
"-L":指定需要查看的规则链,列出规则链中的所有规则
例如:
bash
# iptables -t nat -vnL POSTROUTING --line-numbers (列出POSTROUTING链的所有规则。)
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 MASQUERADE all -- * usb0 192.168.169.0/24 0.0.0.0/0
iptables命令的简单综合实例参考
Wi-Fi热点共享LTE模块网络的实例参考
-
对应的方案启用iptables、LTE模块、Wi-Fi模块。
-
正常上电开机后,列出USB设备列表,查看USB接口的LTE模块的USB设备信息是否存在,例如:
bash
# lsusb
Bus 001 Device 001: ID 1d6b:0002
Bus 001 Device 002: ID 2c7c:6002 (其中EC800X的VID是2c7c,PID是6002。)
Bus 002 Device 001: ID 1d6b:0002
- 命令行输入:"microcom -s 115200 /dev/ttyUSBx(其中ttyUSBx对应LTE模块的AT功能串口)"并查看LTE模块当前信号强度,例如:
bash
AT+CSQ
+CSQ: 24,99
OK
- 查看LTE模块的当前SIM卡的运营商,例如:
bash
AT+COPS?
+COPS: 0,0,"CHN-UNICOM",7 (其中"CHN-UNICOM"表示中国联通。)
OK
- 配置LTE模块的TCP/IP场景参数,例如:
bash
AT+QICSGP=1,1,"ctnet","",""
OK
- 配置LTE模块的网卡状态,例如:
bash
AT+QCFG="usbnet",3 (其中3表示切换到RNDIS网卡状态,而1表示配置成ECM网卡状态。)
OK
- 激活LTE模块的移动场景,例如:
bash
AT+QIACT=1
OK
- 进行LTE模块拨号上网,例如:
bash
AT+QNETDEVCTL=1,1,1
OK
- 查询网络是否已经激活(GPRS是否附着成功),例如:
bash
AT+CGATT?
+CGATT: 1 /* 回显为1时表示网络激活成功(GPRS附着成功),而回显为0时则表示网络激活失败(GPRS附着失败) */
OK
- CTRL+X组合键退出microcom,查看LTE模块网络接口的IP地址、子网掩码和网关等网络配置信息,例如:
bash
# udhcpc -fnq -i usb0
udhcpc: started, v1.31.1
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending select for 192.168.43.100
udhcpc: lease of 192.168.43.100 obtained, lease time 86400
deleting routers
adding dns 192.168.43.1
- 查看Wi-Fi模块和LTE模块的网络接口的网络地址,例如:
bash
# ifconfig wlan0 | grep "inet addr"
inet addr:192.168.169.1 Bcast:192.168.169.255 Mask:255.255.255.0
# ifconfig usb0 | grep "inet addr"
inet addr:192.168.43.100 Bcast:192.168.43.255 Mask:255.255.255.0
- LTE模块PING外网,查看网络是否可以到达,例如:
bash
# ping -I 192.168.169.1 -c 10 www.baidu.com
PING www.baidu.com (180.101.50.188) from 192.168.43.100: 56 data bytes
64 bytes from 180.101.50.188: seq=0 ttl=51 time=57.220 ms
64 bytes from 180.101.50.188: seq=1 ttl=51 time=42.061 ms
64 bytes from 180.101.50.188: seq=2 ttl=51 time=40.899 ms
64 bytes from 180.101.50.188: seq=3 ttl=51 time=39.616 ms
64 bytes from 180.101.50.188: seq=4 ttl=51 time=40.455 ms
64 bytes from 180.101.50.188: seq=5 ttl=51 time=40.285 ms
64 bytes from 180.101.50.188: seq=6 ttl=51 time=39.111 ms
64 bytes from 180.101.50.188: seq=7 ttl=51 time=39.827 ms
64 bytes from 180.101.50.188: seq=8 ttl=51 time=39.663 ms
64 bytes from 180.101.50.188: seq=9 ttl=51 time=39.503 ms
--- www.baidu.com ping statistics ---
10 packets transmitted, 10 packets received, 0% packet loss
round-trip min/avg/max = 39.111/41.864/57.220 ms
- 开启IP路由转发功能,例如:
bash
echo 1 > /proc/sys/net/ipv4/ip_forward
- iptables命令设置源地址转换和转发,例如,将连接到wifi的所有设备的IP(IP地址网段的范围是192.168.169.1~192.168.169.254)使用指定的网卡usb0转发出去,从而达到wifi共享4G网络上网的目的:
bash
iptables -t nat -A POSTROUTING -s 192.168.169.0/24 -o usb0 -j MASQUERADE
- Wi-Fi模块PING外网,查看网络是否可以到达,例如:
bash
# ping -I 192.168.169.1 -c 10 www.baidu.com
PING www.baidu.com (180.101.50.242) from 192.168.169.1: 56 data bytes
64 bytes from 180.101.50.242: seq=0 ttl=51 time=56.552 ms
64 bytes from 180.101.50.242: seq=1 ttl=51 time=56.356 ms
64 bytes from 180.101.50.242: seq=2 ttl=51 time=56.193 ms
64 bytes from 180.101.50.242: seq=3 ttl=51 time=55.951 ms
64 bytes from 180.101.50.242: seq=4 ttl=51 time=55.824 ms
64 bytes from 180.101.50.242: seq=5 ttl=51 time=54.588 ms
64 bytes from 180.101.50.242: seq=6 ttl=51 time=55.481 ms
64 bytes from 180.101.50.242: seq=7 ttl=51 time=55.158 ms
64 bytes from 180.101.50.242: seq=8 ttl=51 time=53.981 ms
64 bytes from 180.101.50.242: seq=9 ttl=51 time=54.821 ms
--- www.baidu.com ping statistics ---
10 packets transmitted, 10 packets received, 0% packet loss
round-trip min/avg/max = 53.981/55.490/56.552 ms
- Wi-Fi模块和LTE模块都能PING得通外网后,使用带Wi-Fi的移动终端(笔记本电脑、手机、平板电脑等)进行上外网操作,比如搜索百度网站等。
总结
iptables 是 Linux 系统中基于 netfilter 框架的包过滤防火墙工具,通过预设规则对网络数据包进行筛选、修改或转发,实现网络流量控制。
核心作用主要体现在三个方面:流量过滤(允许或阻断特定 IP、端口的数据包,如放行 HTTP 服务的 80 端口或拒绝可疑源地址)、地址转换(通过SNAT、DNAT 等机制实现内网访问外网或外网访问内网的地址映射)以及端口转发(将外部请求转发到内网服务器,常用于Web 代理或游戏服务器部署)。
应用场景广泛,包括:
- 基础防火墙配置:在服务器或网络边界过滤非法流量,例如仅允许 SSH(22 端口)访问并拒绝其他入站连接。
- 网络地址转换(NAT):通过SNAT伪装内网主机源地址实现共享上网,或使用DNAT将公网 IP 的特定端口映射到内网服务。
- 端口转发与负载均衡:将外部请求转发至内网多台服务器,实现简单负载均衡,或为无公网 IP 的设备通过动态域名服务(如花生壳)提供稳定访问。
- 容器网络与虚拟化:容器平台(如 Docker)依赖 iptables 实现网络隔离和服务暴露,虚拟机网关通过 iptables 规则控制跨网络流量。
- 安全增强与连接跟踪:利用状态检测(如 ESTABLISHED,RELATED)自动放行响应流量,减少规则冗余,并通过 mangle 表标记数据包优先级或修改 TTL。
- 尽管现代系统常使用 firewalld、ufw 等高级工具简化管理,iptables 作为底层引擎仍广泛应用于复杂网络场景,其灵活性和细粒度控制使其成为Linux 网络安全的核心组件。