ファイアウォールとゾーンの私の以前の経験不完全です。
- 指定地域を通じて
nmcli
ただ、確認、/etc/sysconfig/network-scripts/ifcfg-*
確認設定の設定いいえ再起動すると、/etc/firewalld/zones/
両方のインターフェイスがデフォルト領域に配置されます。 - 指定地域を通じて
firewalld-cmd --permanent
ただ、確認、/etc/firewalld/zones/
確認設定の設定いいえ再起動すると、/etc/sysconfig/network-scripts/ifcfg-*
両方のインターフェイスがデフォルト領域に配置されます。 - これら 2 つのコマンドを使用してゾーンを指定し、2 つのファイルセットの設定がまだ 2 つのインターフェイスをプライマリゾーンに残していることを確認します。
何これらのファイルはシャットダウン/開始中にリセットされます。
答え1
これは追跡されますここ問題の一時的な解決策について詳しく説明しましたが、ここでも書き留めます。
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
これまでに私が持っていた唯一の問題は、ifcfg-*.oldファイルが/etc/sysconfig/network-scripts/にあるときにnetwork.serviceを再起動しようとしている場合です。ただし、再起動するとこの問題が解決する可能性があります。私はネットワークサービスを使用していないので、今はこの一時的な修正を使って生活することができます。
答え2
私はファイルZONE=
でのみ設定しようとしましたが、再起動した後は常にこの方法が効果的でした。ifcfg-*
試してみたかどうかわかりません。ただファイルを編集しましたが、ifcfg-*
これが私に役立つので、答えとしてお勧めします。
答え3
Ansibleを使用してインターフェイス領域を変更するとき、CentOS 7と8で非常に似た動作を見ました。 @user136881の回答に記載されている質問が次に移動されました。ここ。修正されたと推定されていますが、Ansibleのファイアウォールモジュールを使用してインターフェイスを別のゾーンに移動すると、これらのゾーンの変更はファイアウォールの再起動後に戻ったことがわかりました。
@charleyがコメントしたように、/etc/sysconfig/network-scripts/ifcfg-*
ファイルを編集してください(systemctl restart NetworkManager
申請するには必要です)。
だから私はこれをやめました:
- name: Set interface for internal zone
ansible.posix.firewalld:
interface: "{{ internal_nic }}"
state: enabled
zone: "{{ internal_zone }}"
immediate: yes
permanent: yes
そしてこれを始めましょう:
- name: Set interface for internal zone
ansible.buitin.lineinfile:
path: /etc/sysconfig/network-scripts/ifcfg-{{ internal_nic }}
regexp: '^ZONE='
line: 'ZONE="{{ internal_zone }}"'
notify: Restart NetworkManager