CentOS7でiptablesが動作してるかチェックするwebapiをgolangで作ってみた


はじめに

iptablesが動いてるかどうかを監視しようと思ったけど、stackdriverのプロセス監視とかで出来なかったのでヘルスチェックが出来るWEB APIを作ってみた。

CentOS7ではiptablesではなく、firewalldで制御する。

作ってみた

ソースは以下。(40行もしない程度の簡単なやつ)
https://github.com/HirokiSakonju/iptables-healthchecker

動作確認

コンパイルしたバイナリを配置して起動。

$ sudo ./iptables_checker &

普通に動作している状態

$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-07-24 10:10:57 UTC; 2min 56s ago
     Docs: man:firewalld(1)
 Main PID: 355 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─355 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Jul 24 10:10:56 localhost systemd[1]: Starting firewalld - dynamic firewall daemon...
Jul 24 10:10:57 localhost systemd[1]: Started firewalld - dynamic firewall daemon.

firewalldが落ちたとき

$ sudo systemctl stop firewalld
$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2018-07-24 10:55:41 UTC; 51s ago
     Docs: man:firewalld(1)
  Process: 355 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 355 (code=exited, status=0/SUCCESS)

Jul 24 10:10:56 localhost systemd[1]: Starting firewalld - dynamic firewall daemon...
Jul 24 10:10:57 localhost systemd[1]: Started firewalld - dynamic firewall daemon.
Jul 24 10:55:41 iptables-test systemd[1]: Stopping firewalld - dynamic firewall daemon...
Jul 24 10:55:41 iptables-test systemd[1]: Stopped firewalld - dynamic firewall daemon.