Firewalld

firewalld 區域設置無法在重新啟動後繼續存在

  • January 17, 2017

我以前使用 firewalld 和 zone 的冒險是不完整的。

  • nmcli 通過only指定區域、驗證設置/etc/sysconfig/network-scripts/ifcfg-*和驗證設置不在重新啟動時/etc/firewalld/zones/仍會將兩個介面置於預設區域中。
  • firewalld-cmd --permanent 通過only指定區域、驗證設置/etc/firewalld/zones/和驗證設置不在重新啟動時/etc/sysconfig/network-scripts/ifcfg-*仍會將兩個介面置於預設區域中。
  • 通過兩個命令指定區域並驗證兩個文件集中的設置仍會將兩個介面置於預設區域中。

關閉/啟動過程中的某些內容正在重置這些文件*。*

這在此處進行了跟踪,我詳細介紹了該問題的臨時修復,但我也會在這裡寫下它:

我在 CentOS 7.2.1511 和 CentOS 7.3.1611 上確認了這種行為。

無論我使用什麼 NetworkManager 或 firewalld 命令組合來保持區域的持久性,似乎都沒有任何效果。我嘗試了上面列出的“解決方法”,但仍然沒有。這是我為我的案例提出的解決方法。

我有以下介面應該永久地成為相應區域的一部分:

  • enp0s3 - 公共
  • enp0s8 - 內部
  • enp0s9 - 外部

我創建了一個 systemd 單元文件來臨時解決我的問題: /etc/systemd/system/myzones.service

[Unit]
Description=Custom Zones
After=network.target network.service

[Service]
Type=oneshot
User=root
Group=root
ExecStart=/bin/nmcli connection modify enp0s3 connection.zone public
ExecStart=/bin/nmcli connection modify enp0s8 connection.zone internal
ExecStart=/bin/nmcli connection modify enp0s9 connection.zone external

[Install]
WantedBy=multi-user.target

然後我啟用了服務並重新啟動

# systemctl daemon-reload
# systemctl enable myzones.service
# reboot

到目前為止,我遇到的唯一問題是,如果 /etc/sysconfig/network-scripts/ 中有 ifcfg-*.old 文件,您是否嘗試重新啟動 network.service。但是重新啟動會解決這個問題。我不使用網路服務,所以我現在可以接受這個臨時修復。

引用自:https://unix.stackexchange.com/questions/336757