[CentOS 7] Systemd
CentOS 7では、initに替わってsystemdがサービスを管理するようになった。
サービス管理のコマンドもchckconfigからsystemdctlに変更となっている。
サービスの一覧表示
# systemctl -t service list-unit-files UNIT FILE STATE abrt-ccpp.service enabled abrt-oops.service enabled abrt-pstoreoops.service disabled abrt-vmcore.service enabled abrt-xorg.service enabled abrtd.service enabled accounts-daemon.service enabled alsa-restore.service static alsa-state.service static alsa-store.service static anaconda-direct.service static anaconda-nm-config.service static anaconda-noshell.service static anaconda-shell@.service static anaconda-sshd.service static anaconda-tmux@.service static anaconda.service static arp-ethers.service disabled atd.service enabled auditd.service enabled auth-rpcgss-module.service static ~ snip ~
「STATE」の意味は以下の通り。
enabled | 自動起動が有効 |
disabled | 自動起動が無効 |
static | 起動が必須のサービスで設定変更はできない |
特定のサービスのステータス確認
# systemctl status firewalld.service firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) since Tue 2016-01-19 17:57:39 JST; 1h 13min ago Main PID: 24714 (firewalld) CGroup: /system.slice/firewalld.service `-24714 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
起動設定だけであれば、以下のコマンドでも確認できる。
# systemctl is-enabled firewalld.service enabled
サービスの停止
# systemctl stop firewalld.service # systemctl status firewalld.service firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: inactive (dead) since Tue 2016-01-19 19:12:55 JST; 42s ago Process: 24714 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS) Main PID: 24714 (code=exited, status=0/SUCCESS)
サービスの強制停止
# systemctl kill firewalld.service
サービスの起動
# systemctl start firewalld.service # systemctl status firewalld.service firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) since Tue 2016-01-19 19:14:25 JST; 23s ago Main PID: 26347 (firewalld) CGroup: /system.slice/firewalld.service `-26347 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
サービスの再起動
# systemctl restart firewalld.service
サービスの自動起動の無効化
# systemctl disable firewalld.service rm '/etc/systemd/system/basic.target.wants/firewalld.service' rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service' # systemctl is-enabled firewalld.service disabled
サービスの自動起動の有効化
# systemctl enable firewalld.service ln -s '/usr/lib/systemd/system/firewalld.service' '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service' ln -s '/usr/lib/systemd/system/firewalld.service' '/etc/systemd/system/basic.target.wants/firewalld.service' # systemctl is-enabled firewalld.service enabled
[CentOS 7] ターゲット(CentOS 6までのランレベル相当)
CentOS 7では、CentOS 6までのランレベルが廃止され、新たに「ターゲット」が導入された。
以下にCentOS 6の各ランレベルに相当するCentOS 7のターゲットを記載する。
CentOS6のランレベル | CentOS7のターゲット | |
---|---|---|
システム停止 | 0 | poweroff.target |
シングルユーザモード | 1 | rescue.target |
マルチユーザモード | 3 | multi-user.target |
グラフィカル | 5 | graphical.target |
リブート | 6 | reboot.target |
デフォルトのターゲットの確認
# systemctl get-default multi-user.target
デフォルトのターゲットの変更
# systemctl set-default graphical.target rm '/etc/systemd/system/default.target' ln -s '/usr/lib/systemd/system/graphical.target' '/etc/systemd/system/default.target' # systemctl get-default graphical.target
ターゲットの変更
# runlevel N 3 # systemctl isolate graphical.target # runlevel 3 5
[CentOS 7] ネットワーク関連コマンド
CentOS7では、最小構成でインストールした場合に「ifconfig」や「netstat」などのネットワーク関連のコマンドが利用できない。「net-tools」パッケージをインストールすれば利用可能だが、今後は「net-tools」は廃止となる予定であるため、「net-tools」パッケージから置き換わる「iproute」パッケージで提供されるコマンド群(「ip」や「ss」コマンドなど)を利用した方が良い。
IPアドレスの確認 (ip addr / ip a)
CentOS6の「ifconfig」に相当
# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:50:56:a8:74:93 brd ff:ff:ff:ff:ff:ff inet 192.168.40.102/24 brd 192.168.40.255 scope global ens32 valid_lft forever preferred_lft forever
ルーティングテーブルの確認 (ip route / ip r)
CentOS6の「route」に相当
# ip r default via 192.168.40.1 dev ens32 proto static metric 100 192.168.40.0/24 dev ens32 proto kernel scope link src 192.168.40.102 metric 100
ARPテーブルの確認 (ip neigh / ip n)
CentOS6の「arp」に相当
# ip n 192.168.40.1 dev ens32 lladdr 00:00:0c:07:ac:0a REACHABLE
TCPソケットの状態確認 (ss -nat)
CentOS6の「netstat -nat」に相当
# ss -nat State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 127.0.0.1:199 *:* LISTEN 0 128 *:22 *:* ESTAB 0 48 192.168.40.102:22 10.0.0.1:51844 LISTEN 0 128 :::22 :::*
UDPソケットの状態確認 (ss -nau)
CentOS6の「netstat -nau」に相当
# ss -nau State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:123 *:* UNCONN 0 0 *:161 *:* UNCONN 0 0 127.0.0.1:323 *:* UNCONN 0 0 *:5353 *:* UNCONN 0 0 *:58881 *:* UNCONN 0 0 :::123 :::*
インターフェースの統計情報の確認 (ip -s l)
CentOS6の「netstat -i」に相当
# ip -s l 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 RX: bytes packets errors dropped overrun mcast 1258261 16208 0 0 0 0 TX: bytes packets errors dropped carrier collsns 1258261 16208 0 0 0 0 2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:50:56:a8:74:93 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 21242989 123013 0 0 0 0 TX: bytes packets errors dropped carrier collsns 2487305 17342 0 0 0 0
デバイスの状態確認 (nmcli device / nmcli d)
# nmcli d DEVICE TYPE STATE CONNECTION ens32 ethernet connected ens32 lo loopback unmanaged --
詳細なデバイスの状態確認 (nmcli device show / nmcli d show)
# nmcli d show GENERAL.DEVICE: ens32 GENERAL.TYPE: ethernet GENERAL.HWADDR: 00:50:56:A8:74:93 GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: ens32 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: 192.168.40.102/24 IP4.GATEWAY: 192.168.40.1 IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4 IP6.GATEWAY: GENERAL.DEVICE: lo GENERAL.TYPE: loopback GENERAL.HWADDR: 00:00:00:00:00:00 GENERAL.MTU: 65536 GENERAL.STATE: 10 (unmanaged) GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- IP4.ADDRESS[1]: 127.0.0.1/8 IP4.GATEWAY: IP6.GATEWAY:
インターフェースを指定するには、以下のようにインターフェース名を指定する。
# nmcli d show ens32 GENERAL.DEVICE: ens32 GENERAL.TYPE: ethernet GENERAL.HWADDR: 00:50:56:A8:74:93 GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: ens32 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: 192.168.40.102/24 IP4.GATEWAY: 192.168.40.1 IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4 IP6.GATEWAY:
インターフェースの接続状態の確認
# nmcli c NAME UUID TYPE DEVICE ens32 4b0cf375-fdb8-42a7-85af-674c0cc5ac54 802-3-ethernet ens32
インターフェースの停止 (nmcli connection down / nmcli c down)
CentOS6の「ifdown」に相当
# nmcli c down ens32
インターフェースの起動 (nmcli connection up / nmcli c up)
CentOS6の「ifup」に相当
# nmcli c up ens32
インターフェースの自動起動OFF
# nmcli c mod ens32 connection.autoconnect no # systemctl restart network
インターフェースの自動起動ON
# nmcli c mod ens32 connection.autoconnect yes # systemctl restart network
IPアドレスの設定
# nmcli c mod ens32 ipv4.addresses 10.10.10.2/24 # systemctl restart network
デフォルトゲートウェイの設定
# nmcli c mod ens32 ipv4.gateway 10.10.10.1 # systemctl restart network
DNSサーバの設定
# nmcli c mod ens32 ipv4.dns "8.8.8.8 8.8.4.4" # nmcli c mod ens32 ipv4.dns-search hogehoge.com # systemctl restart network
スタティックルートの設定
# nmcli c mod ens32 ipv4.routes "10.0.0.0/24 10.10.20.1" # systemctl restart network
NMTUIによるネットワーク設定
直観的な操作でネットワークの設定を行いたい場合は、NMTUIを利用することができる。
# nmtui
[CentOS 7] firewalld
CentOS7のファイアウォール機能の実装としては、これまで通りiptablesを利用しているが、iptablesの設定はiptablesサービスの代わりにfirewalldサービスを利用して行う。
firewalldサービスの代わりに、これまで通りiptablesサービスを利用してiptablesの設定をすることも可能。
iptablesの稼働状況の確認
iptablesサービスとfirewalldサービスは併用できないため。
iptables/ip6tablesサービスが稼働している場合は停止する。
# systemctl status iptables iptables.service Loaded: not-found (Reason: No such file or directory) Active: inactive (dead) # systemctl status ip6tables ip6tables.service Loaded: not-found (Reason: No such file or directory) Active: inactive (dead)
firewalldサービスの起動設定と稼働状態の確認
# systemctl status firewalld.service firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) since Wed 2016-01-06 15:26:22 JST; 1h 1min ago Main PID: 612 (firewalld) CGroup: /system.slice/firewalld.service `-612 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
稼働状態については以下のコマンドでも確認できる
# firewall-cmd --state running
現在の設定の確認
# firewall-cmd --list-all-zones block interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: dmz interfaces: sources: services: ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: drop interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: external interfaces: sources: services: ssh ports: masquerade: yes forward-ports: icmp-blocks: rich rules: home interfaces: sources: services: dhcpv6-client ipp-client mdns samba-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: internal interfaces: sources: services: dhcpv6-client ipp-client mdns samba-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: public (default, active) interfaces: ens32 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: trusted interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: work interfaces: sources: services: dhcpv6-client ipp-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
アクティブな設定のみ確認
# firewall-cmd --list-all public (default, active) interfaces: ens32 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
設定変更
デフォルトの設定ではすべての送信元からのSSHが許可されているが、特定の送信元からのみ許可するように変更する。
# firewall-cmd --permanent --zone=public --remove-service=ssh # firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept" # firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" accept" # firewall-cmd --reload # firewall-cmd --list-all public (default, active) interfaces: ens32 sources: services: dhcpv6-client ports: masquerade: no forward-ports: icmp-blocks: rich rules: rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept rule family="ipv4" source address="192.168.2.0/24" port port="22" protocol="tcp" accept
- 「--permanent」オプションを指定することで再起動後も設定が有効になる。
- 「--add-rich-rule」オプションを利用することで指定したソースIPアドレスからのみに限定するなど、きめ細かい設定を行うことが可能になる。
[CentOS 7] Ctrl+Alt+Deleteによる再起動の無効化
Ctrl+Alt+Deleteキーでサーバが再起動しないようにする。
# ln -s /dev/null /etc/systemd/system/ctrl-alt-del.target # ls -l /etc/systemd/system/ctrl-alt-del.target lrwxrwxrwx 1 root root 9 Jan 6 16:19 /etc/systemd/system/ctrl-alt-del.target -> /dev/null