89503


CentOS7 で firewalldコマンドを直接実行するとサービスに登録されずプロセスだけ起動するのはなぜ？  
firewalldを使用せず、別のファイアウォールでアクセス制限をしています。

[code]

    $firewalld
    
[/code]

を実行しました。  
エラーなどはなくコマンドが実行された反応でした。

[code]

    $systemctl status firewalld
    
[/code]

を実行すると

[code]

    Active: inactive (dead)
    
[/code]

しかし、ファイアウォールは起動していて外から80番ポートを通してApacheにアクセスできない状態でした。

[code]

    $ps -aux | grep firewalld
    
[/code]

を実行しました。

[code]

    root     30074  0.0  0.1 363100 31900 ?        Ssl  18:14   0:02 /usr/bin/python2 -Es /sbin/firewalld
    
[/code]

このプロセス番号をkillすることで、firewallは切れて再び80番ポートでアクセスできました。

systemctl statusでサービスの確認ではfairewalldが止まっていたので、なぜアクセスできないのか調査に時間を要してしまいました。

なぜプロセスだけ起動できるようになっているのでしょうか？

firewalldを使わないでアクセス制限をしている場合  
このような状態にならないためには

[code]

    enable -n firewalld
    
[/code]

が適切でしょうか？


CC BY-SA 4.0
2022-06-21T06:33:24.357
89500
2022-06-21T23:56:21.470
2022-06-21T23:56:21.470
53167
53167
question
linux centos
CentOS7 で firewalld を直接実行するとサービスに登録されずプロセスだけ起動するのはなぜ？


firewalld
に限らず、いわゆるデーモンとして動作するプログラムは本来、個別のコマンドで起動や停止を行うことができます。しかし、プログラムごとに操作方法は異なるため、Systemd
経由にすることで統一された操作を行う事が出来ます。

サービスへの登録はあくまで Systemd
が担っているので、直接起動されたプロセスについては勝手にサービスには登録されませんし、起動状態の関知も出来ません。

firewalld は Systemd 用の定義ファイル (=ユニットファイル) が予め用意されているので、基本的には `systemctl`
コマンド経由で有効・無効の切り替えや起動・停止の管理を行うことを推奨します。

[Enable and Disable
firewalld](https://firewalld.org/documentation/howto/enable-and-disable-
firewalld.html)

> firewalld provides an init script for systems using classic SysVinit and
> also a systemd service file.
[code]

>     systemctl unmask --now firewalld.service
>     systemctl enable --now firewalld.service
>  
[/code]

**参考:**  
[systemdとは](https://www.designet.co.jp/faq/term/?id=c3lzdGVtZA)


CC BY-SA 4.0
2022-06-21T07:37:20.750
89503
2022-06-21T07:37:20.750
3060
89500
answer