mit der minimalen Installation von CentOS 6.x kann ich iptables nicht starten

mit der minimalen Installation von CentOS 6.x kann ich iptables nicht starten

Ich arbeite derzeit an einem Ansible-Playbook, das versucht, die iptables-Firewall auf einer minimalen CentOS 6.8-Installation zu installieren und zu starten. Ich mache Folgendes in 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

Dies führt jedoch zu folgendem:

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"}

Antwort1

Dies scheint also ein Problem zu sein, das nach CentOS 6.5 auftrat. Es gibt dazu dieses Kundenportalthema mit dem Titel:iptables konnte in Red Hat Enterprise Linux 6.6 und höheren Versionen der Minimalinstallation nicht gestartet werden..

Das direkte Problem ist das Fehlen der /etc/sysconfig/ip*Dateien, die der iptables-Dienst zum Starten benötigt. Sie können die Erstellung dieser Dateien erzwingen, indem Sie einen ausführen. service iptables saveDies schlägt jedoch auch sofort fehl, da zum Ausführen Kernelmodule erforderlich sind service iptables save.

Das ist ein bisschen eine Zwickmühle!

Die einfachste Möglichkeit, dies zu umgehen, besteht darin, das Laden dieser beiden Kernelmodule zu veranlassen:

  • iptables_filter
  • ip_tabellen

indem Sie einen iptablesBefehl ausführen:

$ 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

Sie sehen die jetzt geladenen Module:

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

Anschließend können Sie service iptables savedie fehlenden Dateien erstellen lassen und so den iptables-Dienst starten.

Ansible

Das Obige ist interessant, lässt sich aber nicht wirklich benutzerfreundlich über Ansible durchführen, ohne die Hilfe der Module command:und in Anspruch zu nehmen shell:.

Wir können das modules:Modul jedoch in Ansible verwenden, um das Laden/Entladen von Kernelmodulen zu gewährleisten.

Zum Beispiel:

### 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

Oben stellen wir sicher, dass der iptable_filter vorhanden ist, bevor wir versuchen, den Speichervorgang durchzuführen.

Verweise

verwandte Informationen