成人式も終わりそろそろ、学生の皆さんは受験ですね。
さて、私はそんなことをそっちのけでLinuxの記事をあげちゃいます。

というのも、VNCでお家クラウド(クラウドと言っていいかどうか…)しようとiptablesを設定しようと思ったら、/etc/init.d/iptablesが無い!!
で、Fedora 15からinitスクリプトはsystemDに移行だよんって事なんで、ここで軽くまとめておきます。

なお、ここでうつコマンドは基本的には管理者権限かsudoかで。

Fedora25ではfirewalldに移行されたのでiptablesサービスは存在しません。(2016年12月21日)

iptablesのインストール

普通にFedoraをインストールしていれば、iptablesはインストールされているはずですが、念の為。

yum install iptables

で、ちゃんとインストールされているか確認するには、

rpm -q iptables

と打ってみる。

iptables-1.4.12-2.fc16.x86_64

なんて、出ます。バージョン名やx86_64がi686になってても気にしない、木にしない。 で、

rpm -ql iptables|head

とiptablesパッケージに含まれるファイルを呼び出してみると、

/bin/iptables-xml
/etc/sysconfig/ip6tables-config
/etc/sysconfig/iptables-config
/lib/systemd/system/ip6tables.service
/lib/systemd/system/iptables.service
/lib64/libip4tc.so.0
/lib64/libip4tc.so.0.0.0
/lib64/libip6tc.so.0
/lib64/libip6tc.so.0.0.0
/lib64/libipq.so.0

なんてあって、iptables.serviceなんてものが/lib/systemd以下にあったりするので、これをsystemdでいじるんだと思う。

systemDを使ったサービスのコントロール

systemDを使ったサービスのコントロールをしてみましょー。 /etc/inittabを書き換えるのに相当するランレベルの変更方法は今回はお預け。

サービスのコントロール

まずはサービスの起動関係を弄ってみましょう。 起動はiptablesはしてるはずなんで、まずは停止から。

停止

停止するには

systemctl stop iptabes.service

ちなみに/etc/init.d/iptables stopは使えませんが、 これまでのsysV系の方法である、

service iptables stop

は使えます。

起動

systemdを使って、iptablesを即座に起動する方法は、

systemctl start iptables.service

とする。

service iptables start

とすることも可能。

再起動

iptablesを即座に再起動するには、

systemctl restart iptables.service

restartはstartの時と同様、sysV系の方法では、

service iptables restart

とします。

Fedora起動時の設定

起動

Fedoraが起動時にiptablesが起動するには、

systemctl enable iptables.service

とします。そして、これまでのsysV系の方法では、

chkconfig iptables on

とすれば、起動時にiptablesが起動されます。

停止

Fedoraが起動時にiptablesが起動しないようにするには、

systemctl disable iptables.service

とします。そして、これまでのsysV系の方法では、

chkconfig iptables off

とすれば、起動時にiptablesが起動しません。

サービス起動一覧

chkconfig

sysV系のコマンドで使っていた、

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.

ceph           	0:off	1:off	2:off	3:off	4:off	5:off	6:off
ebtables       	0:off	1:off	2:off	3:off	4:off	5:off	6:off
iscsi          	0:off	1:off	2:off	3:on	4:on	5:on	6:off
iscsid         	0:off	1:off	2:off	3:on	4:on	5:on	6:off
libvirt-guests 	0:off	1:off	2:on	3:on	4:on	5:on	6:off
libvirtd       	0:off	1:off	2:on	3:on	4:on	5:on	6:off
livesys        	0:off	1:off	2:off	3:on	4:on	5:on	6:off
livesys-late   	0:off	1:off	2:off	3:on	4:on	5:on	6:off
netconsole     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
netfs          	0:off	1:off	2:off	3:on	4:on	5:on	6:off
network        	0:off	1:off	2:off	3:off	4:off	5:off	6:off
sandbox        	0:off	1:off	2:off	3:off	4:off	5:on	6:off
svnserve       	0:off	1:off	2:off	3:off	4:off	5:off	6:off
vboxballoonctrl-service	0:off	1:off	2:on	3:on	4:on	5:on	6:off
vboxdrv        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
vboxweb-service	0:off	1:off	2:on	3:on	4:on	5:on	6:off
vmware         	0:off	1:off	2:on	3:on	4:off	5:on	6:off
vmware-USBArbitrator	0:off	1:off	2:off	3:off	4:off	5:off	6:off
xenconsoled    	0:off	1:off	2:off	3:on	4:on	5:on	6:off
xend           	0:off	1:off	2:off	3:on	4:on	5:on	6:off
xendomains     	0:off	1:off	2:on	3:on	4:on	5:on	6:off

と表示されて、iptablesがいません。表示されてるものはvmwareやVirtual box、Xenなど仮想化関係のものがほとんど。つまり、まだsystemdに対応していないかサードパーティのアプリケーションだからsysV系のものばかりだったりする。

で、もちろん、

chkconfig --list|grep iptables

とすると、

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

なんて言われてiptablesの起動時のon/off状況は表示されず、systemd使ってよ!!って言われるのん。

ただし、chkconfigをつかっても

chkconfig iptables

とすると、

Note: Forwarding request to 'systemctl is-enabled iptables.service'.
enabled

と、注意書きがあるけど、enabledと出て起動時にiptablesが起動することは確認できる。

systemd

systemdを使ってサービスが起動する設定になっているかどうかは、

systemctl is-enabled iptables.service

として、

enabled

となっていれば、有効に。

disabled

になっていたら、起動時にサービスが起動しない設定。

サービス起動状況の一覧

systemdを使って、起動しているサービス一覧を見るには、

systemctl --full list-units --type=service

とします。

--fullは無くてもいいけど肝心のサービス名が省略されて見えなくなるので。

で、このコマンドの結果は、

UNIT                                 LOAD   ACTIVE SUB     JOB DESCRIPTION
abrt-ccpp.service                    loaded active exited      Install ABRT core
abrt-oops.service                    loaded active running     ABRT kernel log w
abrt-vmcore.service                  loaded active exited      Harvest vmcores f
abrtd.service                        loaded active running     ABRT Automated Bu
accounts-daemon.service              loaded active running     Accounts Service
atd.service                          loaded active running     Job spooling tool
auditd.service                       loaded active running     Security Auditing
avahi-daemon.service                 loaded active running     Avahi mDNS/DNS-SD
console-kit-daemon.service           loaded active running     Console Manager
console-kit-log-system-start.service loaded active exited      Console System St
crond.service                        loaded active running     Command Scheduler
cups.service                         loaded active running     CUPS Printing Ser
dbus.service                         loaded active running     D-Bus System Mess
fcoe.service                         loaded active running     Open-FCoE Initita
fedora-loadmodules.service           loaded active exited      Load legacy modul
fedora-readonly.service              loaded active exited      Configure read-on
fedora-storage-init-late.service     loaded active exited      Initialize storag
fedora-storage-init.service          loaded active exited      Initialize storag
fedora-wait-storage.service          loaded active exited      Wait for storage 
ip6tables.service                    loaded active exited      IPv6 firewall wit
iptables.service                     loaded active exited      IPv4 firewall wit
irqbalance.service                   loaded active running     irqbalance daemon

と、ちゃんとiptables.serviceが表示されてactiveになってます。iptables以外のサービスもちゃんと表示されてますね^^;

systemctl --full list-units --type=service|grep iptables

とgrepを使うと、

iptables.service                     loaded active exited      IPv4 firewall with iptables

とiptablesが有効になってることが一目瞭然に。

まとめ

さて、systemdを使ったサービスの制御はこれだけ知っていれば十分かと。たまに、@付きのサービスがあるのですがこれはまた別で解説します。Fedora 17ではsystemdにinitが完全移行だそうなので皆さんこの記事を読んで千本ノックしてください。恐らく、systemdに移行してもserviceコマンドやchkconfigコマンドの--list無しなら使えるとは思いますが、今のうちに習得しておきましょー。

参考:Fedora公式wiki Systemd

Linuxエンジニア養成読本 [仕事で使うための必須知識&ノウハウ満載!] (Software Design plus)
Linuxエンジニア養成読本 [仕事で使うための必須知識&ノウハウ満載!] (Software Design plus)
クチコミを見る