CentOS7でのiptables設定方法について

20 Sep 2014, 18:03 By mosuke5

こんにちは、@mosuke5です。
最近、VPSのOSをCentOS7にしましたが、なかなか手付かずでiptablesの設定を放置していました。 sshの最低限の設定はしていたましたが、ほんとうに良くないですので、みなさんはこういうことがないように気をつけてください。
久しぶりに手が空いたので設定しようとしましたが、そもそも /etc/sysconfig/iptables がない。 CentOS7からのsystemctlでiptablesのサービスを確認してもでてこない。さてどうやって設定したらいいのかCentOS6の脳みそで困ってしまいました。

# systemctl status iptables
iptables.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

というわけで、調べてみると、そもそもCentOS7からはfirewalldが標準になっており、iptablesは入っていないとのことです。そのため、iptablesを利用する場合には、iptables.serviceをインスールしないといけません。 さらに、firewalldがデフォルトでオンになっているからオフにしないと競合してしまいます。

本当は、firewalldの設定方法を覚えたほうがいいですが、今までのやり方をそのままやりたい人むけにCentOS7でのiptablesの設定方法を残します。

まずは、iptables-serviceをインスールして、firewalldを停止、iptablesを起動します。

# yum install iptables-services
# systemctl status firewalld
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
   Active: active (running) since Sat 2014-09-20 17:47:11 JST; 4s ago
 Main PID: 11162 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─11162 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid


# systemctl stop firewalld
# systemctl status firewalld
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
   Active: inactive (dead)

#systemctl disable firewalld
#systemctl enable iptables
#systemctl start iptables
#systemctl status iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled)
   Active: inactive (dead) since Sat 2014-09-20 17:47:10 JST; 2min 48s ago
  Process: 11139 ExecStop=/usr/libexec/iptables/iptables.init stop (code=exited, status=0/SUCCESS)
  Process: 10096 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
 Main PID: 10096 (code=exited, status=0/SUCCESS)
....

iptablesの設定はいつもどおり。
CentOS7の新しいコマンドに戸惑ったので一部メモを以下に残します。

service, chkconfigコマンドはsystemctlコマンドへ

service, chkconfigコマンドは推奨されずsystemctlコマンドへ切り替わった。
試しにchkconfigコマンドを利用すると…

# chkconfig --list
Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

iprdump        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
iprinit        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
iprupdate      	0:off	1:off	2:on	3:on	4:on	5:on	6:off
netconsole     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
pmcd           	0:off	1:off	2:off	3:off	4:off	5:off	6:off
pmie           	0:off	1:off	2:off	3:off	4:off	5:off	6:off
pmlogger       	0:off	1:off	2:off	3:off	4:off	5:off	6:off
pmmgr          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
pmproxy        	0:off	1:off	2:off	3:off	4:off	5:off	6:off
pmwebd         	0:off	1:off	2:off	3:off	4:off	5:off	6:off

次のようなメッセージが出力されます。

If you want to list systemd services use 'systemctl list-unit-files'.

systemdのサービスを表示したければ、systemctl list-unit-filesを利用せよとのこと。 試しに打つと以下のように表示される

# systemctl list-unit-files
UNIT FILE                                   STATE
proc-sys-fs-binfmt_misc.automount           static
dev-hugepages.mount                         static
dev-mqueue.mount                            static
proc-fs-nfsd.mount                          static
proc-sys-fs-binfmt_misc.mount               static
sys-fs-fuse-connections.mount               static
sys-kernel-config.mount                     static
sys-kernel-debug.mount                      static
tmp.mount                                   disabled
var-lib-nfs-rpc_pipefs.mount                static
brandbot.path                               disabled
....
 

サービスの起動・停止・状態確認などはこちらでできます。

# service <service name> <start/stop/restart/status>
 ↓
# systemctl <start/stop/restart/status> <service name>

そして、サービスの起動オプションの設定はこちらです。

# chkconfig <service name> <on/off>
   ↓
# systemctl <enable/disable> <service name>

慣れてしまえば、CentOS7の新しいコマンド体系、systemdも怖くないです。
これからのことを考えて、いちはやく覚えてしまいましょう。

追記(2020/12/16)

先日、2020年12月8日に、CentOSプロジェクトの方針変更が発表されました。今までのRHELのリビルドとして活躍してきたCentOSは近く終わりを告げ、Red Hat Enterprise Linuxの出荷前のパッケージを共有するCentOS Streamに注力することが表明されました。こちらについては、さまざまな誤解が流れていたり、不安に思っている方も多いかと思います。 CentOS Streamとはなんなのか、以下が非常にわかりやすいので、正しい知識をつけて向き合っていってください。

フィードバック・相談(β)

本記事に対して、執筆者にフィードバックや聞きたいことがあればこちらのフォームからご記入ください。執筆者に問い合わせてみる

このエントリーをはてなブックマークに追加