我的 Linux VM 配置了多个网卡,eth0 和 eth1。现在我希望在 NIC 上启用 SSH,并仅在 eth0 上启用 HTTPS。我已将丢弃区域设置为默认值,以丢弃除该区域以外的所有流量。
但是如果我在公共区域中添加此配置,如下所示
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: dhcpv6-client https ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
然后,将在两个网卡或任意一个网卡上启用 https 和 ssh。有什么方法可以管理 NIC 服务关系吗?
答案1
Firewalld 使用“区域”的概念将规则映射到接口。您将服务添加到区域 ( firewall-cmd --zone=public --add-service=http --permanent
),并且该服务将在该区域成员的所有接口上被允许。
如果您想要为不同的接口设置不同的规则,则需要创建单独的区域。
本文来自 Linux Journal 的文章是关于该主题的很好的资源,其中包括多区域配置的示例。
例如:
从您的区域中删除 eth1
public
并将其移至该internal
区域:firewall-cmd --zone=internal --change-interface=eth1 --permanent
允许
ssh
该internal
区域:firewall-cmd --zone=internal --add-service=ssh --permanent
重新加载防火墙配置:
firewall-cmd --reload
internal
然后根据需要向您的区域添加和删除服务,public
以达到您所需的配置。
或者,如果您有一个相对简单的防火墙配置,您可以删除firewalld
并手动编写iptables
规则。