设置firewall-cmd --permanent 重新启动后不会坚持

设置firewall-cmd --permanent 重新启动后不会坚持

我有两个网络接口:eth0 和 p2p1。我的默认区域设置为公共。我想永久将 p2p1 设置为可信。

为了实现这一点,我运行:

sudo firewall-cmd --permanent --change-zone=p2p1 --zone=trusted

之后我得到这个:

The interface is under control of NetworkManager, setting zone to 'trusted'.
success

(我有网络计划控制我的网络。)为了检查一切是否正常,我执行以下操作:

sudo firewall-cmd --get-active-zones
public
  interfaces: eth0
trusted
  interfaces: p2p1

但重启后一切都消失了。我怎样才能制作这根棍子?

更新:我发现“要永久分配以太网0到内部区域的网络接口(在 /etc/firewalld/zones 目录中创建一个名为internal.xml 的文件...”

root@me:~# nmcli con show | grep p2p1
netplan-p2p1  44db1fb7-b83f-36aa-8dd1-faa6fb97f6c4  ethernet  p2p1   
p2p1          3ad65062-db85-4ba6-9104-76644e78a5c4  ethernet  --     
p2p1          c3297794-7641-4033-9f68-156f26ffe024  ethernet  --     
root@me:~# nmcli con mod "netplan-p2p1" connection.zone trusted
root@me:~# nmcli con up "netplan-p2p1"
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)

...上面的调用改变了点对点1到区域=受信任。但同样的问题——它没有粘住。

我使用的是 Ubuntu 18.10 系统,因此按照建议添加配置文件这里不起作用。不确定,但我假设我需要在“/etc/network/if-up.d”文件夹中添加一些脚本。

更新2:netplan 配置文件 01-netcfg.yaml

network:
  version: 2
  renderer: NetworkManager
  ethernets:
#   WAN
    eth0:
        dhcp4: no
        dhcp6: no
        addresses: [76.80.54.221/29]
        gateway4: 76.80.54.217
        nameservers:
            addresses: [209.18.47.61,209.18.47.62]
#   LAN
    p2p1:
        dhcp4: no
        dhcp6: no     
        addresses: [192.168.1.99/24]
        gateway4: 192.168.1.100

答案1

我终于明白了。

zone-for-p2p1我在目录中添加了一个脚本文件/etc/network/if-up.d

zone-for-p2p1脚本文件内容:

#!/bin/sh
#
# sets zone for p2p1 adapter to "trusted"
# to find out adapter name run "nmcli con show | grep p2p1"
#
nmcli con mod "netplan-p2p1" connection.zone trusted

然后我还确保该文件具有执行权限:

sudo chmod +x /etc/network/if-up.d/zone-for-p2p1

现在重新启动,脚本会将正确的区域分配给适配器。这个帖子帮我添加了脚本。

答案2

由于您的界面由 控制,因此您可以直接使用永久设置区域来NetworkManager操作连接设置:nmcli

sudo nmcli connection modify p2p1 connection.zone trusted

此命令的默认行为是以持久方式进行更改,该更改将在重新启动后保留。

答案3

我找到了一个博客文章这似乎相关。也许尝试重新启动防火墙:

systemctl restart firewalld.service

这应该在添加规则之后和重新启动之前完成。

答案4

这是一个解决方案乌班图18.04与一个如果向上脚本和防火墙命令工具 (nmcli 由于某种原因无法工作

  1. 成为 root 并创建具有执行权限的 if-up 文件

    sudo su -
    touch /etc/network/if-up.d/p2p1-trusted && chmod +x $_
    
  2. 输入以下内容并保存文件

    #!/bin/sh
    
    # check if script is executed for the interface we need
    if [ "$IFACE" != "p2p1" ]; then
        exit 0
    fi
    firewall-cmd --zone=trusted --change-interface="$IFACE"
    
  3. 重启

  4. 核实

    $ sudo firewall-cmd --get-active-zones
    trusted
      interfaces: p2p1
    public
      interfaces: wlp1s0
    

相关内容