我有一个混合的 Ubuntu 16.04/Ubuntu 18.04 基础架构,并希望firewalld
在主机上进行设置和配置。我将为此使用 Ansible 角色(我有一个基于 Vagrant设置测试 Ansible 角色)。
当我运行 Ansible 剧本时,新安装的剧本firewalld
默认会阻止传入连接,尽管我从未明确指定这一点:
[ 2161.574030] FINAL_REJECT: IN=enp0s8 OUT= MAC=08:00:27:f9:00:46:0a:00:27:00:00:00:08:00 SRC=172.16.137.1 DST=172.16.137.182 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=36677 DF PROTO=TCP SPT=35098 DPT=455 WINDOW=29200 RES=0x00 SYN URGP=0
[ 4717.718425] FINAL_REJECT: IN=enp0s8 OUT= MAC=08:00:27:f9:00:46:0a:00:27:00:00:00:08:00 SRC=172.16.137.1 DST=172.16.137.182 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=55673 DF PROTO=TCP SPT=47624 DPT=456 WINDOW=29200 RES=0x00 SYN URGP=0
[ 4719.682792] FINAL_REJECT: IN=enp0s8 OUT= MAC=08:00:27:f9:00:46:0a:00:27:00:00:00:08:00 SRC=172.16.137.1 DST=172.16.137.182 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=60255 DF PROTO=TCP SPT=43836 DPT=457 WINDOW=29200 RES=0x00 SYN URGP=0
[ 4721.358343] FINAL_REJECT: IN=enp0s8 OUT= MAC=08:00:27:f9:00:46:0a:00:27:00:00:00:08:00 SRC=172.16.137.1 DST=172.16.137.182 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=42733 DF PROTO=TCP SPT=51850 DPT=458 WINDOW=29200 RES=0x00 SYN URGP=0
是否有可能以某种方式firewalld
以宽容模式启动,然后配置所有内容,然后一次性应用配置?
答案1
最近我将一些 Ubuntu 机器从 ufw 转换为了 firewalld,而且我几乎只使用 Ansible,因此我也遇到了一些这种情况。
首先,您应该知道,出厂时,firewalld 会阻止大多数传入流量。在 Ubuntu 的默认配置中,没有任何接口或源连接到任何区域,因此,firewalld 将所有流量视为该public
区域的一部分。此区域仅允许传入 ssh 和 DHCP 客户端响应流量。
有几种方法可以解决这个问题。
在我自己的 Ansible 剧本和角色中,我为每项服务配置了防火墙规则。因此,我有一个安装 nginx 的角色,该角色还在防火墙中打开 http 和 https 服务。因此,只要 Web 服务器安装并运行,防火墙就准备就绪。当我从 ufw 转换为防火墙时,我只是重新运行了整个剧本,只有 ufw 和防火墙的内容发生了变化。
如果您正在执行一次性操作并且需要打开大量端口,或者进行其他一些复杂配置,您可能需要在临时 VM 上打开 Firewalld 中的端口,然后从目录中获取该区域的结果 XML 文件/etc/firewalld/zones
。然后您可以copy:
将该文件复制到任何系统并重新启动 Firewalld 以使其使用相应的配置。