재부팅 후 방화벽 로케일 설정이 유지되지 않습니다.

재부팅 후 방화벽 로케일 설정이 유지되지 않습니다.

방화벽 및 영역에 대한 나의 이전 경험불완전합니다.

  • 지정된 지역을 통해nmcli 오직, 확인 /etc/sysconfig/network-scripts/ifcfg-*및 확인 설정 의 설정아니요다시 시작하면 /etc/firewalld/zones/두 인터페이스가 모두 기본 영역에 배치됩니다.
  • 지정된 지역을 통해firewalld-cmd --permanent 오직, 확인 /etc/firewalld/zones/및 확인 설정 의 설정아니요다시 시작하면 /etc/sysconfig/network-scripts/ifcfg-*두 인터페이스가 모두 기본 영역에 배치됩니다.
  • 이 두 명령을 통해 영역을 지정하고 두 파일 세트의 설정이 여전히 두 인터페이스를 기본 영역에 두는지 확인합니다.

무엇이러한 파일은 종료/시작 중에 재설정됩니다.

답변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

관련 정보