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.

Catch-22와 약간 비슷합니다!

이 문제를 해결하는 가장 간단한 방법은 다음 두 커널 모듈을 로드하여 부팅하는 것입니다.

  • 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그런 다음 누락된 파일을 생성하기 위해 a를 실행하여 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가 존재하는지 확인했습니다.

인용하다

관련 정보