CentOS 6.x 최소 설치로 iptables를 시작할 수 없습니다

CentOS 6.x 최소 설치로 iptables를 시작할 수 없습니다

저는 현재 CentOS 6.8 최소 설치에 iptables 방화벽을 설치하고 시작하려고 시도하는 Ansible 플레이북을 작업 중입니다. 저는 Ansible에서 다음을 수행하고 있습니다.

### sets up FW pkgs
- name: Install FW packages
  hosts: elasticsearch-servers
  become: yes

  tasks:
    - name: install ipset
      yum: name={{ item }} state=present
      with_items:
        - ipset
        - iptables

    - name: start iptables service
      service: name=iptables state=started enabled=yes

그러나 이로 인해 다음과 같은 결과가 발생합니다.

TASK [start iptables service] **************************************************
fatal: [10.40.3.246]: FAILED! => {"changed": false, "failed": true, "msg": "iptables: No config file.[WARNING]\r\n"}
fatal: [10.40.3.254]: FAILED! => {"changed": false, "failed": true, "msg": "iptables: No config file.[WARNING]\r\n"}
fatal: [10.40.3.164]: FAILED! => {"changed": false, "failed": true, "msg": "iptables: No config file.[WARNING]\r\n"}

답변1

따라서 이는 CentOS 6.5 이후에 나타난 문제인 것으로 보입니다. 다음과 같은 고객 포털 주제가 있습니다.Red Hat Enterprise Linux 6.6 이상 버전의 최소 설치에서 iptables를 시작하지 못했습니다..

직접적인 문제는 /etc/sysconfig/ip*iptables 서비스를 시작하는 데 필요한 파일이 없다는 것입니다. 를 실행하여 이러한 파일을 강제로 생성할 수 있지만 service iptables save기본적으로 이 파일도 실패합니다. 를 실행하려면 커널 모듈이 필요하기 때문입니다 service iptables save.

이것은 약간의 캐치 22입니다!

이 문제를 해결하는 가장 쉬운 방법은 다음 2개의 커널 모듈을 로드하도록 유도하는 것입니다.

  • iptables_필터
  • IP_테이블

다음 명령 을 실행하여 iptables:

$ iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

이제 모듈이 로드된 것을 볼 수 있습니다:

$ lsmod | grep iptable
iptable_filter          2793  0
ip_tables              17831  1 iptable_filter

service iptables save그런 다음 누락된 파일을 생성하여 iptables 서비스를 시작할 수 있습니다.

앤서블

command:위의 내용은 흥미롭지만 및 모듈 의 도움을 받지 않고 Ansible을 통해 수행하기에는 그다지 친숙하지 않습니다 shell:.

그러나 modules:Ansible의 모듈을 사용하여 커널 모듈의 로드/언로드를 보장할 수 있습니다.

예를 들어:

### sets up FW pkgs
- name: Install FW packages
  hosts: elasticsearch-servers
  become: yes

  tasks:
    - name: install ipset
      yum: name={{ item }} state=present
      with_items:
        - ipset
        - iptables

    # these next 2 tasks work around issue with iptables RPM in CentOS 6.5+
    # REF: https://access.redhat.com/solutions/1361093
    - name: load ip_tables kernel module
      modprobe: name=iptable_filter state=present

    - name: initial save iptables generate files
      command: /sbin/service iptables save
      args:
        warn: false

    - name: start iptables service
      service: name=iptables state=started enabled=yes

위에서는 저장을 시도하기 전에 iptable_filter가 있는지 확인합니다.

참고자료

관련 정보