成人式も終わりそろそろ、学生の皆さんは受験ですね。
さて、私はそんなことをそっちのけで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)
クチコミを見る
コメント