ShinobiLayer: SoftLayerの仮想サーバーを使ってRHEL7を学習する(1) - 環境概要確認

#はじめに
CentOS7/RHEL7は、ご存知の方も多いように、CentOS6/RHEL6までとはsystemdをはじめとしてガラリと変わっています。SoftLayerの仮想サーバー上で稼動するRHEL7はどうなっているかを（私が）探求するのが、この記事の目的です。

# OSバージョン

```
[root@myrhel07 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.1 (Maipo)

[root@myrhel07 ~]# uname -a
Linux myrhel07 3.10.0-229.4.2.el7.x86_64 #1 SMP Fri Apr 24 15:26:38 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux

```

# grub

RHEL7からは、ブートローダとしてGRUB2が利用されている。（UEFI搭載マシンとして認識されているのであれば、/boot/efi/EFI/redhat/grub.cfgにファイルがあるはずなので）BIOS搭載マシンとして認識されている。

```
[root@myrhel07 ~]# ls -l /boot/grub2/grub.cfg
-rw-r--r-- 1 root root 5443 May 20 21:05 /boot/grub2/grub.cfg

[root@myrhel07 ~]# ls -l /boot/efi/EFI/redhat/grub.cfg
ls: cannot access /boot/efi/EFI/redhat/grub.cfg: No such file or directory
```

#ブートパラメータ

```
[root@myrhel07 ~]# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-229.4.2.el7.x86_64 root=UUID=608f4353-a46c-4655-ac76-0fdad330c7d8 ro crashkernel=auto LANG=en_US.UTF-8 systemd.debug

```

#SELinux

SoftLayerの仮想サーバーでは、デフォルトでは無効にされている。

```
[root@myrhel07 ~]# getenforce
Disabled

[root@myrhel07 ~]# cat /etc/sysconfig/selinux | grep -v "^#" | grep -v "^$"
SELINUX=disabled
SELINUXTYPE=targeted

```

#Network

SoftLayerの仮想サーバーでは、デフォルトでNetworkManagerは無効になっている。

```
[root@myrhel07 ~]# systemctl list-unit-files --no-pager | grep -i NetworkManager
NetworkManager-dispatcher.service      disabled
NetworkManager-wait-online.service     disabled
NetworkManager.service                 disabled

[root@myrhel07 ~]# systemctl status NetworkManager
NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled)
   Active: inactive (dead)

[root@myrhel07 ~]# nmcli device
Error: NetworkManager is not running.

[root@myrhel07 ~]# nmtui
NetworkManager is not running.

```

また、CentOS7.0/RHEL7.0以降の特徴として、NICのインタフェース名に対する複数の命名体系が挙げられるが、SoftLayerの仮想サーバーでは従来どおりの形式が利用されている。

```
[root@myrhel07 ~]# ls -l /sys/class/net/
total 0
lrwxrwxrwx 1 root root 0 May 20 21:06 eth0 -> ../../devices/vif-0/net/eth0
lrwxrwxrwx 1 root root 0 May 20 21:06 eth1 -> ../../devices/vif-1/net/eth1
lrwxrwxrwx 1 root root 0 May 20 21:06 lo -> ../../devices/virtual/net/lo

```

ifconfigコマンドやnetstatコマンドなども、存在していない。代わりに、ipコマンドやssコマンドを利用する。どうしても嫌であれば、`# yum install net-tools`で、ifconfig/netstatのパッケージを導入する。

```
[root@myrhel07 ~]# ifconfig -a
-bash: ifconfig: command not found

[root@myrhel07 ~]# netstat -a
-bash: netstat: command not found
```

#DISK

RHEL7からはデフォルトのファイルシステムはXFSになったが、SoftLayerの仮想サーバーではext3が使用されている。


```
[root@myrhel07 ~]# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   25G  0 disk
├─xvda1 202:1    0  256M  0 part /boot
└─xvda2 202:2    0 24.8G  0 part /
xvdb    202:16   0    2G  0 disk
└─xvdb1 202:17   0    2G  0 part [SWAP]


[root@myrhel07 ~]# parted -l
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 26.8GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  269MB   268MB   primary  ext3         boot
 2      269MB   26.8GB  26.6GB  primary  ext3


Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system     Flags
 1      32.3kB  2147MB  2147MB  primary  linux-swap(v1)

```

#timezone

/etc/localtimeの編集ではなく、timedatectlコマンドで行うことが推奨されているらしい。`timedatectl`の結果はとても分かりやすい。

```
[root@myrhel07 ~]# ls -la /etc/localtime
lrwxrwxrwx. 1 root root 37 May  4 16:51 /etc/localtime -> ../usr/share/zoneinfo/America/Chicago

[root@myrhel07 ~]# timedatectl status
      Local time: Fri 2015-05-22 05:20:17 CDT
  Universal time: Fri 2015-05-22 10:20:17 UTC
        RTC time: Fri 2015-05-22 10:20:18
        Timezone: America/Chicago (CDT, -0500)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: yes
 Last DST change: DST began at
                  Sun 2015-03-08 01:59:59 CST
                  Sun 2015-03-08 03:00:00 CDT
 Next DST change: DST ends (the clock jumps one hour backwards) at
                  Sun 2015-11-01 01:59:59 CDT
                  Sun 2015-11-01 01:00:00 CST

[root@myrhel07 ~]# timedatectl set-timezone Asia/Tokyo

[root@myrhel07 ~]# ls -la /etc/localtime
lrwxrwxrwx 1 root root 32 May 22 19:20 /etc/localtime -> ../usr/share/zoneinfo/Asia/Tokyo

[root@myrhel07 ~]# timedatectl status
      Local time: Fri 2015-05-22 19:20:40 JST
  Universal time: Fri 2015-05-22 10:20:40 UTC
        RTC time: Fri 2015-05-22 10:20:40
        Timezone: Asia/Tokyo (JST, +0900)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
```

#言語ロケール


```
[root@myrhel07 ~]# localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us

[root@myrhel07 ~]# localectl set-locale LANG=ja_JP.utf8

[root@myrhel07 ~]# localectl status
   System Locale: LANG=ja_JP.utf8
       VC Keymap: us
      X11 Layout: us
```

#runlevel -> target
CentOS6/RHEL6まではrunlevelを/etc/inittabで制御していたが、CentOS7/RHEL7からはtargetという概念で制御する。

multi-user.targetは以前のバージョンにおけるランレベル3に相当。

```
[root@myrhel07 ~]# cat /etc/inittab | grep -v "^#"
（表示なし）

[root@myrhel07 ~]# systemctl get-default
multi-user.target

[root@myrhel07 ~]# ls -l /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 37 May  4 16:51 /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target
```

従来のランレベルがどのターゲットに相当しているかを確認。

```
[root@myrhel07 ~]# ls -l /lib/systemd/system/runlevel*target
lrwxrwxrwx 1 root root 15 May 20 21:04 /lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx 1 root root 13 May 20 21:04 /lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx 1 root root 17 May 20 21:04 /lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx 1 root root 17 May 20 21:04 /lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx 1 root root 17 May 20 21:04 /lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx 1 root root 16 May 20 21:04 /lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx 1 root root 13 May 20 21:04 /lib/systemd/system/runlevel6.target -> reboot.target

```

#chkconfig/service -> systemd

chkconfigは原則非推奨。その代わりに、systemdコマンドを利用する。

```
[root@myrhel07 ~]# 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]'.

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
nimbus          0:off   1:off   2:off   3:off   4:on    5:on    6:off
rhnsd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
xe-linux-distribution   0:off   1:off   2:on    3:on    4:on    5:on    6:off


[root@myrhel07 ~]# systemctl list-unit-files --no-pager | grep firewalld
firewalld.service                      disabled

```


#Firewall

RHEL7からは、firewalldサービスが用意されており、iptablesサービスとは併用できない。今後はfirewalldを利用することが推奨。SoftLayerの仮想サーバーでは、

- iptablesサービスはデフォルトでは導入・登録されていない。
- firewalldは起動していない。

```
[root@myrhel07 ~]# systemctl list-unit-files --no-pager | grep firewalld
firewalld.service                      disabled

[root@myrhel07 ~]# firewall-cmd --state
not running

[root@myrhel07 ~]# systemctl list-unit-files --no-pager | grep -i iptables
（標示なし）

```


ということで、当然ながらデフォルトだと何もフィルタリングはされていない。

```
[root@myrhel07 ~]# iptables -L -v -n
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

[root@myrhel07 ~]# ip6tables -L -v -n
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
```




#おわりに
というので、環境を大体掴んだので、次回以降にfirewalldの設定などをしていくことにします。