接口特定的firewalld规则

接口特定的firewalld规则

我的 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 的文章是关于该主题的很好的资源,其中包括多区域配置的示例。

例如:

  • 从您的区域中删除 eth1public并将其移至该internal区域:

    firewall-cmd --zone=internal --change-interface=eth1 --permanent
    
  • 允许sshinternal区域:

    firewall-cmd --zone=internal --add-service=ssh --permanent
    
  • 重新加载防火墙配置:

    firewall-cmd --reload
    

internal然后根据需要向您的区域添加和删除服务,public以达到您所需的配置。


或者,如果您有一个相对简单的防火墙配置,您可以删除firewalld并手动编写iptables规则。

相关内容