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に少し似ています!

この問題を解決する最も簡単な方法は、次の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その後、欠落しているファイルを生成するために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が存在することを確認しました。

引用する

おすすめ記事