23 伪装和防火墙 #
只要在网络环境中使用 Linux,您就可以利用内核功能通过操作网络包将内部网络区域和外部网络区域隔开。Linux netfilter
框架提供了一种建立有效防火墙的方法,可以将不同网络隔开。使用 iptables(用于定义规则集的通用表结构)可以精确控制哪些包能通过网络接口。可以使用 firewalld
及其图形界面 firewall-config
设置此类包过滤器。
SUSE Linux Enterprise Server 15 GA 引入了 firewalld
作为新的默认软件防火墙,以其取代了 SuSEfirewall2。本章为已从旧版 SUSE Linux Enterprise Server 升级的用户提供有关配置 firewalld
以及从 SuSEfirewall2 迁移的指导。
23.1 使用 iptables 过滤包 #
本节介绍包过滤的具体细节。netfilter
和 iptables
组件负责过滤和操作网络包以及进行网络地址转换 (NAT)。过滤准则及与过滤准则关联的所有操作均储存在链中;各个网络包在到达时,必须依次与这些链进行匹配。要匹配的链存储在表中。使用 iptables
命令可以更改这些表和规则集。
Linux 内核维护以下三个表,分别对应包过滤器的不同功能:
- filter
此表存储大多数过滤规则,因为它执行严格意义上的包过滤机制,例如,决定是让包通过 (
ACCEPT
) 还是将包丢弃 (DROP
)。- nat
此表定义对包的源地址和目标地址所做的任何更改。使用这些功能还能实现伪装,这是 NAT 的一个特例,用于将专用网络与互联网链接起来。
- mangle
此表中的规则用于操纵 IP 报头中存储的值(如服务类型)。
这些表包含多个用于匹配包的预定义链:
- PREROUTING
此链适用于所有传入包。
- INPUT
此链适用于发往系统内部进程的包。
- FORWARD
此链适用于在系统中路由的包。
- OUTPUT
此链适用于从系统自身发出的包。
- POSTROUTING
此链适用于所有出站包。
图 23.1 “iptable:包的可能路径”演示了网络包在特定系统中传送时可能经过的路径。为了便于说明,图中将表作为链的各个部分列出,但实际上表本身存储了这些链。
最简单的情况是,发往系统本身的传入包抵达 eth0
接口。包首先转到 mangle
表的 PREROUTING
链,然后转到 nat
表的 PREROUTING
链。随后的步骤(涉及包的路由选择)确定包的实际目标,这是系统自身的过程。在包经过 mangle
和 filter
表的 INPUT
链后,只要 filter
表的规则允许,那么包最终将抵达目标。
23.2 关于伪装的基础知识 #
伪装是 Linux 专用的 NAT(网络地址转换)形式,可用于将小型 LAN 连接到互联网。LAN 主机使用私用地址范围内的 IP 地址(请参见第 23.1.2 节 “网络掩码和路由”),而在互联网上,使用的是正式 IP 地址。要能够连接到互联网,LAN 主机的私用地址需转换为正式地址。这种转换是在路由器上完成的,路由器充当了 LAN 和因特网之间的网关。其中的原理只有简单的一条:路由器有多个网络接口,通常是一个网卡和与因特网连接的另一个接口。后者将路由器与外部世界链接起来,同时,还会有一个或多个其他网络接口将路由器与 LAN 主机链接起来。在本地网络中的这些主机连接到路由器的网卡(如 eth0
)后,它们就可以将发往本地网络之外的所有包发送到其默认网关或路由器。
在配置网络时,确保所有本地主机的广播地址和网络掩码都相同。做不到这一点就会导致无法正确路由数据包。
如上所述,只要有某台 LAN 主机要向互联网地址发送包,这个包就会发送到默认路由器。但是,必须先配置路由器,然后才能转发这些包。由于安全原因,默认安装中未启用它。要启用此功能,请在 /etc/sysctl.conf
文件中添加 net.ipv4.ip_forward = 1
行。或者通过 YaST 执行此操作,例如通过调用 yast routing ip-forwarding on
。
连接的目标主机可以看到路由器,但对内部网络中发出包的那台主机却毫不知情。伪装技术就是因此而得名的。由于要进行地址转换,路由器自然成为所有回复包首先到达的目标。路由器必须能够识别这些入站包并转换其目标地址,这样才能将包转发给本地网络中的正确主机。
由于入站流量的路由选择取决于伪装表,所以从外部根本无法打开与内部主机的连接。对于这种连接,伪装表中不会有任何对应项。此外,所有已建立的连接在该表中都被分配了一个状态项,所以其他连接无法再使用该项。
受以上各种因素影响,在使用一些应用程序协议(如 ICQ、cucme、IRC(DCC、CTCP)和 FTP(采用 PORT 模式))时,您可能会遇到一些问题。Web 浏览器、标准 FTP 程序和许多其他程序都使用 PASV 方式。就包过滤和伪装而言,这种被动方式不容易出问题。
23.3 防火墙基础知识 #
在描述用于控制网络间数据流的机制时,防火墙也许是用得最广泛的一个术语。严格地说,本节所述的机制应该叫做包过滤器。包过滤器根据特定准则(如协议、端口和 IP 地址)来控制数据流。这样您就可以根据包的地址来拦截不应该发送到您网络中的包。举例来说,若允许对 Web 服务器进行公共访问,应明确打开相应的端口。不过,包过滤器并不扫描有合法地址的包的内容(例如那些要发送到该 Web 服务器的包)。例如,即使是在入站包想要破坏 Web 服务器上的 CGI 程序的情况下,包过滤器仍然允许它们通过。
一种更有效但同时也更复杂的机制是将多种系统结合起来使用,例如让包过滤器与应用程序网关或代理进行交互。在这种情况下,包过滤器将拒绝所有发往禁用端口的包,系统接受发往应用程序网关的包。此网关或代理伪装成服务器的实际客户端。从某种意义上说,可以将这种代理视为应用程序使用的协议级的伪装主机。此类代理的一个示例就是 Squid(一种 HTTP 和 FTP 代理服务器)。要使用 Squid,必须将浏览器配置为通过代理通讯。代理缓存将提供请求的任何 HTTP 页面或 FTP 文件,在缓存中找不到的对象将由代理从互联网提取。
下一节重点介绍 SUSE Linux Enterprise Server 随附的包过滤器。有关包过滤和防火墙设置的更多信息,请查看 Firewall HOWTO。
23.4 firewalld
#
firewalld
取代了 SuSEfirewall2
SUSE Linux Enterprise Server 15 GA 引入了 firewalld
作为新的默认软件防火墙,以其取代了 SuSEfirewall2。如果您是从早于 SUSE Linux Enterprise Server
15 GA 的版本升级,SuSEfirewall2 将不会有变化,并且您必须手动升级到 firewalld
(请参见第 23.5 节 “从 SuSEfirewall2 迁移”)。
firewalld
是一个守护程序,它可维护系统的 iptables
规则,并提供一个 D-Bus 接口用于操作这些规则。它随附了命令行实用程序 firewall-cmd
以及图形用户界面 firewall-config
与其交互。由于 firewalld
在后台运行并提供明确定义的接口,因此它允许其他应用程序请求对 iptables 规则进行更改,例如,设置虚拟机网络。
firewalld
实现不同的安全区域。存在多个预定义区域,如 internal
和 public
。管理员可根据需要定义其他自定义区域。每个区域包含自身的 iptables 规则集。每个网络接口只能是一个区域的成员。也可以根据源地址将单个连接分配到某个区域。
每个区域代表一个特定的信任级别。例如,public
区域不受信任,因为此网络中的其他计算机不受您的控制(适合互联网或无线热点连接)。另一方面,internal
区域用于受您控制的网络,类似于家庭或公司网络。以这种方式利用区域,主机能够以定义的方式向可信网络和不可信网络提供不同种类的服务。
有关 firewalld
中的预定义区域及其含义的详细信息,请参见其手册:https://www.firewalld.org/documentation/zone/predefined-zones.html。
网络接口的初始状态是完全未分配到任何区域。在此情况下,将在默认区域(可通过调用 firewall-cmd
--get-default-zone
来确定)中隐式处理网络接口。如果未配置为其他值,默认区域是 public
区域。
firewalld
包过滤模型允许任何传出连接通过。传出连接是指由本地主机主动建立的连接。如果相关区域中不允许相应的服务,则会阻止远程主机建立的传入连接。因此,具有传入流量的每个接口必须放在适当的区域,以使所需的服务可供访问。对于每个区域,请定义所需的服务或协议。
firewalld
的一个重要概念是划分了两个不同的配置:运行时配置和永久配置。运行时配置代表当前处于活动状态的规则,而永久配置代表重启动 firewalld
时将应用的已保存规则。这样,就可以添加在重启动 firewalld
后将丢弃的临时规则,并且在试验新规则时能够还原到原始状态。当您更改配置时,需要知道您正在编辑哪个配置。第 23.4.3.2 节 “运行时配置与永久配置”中介绍了如何做到这一点。
要使用图形用户界面 firewall-config
执行 firewalld
配置,请参见其documentation。下一节将介绍如何在命令行上使用 firewall-cmd
执行典型的 firewalld
配置任务。
23.4.1 使用 NetworkManager 配置防火墙 #
NetworkManager 支持通过选择区域来对 firewalld
进行基本配置。
编辑有线或无线连接时,请在配置窗口中转到身份选项卡,然后使用Firewall Zone
下拉框。
23.4.2 使用 YaST 配置防火墙 #
yast firewall
模块支持 firewalld
的基本配置。它提供区域选择器、服务选择器和端口选择器。它不支持创建自定义 iptables 规则,并将区域创建和自定义操作局限于选择服务和端口。
YaST 遵循 /etc/firewalld/firewalld.conf
中的设置运行,其中 FlushAllOnReload
的默认值设置为 no
。因此,YaST 不会在运行模式下更改设置。例如,如果您使用 YaST 将接口分配给了不同的区域,请重新启动 firewalld 守护程序以使更改生效。
23.4.3 在命令行上配置防火墙 #
23.4.3.1 防火墙启动 #
系统默认会安装并启用 firewalld
。它是一个普通的 systemd
服务,可以通过 systemctl
或 YaST 服务管理器进行配置。
安装后,YaST 会自动启动 firewalld
,并将所有接口保留在默认的 public
区域中。如果在系统上配置并激活了某个服务器应用程序,YaST 可通过服务器配置模块中的 或 选项调整防火墙规则。某些服务器模块对话框包含 按钮,用于激活其它服务和端口。
23.4.3.2 运行时配置与永久配置 #
所有 firewall-cmd
命令默认都是对运行时配置运行。您可以通过添加 --permanent
参数来仅对永久配置应用大多数操作。如果这样做,更改会影响永久配置,而不会在运行时配置中立即生效。目前无法通过单次调用将规则同时添加到运行时配置和永久配置。要实现此目的,可将所有必要更改应用到运行时配置,并在一切符合预期时发出以下命令:
#
firewall-cmd --runtime-to-permanent
这会将所有当前运行时规则写入永久配置。您或其他程序在其他环境中可能对防火墙所做的任何临时修改都将以这种方式变成永久修改。如果您不确信这一点,保险起见,您也可以采取相反的方法:将新规则添加到永久配置,然后重新加载 firewalld
以使这些规则成为活动规则。
某些配置项(例如默认区域)由运行时配置和永久配置共享。对这些项的更改会立即体现在这两个配置中。
要将运行时配置还原为永久配置,从而丢弃所有临时更改,可以采用以下两种做法:通过 firewalld
命令行界面或通过 systemd
:
#
firewall-cmd --reload
#
systemctl reload firewalld
为简洁起见,下列章节中的示例始终对运行时配置运行(如果适用)。要使其适用于永久配置,请进行相应调整。
23.4.3.3 将接口分配到区域 #
您可按如下所示列出当前分配到某个区域的所有网络接口:
#
firewall-cmd --zone=public --list-interfaces
eth0
同样,您可以查询特定的接口分配到了哪个区域:
#
firewall-cmd --get-zone-of-interface=eth0
public
以下命令行将一个接口分配到某个区域。如果 eth0
尚未分配到其他区域,使用 --add-interface
的变体就会起作用。使用 --change-interface
的变体始终起作用,在必要时会从其当前区域中去除 eth0
:
#
firewall-cmd --zone=internal --add-interface=eth0
#
firewall-cmd --zone=internal --change-interface=eth0
任何不带明确 --zone
参数的操作将对默认区域隐式运行。此命令对可用于获取和设置默认的区域分配:
#
firewall-cmd --get-default-zone
dmz#
firewall-cmd --set-default-zone=public
任何未明确分配到区域的网络接口会自动成为默认区域的一部分。如果更改默认区域,会立即为永久配置和运行时配置重新分配所有这些网络接口。切勿使用 internal
区域这样的可信区域作为默认区域,以免意外曝露于威胁之中。例如,在这种情况下,USB 以太网接口等热插拔网络接口将自动成为可信区域的一部分。
不明确属于任何区域的接口不会显示在区域接口列表中。目前没有任何命令可列出未分配的接口。因此,在常规操作期间,最好避免使用未分配的网络接口。
23.4.3.4 使网络服务可供访问 #
firewalld
存在服务的概念。服务由端口和协议的定义构成。在给定网络服务(例如 Web 或邮件服务器协议)的环境中,这些定义在逻辑上合为一体。您可以使用以下命令获取有关预定义服务的信息及其细节:
#
firewall-cmd --get-services
[...] dhcp dhcpv6 dhcpv6-client dns docker-registry [...]#
firewall-cmd --info-service dhcp
dhcp ports: 67/udp protocols: source-ports: modules: destination:
使用这些服务定义可以轻松使相关的网络功能在区域中可供访问。例如,下面的命令行会打开内部区域中的 HTTP Web 服务器端口:
#
firewall-cmd --add-service=http --zone=internal
要去除区域中的服务,则需使用对应的命令 --remove-service
。您还可以使用 --new-service
子命令定义自定义的服务。有关如何执行此操作的更多细节,请参见 https://www.firewalld.org/documentation/howto/add-a-service.html。
如果您只想按编号打开单个端口,可使用以下方法。这会打开内部区域中的 TCP 端口 8000:
#
firewall-cmd --add-port=8000/tcp --zone=internal
要去除端口,请使用对应的命令 --remove-port
。
firewalld
支持使用 --timeout
参数将服务或端口打开一段有限的时间。在进行快速测试时,此参数可能很有用,它可以确保测试人员不会忘记关闭该服务或端口。要允许打开 internal
区域中的 imap
服务 5 分钟,可以调用
#
firewall-cmd --add-service=imap --zone=internal --timeout=5m
23.4.3.5 锁定模式 #
firewalld
提供了一种锁定模式来防止对处于活动状态的防火墙规则进行更改。由于应用程序可以通过 D-Bus 接口自动更改防火墙规则,并且普通用户也有可能可以执行该操作(取决于 PolicyKit 规则),因此,锁定在某些情况下有助于防止此类更改发生。https://fedoraproject.org/wiki/Features/FirewalldLockdown 上提供了有关此模式的详细信息。
请务必注意,锁定模式功能不提供真正的安全性,而只是防范有人意外或者无恶意地尝试更改防火墙。目前,如 https://seclists.org/oss-sec/2017/q3/139 中所述,在 firewalld
中实现锁定模式无法针对恶意企图提供安全保护。
23.4.3.6 添加自定义 iptables
规则 #
firewalld
声明对主机的 netfilter
规则拥有排它控制权。切勿使用其他工具(例如 iptables
)修改防火墙规则。否则可能会造成 firewalld
的混乱并破坏安全性或功能。
如果您需要添加 firewalld
功能未涵盖的自定义防火墙规则,可通过两种方式实现目的。要直接传递原始 iptables
语法,可以使用 --direct
选项。此选项预期使用表、链和优先级作为初始参数,命令行的其余部分将按原样传递给 iptables
。下面的示例将添加一个用于转发过滤器表的连接跟踪规则:
#
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o eth1 \ -p tcp --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
此外,firewalld
实施了所谓的富规则,这是一种扩展语法,用于更轻松地指定 iptables
规则。https://www.firewalld.org/documentation/man-pages/firewalld.richlanguage.html 上提供了相应语法规范。下面的示例将丢弃来自特定源地址的所有 IPv4 包:
#
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" \ source address="192.168.2.4" drop'
23.4.3.7 路由、转发和伪装 #
firewalld
并不是设计用来作为功能完备的路由器。它可提供典型家庭路由器设置的基本功能,但对于公司生产环境的路由器,则不应使用 firewalld
,而应使用专用路由器和防火墙设备。下面仅提供了利用 firewalld
中的路由时需要考虑的几点提示:
首先,需要按第 23.2 节 “关于伪装的基础知识”中所述启用 IP 转发。
要启用 IPv4 伪装(例如,在
internal
区域中),请发出以下命令。#
firewall-cmd --zone=internal --add-masquerade
firewalld
还可以启用端口转发。以下命令会将端口 80 上的本地 TCP 连接转发到另一主机:#
firewall-cmd --zone=public \ --add-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.1.10
23.4.4 访问侦听动态端口的服务 #
某些网络服务不会侦听预定义的端口号,而是基于 portmapper
或 rpcbind
协议运行。从现在开始,我们将使用术语 rpcbind
。当其中一项服务启动时,它会选择一个随机本地端口,并与 rpcbind
通讯以使端口号变为已知。rpcbind
本身正在侦听已知的端口。然后,远程系统可以向 rpcbind
查询该协议已知的网络服务,以及它们正在侦听哪些端口。现今还在使用此方法的程序不是很多。常见示例包括网络信息服务(NIS;ypserv
和 ypbind
)以及网络文件系统 (NFS) 版本 3。
较新的 NFSv4 需要单个已知的 TCP 端口 2049。对于协议版本 4.0,可能需要将内核参数 fs.nfs.nfs_callback_tcpport
设置为静态端口(请参见例 23.1 “/etc/modprobe.d/60-nfs.conf
中 nfs
内核模块的回调端口配置”)。从协议版本 4.1 开始,此项设置也变得没有必要。
由于 rpcbind
协议具有动态性质,要使防火墙后面的受影响服务可供访问变得很困难。firewalld
本身并不支持这些服务。如需手动配置,请参见第 23.4.4.1 节 “配置静态端口”。此外,SUSE Linux Enterprise Server 提供了一个助手脚本。有关详细信息,请参见第 23.4.4.2 节 “使用 firewall-rpcbind-helper 配置静态端口”。
23.4.4.1 配置静态端口 #
一种可行的做法是将所有相关网络服务配置为使用固定端口号。完成此操作后,可以在 firewalld
中打开固定端口,然后一切会正常进行。实际使用的端口号由您决定,但不应与分配给其他服务的任何已知端口号相冲突。有关 NIS 和 NFSv3 服务的可用配置项列表,请参见表 23.1 “静态端口配置的重要 sysconfig 变量”。您的设置不一定需要所有这些端口,具体取决于您的实际 NIS 或 NFS 配置。
文件路径 |
变量名 |
示例值 |
---|---|---|
/etc/sysconfig/nfs
| MOUNTD_PORT | 21001 |
STATD_PORT | 21002 | |
LOCKD_TCPPORT | 21003 | |
LOCKD_UDPPORT | 21003 | |
RQUOTAD_PORT | 21004 | |
/etc/sysconfig/ypbind
| YPBIND_OPTIONS | -p24500 |
/etc/sysconfig/ypserv
| YPXFRD_ARGS | -p24501 |
YPSERV_ARGS | -p24502 | |
YPPASSWDD_ARGS | --port 24503 |
您需要重启动受这些静态端口配置影响的所有相关服务才能使更改生效。可以使用 rpcinfo -p
命令查看当前分配的 rpcbind 端口。如果成功,输出中应该会显示静态配置的端口。
使用 NFS 时,除了为用户空间中运行的网络服务配置端口以外,还需要配置 Linux 内核直接使用的端口。其中一个端口是 nfs_callback_tcpport
。仅在早于 4.1 的 NFS 协议版本中才需要此端口。名为 fs.nfs.nfs_callback_tcpport
的 sysctl 可用于配置此端口。仅当 NFS 挂载处于活动状态时,此 sysctl 节点才会动态显示。因此,最好通过内核模块参数来配置该端口。可以按例 23.1 “/etc/modprobe.d/60-nfs.conf
中 nfs
内核模块的回调端口配置”中所示创建一个文件来实现此目的。
/etc/modprobe.d/60-nfs.conf
中 nfs
内核模块的回调端口配置 #options nfs callback_tcpport=21005
要使此项更改生效,最简单的方法是重引导计算机。如果采用其他方法,将需要停止所有 NFS 服务并重新加载 nfs
内核模块。要校验活动的 NFS 回调端口,请检查 cat /sys/module/nfs/parameters/callback_tcpport
的输出。
要轻松处理现已静态配置的 RPC 端口,创建新的 firewalld
服务定义会很有用。例如,此服务定义可将所有相关端口分组,这样您可以轻松将这些端口设置为供特定区域的用户访问。在例 23.2 “用来为 NFS 定义新 firewalld
RPC 服务的命令”中,对 NFS 端口就采取了这种做法,因为在配套的示例中已对这些端口进行配置。
firewalld
RPC 服务的命令 ##
firewall-cmd --permanent --new-service=nfs-rpc
#
firewall-cmd --permanent --service=nfs-rpc --set-description="NFS related, statically configured RPC ports"
# add UDP and TCP ports for the given sequence#
for port in 21001 21002 21003 21004; do firewall-cmd --permanent --service=nfs-rpc --add-port ${port}/udp --add-port ${port}/tcp done
# the callback port is TCP only#
firewall-cmd --permanent --service=nfs-rpc --add-port 21005/tcp
# show the complete definition of the new custom service#
firewall-cmd --info-service=nfs-rpc --permanent -v
nfs-rpc summary: description: NFS and related, statically configured RPC ports ports: 4711/tcp 21001/udp 21001/tcp 21002/udp 21002/tcp 21003/udp 21003/tcp 21004/udp 21004/tcp protocols: source-ports: modules: destination: # reload firewalld to make the new service definition available#
firewall-cmd --reload
# the new service definition can now be used to open the ports for example in the internal zone#
firewall-cmd --add-service=nfs-rpc --zone=internal
23.4.4.2 使用 firewall-rpcbind-helper 配置静态端口 #
您可以使用 SUSE 助手工具 firewall-rpc-helper.py
来简化上一节中所述的静态端口配置步骤。请使用 zypper in firewalld-rpcbind-helper
安装该工具。
该工具允许以交互方式配置上一节中所述的服务模式。它还可以显示当前端口分配,并可用于编写脚本。有关详细信息,请参见firewall-rpc-helper.py --help
。
23.5 从 SuSEfirewall2 迁移 #
firewalld
配置
请参见《AutoYaST 指南》的“Firewall Configuration”一节,了解如何为 AutoYaST 创建 firewalld
配置。
从 SUSE Linux Enterprise Server 12 的任何服务包升级到 SUSE Linux Enterprise Server 15 SP6 时,SuSEfirewall2 都不会更改,并会保持活动状态。它不会自动迁移,因此您必须手动迁移到 firewalld
。firewalld
包含助手迁移脚本 susefirewall2-to-firewalld
。该脚本可能会完美执行迁移,也可能失败,具体取决于 SuSEfirewall2 配置的复杂性。它很可能会部分成功,在此情况下,您必须检查新的 firewalld
配置并做出调整。
最终的配置会使 firewalld
的行为在一定程度上类似于 SuSEfirewall2。要充分利用 firewalld
的功能,您可以选择创建新的配置,而不要尝试迁移旧配置。可以安全运行不带任何选项的 susefirewall2-to-firewalld
脚本,因为它不会对您的系统做出永久性更改。但是,如果您正在远程管理系统,则可能会被锁定。
安装并运行 susefirewall2-to-firewalld
:
#
zypper in susefirewall2-to-firewalld#
susefirewall2-to-firewalld INFO: Reading the /etc/sysconfig/SuSEfirewall2 file INFO: Ensuring all firewall services are in a well-known state. INFO: This will start/stop/restart firewall services and it's likely INFO: to cause network disruption. INFO: If you do not wish for this to happen, please stop the script now! 5...4...3...2...1...Lets do it! INFO: Stopping firewalld INFO: Restarting SuSEfirewall2_init INFO: Restarting SuSEfirewall2 INFO: DIRECT: Adding direct rule="ipv4 -t filter -A INPUT -p udp -m udp --dport 5353 -m pkttype --pkt-type multicast -j ACCEPT" [...] INFO: Enabling direct rule=ipv6 -t filter -A INPUT -p udp -m udp --dport 546 -j ACCEPT INFO: Enabling direct rule=ipv6 -t filter -A INPUT -p udp -m udp --dport 5353 -m pkttype --pkt-type multicast -j ACCEPT INFO: Enable logging for denied packets INFO: ########################################################## INFO: INFO: The dry-run has been completed. Please check the above output to ensure INFO: that everything looks good. INFO: INFO: ########################################################### INFO: Stopping firewalld INFO: Restarting SuSEfirewall2_init INFO: Restarting SuSEfirewall2
这会生成大量输出,您可能需要将其复制到某个文件以方便查看:
#
susefirewall2-to-firewalld | tee newfirewallrules.txt
该脚本支持下列选项:
-c
提交更改。脚本会对系统进行更改,因此,请务必在您确实对建议的更改感到满意时才使用此选项。这会重置当前的
firewalld
配置,因此请务必进行备份!-d
超级繁琐。请使用此选项来提交 bug 报告,但务必小心屏蔽敏感信息。
-h
此消息。
-q
无输出。也不会列显错误!
-v
冗长方式。会列显警告和其他信息性消息。
23.6 更多信息 #
在 /usr/share/doc/packages/firewalld
中可以找到有关 firewalld
软件包的最新信息和其他文档。netfilter 和 iptables 项目的主页 https://www.netfilter.org 以多种语言提供了大量有关 iptables 一般信息的文档。