本家で配布されている各ディストリビューションの内容と、クラウドサーバー上で利用できる同じ名前のイメージとで、初期状態でインストールされているパッケージや設定などの内容に差分があるものがよくあります。
こういったのはただクラウドサーバー提供者の好み…というわけではなく、各クラウド環境で動かすにあたってOSを最適な状態にしておくためにカスタムが入っていることも多いようです。
最近自分が使用を始めたKagoya CloudのOpen VZ(Dockerのようなコンテナ型のVPS)のサービスで提供されているCentOS 7 イメージも、僕が把握している中でも下記のような違いがあります。
- デフォルト状態でrootアカウントしかない
- cronがインストールされていない。
- sudoがインストールされていない。
- Firewalldではなくiptablesがファイアウォールとしてデフォルトでインストールされている。
このうち、今回はiptablesを停止、自動起動無効化後、Firewalldをインストールしようと試みました。
結果としては、FirewalldはKagoya Cloud上のOpenVZでは動作しませんでした。
systemctl stop iptables
systemctl disable iptables
yum -y install firewalld
systemctl start firewalld
systemctl enable firewalld
ここまでやれば通常はfirewalldの起動自体は無事にできるはずなのですが、OpenVZ上ではすぐにサービスが停止してしまう状況。
systemctl status firewalld
コマンドで状態を確認したところ
# service firewalld status -l
Redirecting to /bin/systemctl status -l firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead) since 火 2020-02-11 23:48:29 JST; 10h ago
Docs: man:firewalld(1)
Main PID: 2404 (code=exited, status=0/SUCCESS)
2月 11 23:48:29 xxxx.kagoya.net systemd[1]: Starting firewalld - dynamic firewall daemon...
2月 11 23:48:29 xxxx.kagoya.net systemd[1]: Started firewalld - dynamic firewall daemon.
2月 11 23:48:29 xxxx.kagoya.net firewalld[2404]: WARNING: ipset not usable, disabling ipset usage in firewall.
2月 11 23:48:29 xxxx.kagoya.net firewalld[2404]: ERROR: Failed to load nf_conntrack module: modprobe: ERROR: could not find module by name='nf_conntrack'
modprobe: ERROR: could not insert 'nf_conntrack': Function not implemented
modprobe: ERROR: Error running install command for nf_conntrack
modprobe: ERROR: could not insert 'nf_conntrack': Operation not permitted
2月 11 23:48:29 xxxx.kagoya.net firewalld[2404]: ERROR: Raising SystemExit in run_server
どうやら’nf_conntrack’というカーネルモジュールが利用できずに失敗しているようです。
OpenVZをはじめとするコンテナ型仮想環境は、ホストOSのカーネル部分のみ共有する構造となっていますが、カーネルモジュールの追加はこのカーネル部分を操作することになるので、利用者側には権限がありません。よってこの環境のOpenVZ上からはFirewalldが起動できないということになります。
OpenVZは起動がはやかったり、スペックアップが容易であったりと利点もたくさんあるのですが、カーネルを共有していることによる制限は、利用する際は頭に入れておいた方がよさそうです。