前回は、Azure上にデプロイしたRed Hat Enterprise Linux(RHEL) VMで知っておくべき情報や覚えておくと便利な機能を説明しました。
本記事では、Azure RHEL VMでよくあるOS設定について自身の経験をもとに説明します。
なお本記事はRHEL9のVMを使用して手順を確認しました。
前提条件
本記事で説明するOS設定は、すべてTera TermでSSH接続してroot権限で実行します。事前に以下の手順を実施してください。
1. Tera Termで対象VMへログインする。
2. 対象VMで以下のコマンドを実行し、rootへスイッチする。
# sudo su -
SELinux無効化
SELinuxを無効化するケース
SELinuxとはユーザーやグループに対して、ファイルやディレクトリへのアクセス権を制御するセキュリティ機能です。不正アクセス等の攻撃からシステムを保護できる利点があります。
一方、ソフトウェアやアプリケーションの動作を妨げたり、アクセス制御の動作がシステムのCPUやメモリに負荷を与えることがあります。
たとえば開発や検証環境、またシステム導入初期などは、SELinuxを無効化するケースがあります。
SELinux無効化手順
SELinuxを無効化する手順を以下で説明します。
※RHEL8以前で使われていた/etc/selinux/configファイルによるSELinux無効化の手順は、RHEL9以降では推奨されなくなりましたので注意してください。
1. 以下のコマンドを実行し、SELinuxを無効化する。
# grubby --update-kernel ALL --args selinux=0
2. 以下のコマンドを実行し、OSを再起動する。
# systemctl reboot
3. OS再起動後に以下のコマンドを実行し、現在のモードを出力する。「Disabled」と表示されることを確認する。
# getenforce
<実行結果>
Disabled ←★無効化されている
Firewalld無効化
Firewalldを無効化するケース
OSのファイアウォール機能であるFirewalldは、既定で有効となっています。
たとえばAzureのAzure FirewallやNSGといったOS以外の機能でネットワークアクセス制御を行う場合、OSのファイアウォール機能を無効化するケースがあります。
Firewalld無効化手順
Firewalldを無効化する手順を以下で説明します。
1. 以下のコマンドを実行し、Firewalldを停止する。
# systemctl stop firewalld
<実行結果>
出力なし
2. 以下のコマンドを実行し、Firewalldの自動起動を無効化する。
# systemctl disable firewalld
<出力結果>
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
3. 以下のコマンドを実行し、現在の状態を確認する。「Active: inactive (dead)」「firewalld.service; disabled」と表示されることを確認する。
# systemctl status firewalld
<出力結果>
○ firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled) ←★自動起動が無効化されている
Active: inactive (dead) ←★サービスが停止している
Docs: man:firewalld(1)
(以下略)
IPv6無効化
IPv6を無効化するケース
OSの既定ではIPv4とIPv6がどちらも有効な状態です。MicrosoftではAzure環境を安定的に利用すること、また将来的にIPv6を利用するサービスが普及される可能性があることから、IPv6の無効化は推奨しません。
一方で利用環境のルールやアプリケーションの要件などにより、IPv6の機能を明示的に無効化したいというケースがあります。
本記事では、GRUB設定ファイルを使ってIPv6をkernelレベルで無効にする方法を説明します。
IPv6無効化手順
IPv6を無効化する手順を以下で説明します。
1. 以下のコマンドを実行し、GRUB設定ファイルを修正しIPv6アドレスを無効化する。具体的には「GRUB_CMDLINE_LINUX=」から始まる行に、「ipv6.disable=1」というパラメータを追加する。
# vi /etc/default/grub
<以下の行に設定を追記する>
(該当行抜粋)
GRUB_CMDLINE_LINUX="loglevel=3 crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 net.ifnames=0 nvme_core.io_timeout=240 selinux=0 ipv6.disable=1" ←★""内に設定を追記する
2. 以下のコマンドを実行し、GRUB 設定を更新する。
# grubby --update-kernel=ALL --args="ipv6.disable=1"
<実行結果>
出力無し
3. AzureポータルからVMを再起動するか、以下のコマンドを実行しOSを再起動する。
# systemctl reboot
4. OS再起動後に以下のコマンドを実行し、IPアドレス一覧を表示する。「inet6」から始まる行が表示されないことを確認する。
# ip a
<実行結果>
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo ←★IPv4アドレスのみ表示される
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 7c:ed:8d:30:92:d0 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.6/24 brd 10.0.0.255 scope global noprefixroute eth0 ←★IPv4アドレスのみ表示される
valid_lft forever preferred_lft forever
5. 以下のコマンドを実行し、IPv6を無効化した後、Azure Linux Agent (waagent)が正常に動作することを確認する。「Active: active (running)」と表示されることを確認する。
# systemctl status waagent
<実行結果>
● waagent.service - Azure Linux Agent
Loaded: loaded (/usr/lib/systemd/system/waagent.service; enabled; preset: disabled)
Active: active (running) since Fri 2025-05-16 16:44:42 JST; 46min ago ←★サービスが起動している
(以下略)
日本語化
Azure RHEL VMデプロイ後のOS言語は英語です。本記事では、言語設定とタイムゾーン設定を日本語化する手順を説明します。
言語設定
OSの言語設定を日本語にする手順を、以下で説明します。
1. 以下のコマンドを実行し、日本語化用の言語パックをインストールする。
# dnf -y install glibc-langpack-ja
<実行結果>
(途中略)
Complete!
2. 以下のコマンドを実行し、文字コードとキーボードレイアウトを日本語に変更する。
# localectl set-locale LANG=ja_JP.UTF-8
<実行結果>
出力なし
# localectl set-keymap jp
<実行結果>
出力なし
# localectl set-x11-keymap jp
<実行結果>
出力なし
3. 一度システムからログオフし、再度Tera Termでログインする。ログインの際に出力されるメッセージが日本語であることを確認する。
4. 以下のコマンドを実行し、文字コードとキーボードレイアウトを確認する。「LANG=ja_JP.UTF-8」「Keymap: jp」と出力されることを確認する。
# localectl status
<実行結果>
System Locale: LANG=ja_JP.UTF-8 ←★文字コードが日本語である
VC Keymap: jp ←★キーボードが日本語である
X11 Layout: jp ←★デスクトップキーボードが日本語である
タイムゾーン
OSのタイムゾーン設定を日本(JST)にする手順を、以下で説明します。
1. 以下のコマンドを実行し、タイムゾーンを日本時間(JST)に変更する。
# timedatectl set-timezone "Asia/Tokyo"
<実行結果>
出力なし
2. 以下のコマンドを実行し、現在のタイムゾーンを出力する。「Time zone: Asia/Tokyo (JST, +0900)」と表示されることを確認する。
# timedatectl
<実行結果>
Local time: Thu 2025-05-01 11:43:49 JST
Universal time: Thu 2025-05-01 02:43:49 UTC
RTC time: Thu 2025-05-01 02:43:49
Time zone: Asia/Tokyo (JST, +0900) ←★タイムゾーンが日本である
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
※ (2025/7/15追記)初出時、現在のタイムゾーンを出力する際のコマンドが間違っていたので修正しました
パッケージ最新化
AzureでデプロイするRHEL VMは、イメージ公開時点のパッケージがインストールされた状態です。そのため最新のパッケージを利用したい場合は、VMデプロイ後にパッケージを最新化する必要があります。
OSにインストールされているパッケージを最新化する方法を以下3通り説明します。アップデート対象パッケージの種類や用途にあわせて手順を選択してください。
- すべてのパッケージを最新化する方法
- 一部のパッケージを除外し、残りすべてのパッケージを最新化する方法
- 特定のパッケージのみを最新化する方法
すべてのパッケージを最新化する方法
OSにインストールされているすべてのパッケージを最新化する手順を、以下で説明します。
「dnf update」コマンドを実行し、OSにインストールされているすべてのパッケージをアップデートする。
# dnf update
<実行結果>
(アップデートやアップデートに伴い新規でインストールされるパッケージ情報が表示される)
これでよろしいですか? [y/N]: y ←★アップデートされるパッケージを確認後に[y]を入力して処理を続行
(中略)
Complete!
一部のパッケージを除外して最新化する方法
OSにインストールされているパッケージのうち、一部を除外し残りすべてのパッケージを最新化する手順を、以下で説明します。
「--exclude=<除外するパッケージ>」オプションを利用し、除外するパッケージを指定してアップデートを実行する。以下のコマンドでは、パッケージ名が「kernel」から始まるものを除外してアップデートしている。*は正規表現で任意の文字列を意味する。
# dnf update --exclude=kernel*
<実行結果>
(アップデートやアップデートに伴い新規でインストールされるパッケージ情報が表示される)
これでよろしいですか? [y/N]: y ←★アップデートされるパッケージを確認後に[y]を入力して処理を続行
(中略)
Complete!
特定のパッケージのみを最新化する方法
OSにインストールされているパッケージのうち、特定のパッケージを指定して最新化する手順を、以下で説明します。
「dnf update <アップデートするパッケージ>」コマンドを利用し、特定のパッケージを指定してアップデートを実行する。以下のコマンドでは、「kernel」パッケージのみをアップデートしている。
# dnf update kernel
<実行結果>
(アップデートやアップデートに伴い新規でインストールされるパッケージ情報が表示される)
これでよろしいですか? [y/N]: y ←★アップデートされるパッケージを確認後に[y]を入力して処理を続行
(中略)
Complete!
Swapとディスクの操作
Swap操作やディスク操作について、別のブログで紹介しています。他の方の記事も含みます。
参考URL
SELinux無効化
SELinux無効化に関する参考URLです。
2.5. SELinux の無効化 | Red Hat Product Documentation
IPv6無効化
IPv6無効化に関する参考URLです。
参考URLにはIPv6無効化の手順が2通り記載されています。本記事ではそのうち「IPv6プロトコルを無効にする」方法を説明しています。
※ もう一方の「IPv6 アドレス指定を無効にする」方法では、Azure内のサービス(cloud-initやAzure Linux Agent)によってVM起動時に無効化したIPv6設定がリセットされるため、IPv6を完全に無効化することができません。
Red Hat Enterprise Linux で IPv6 プロトコルを無効または有効にする方法 - Red Hat Customer Portal
おわりに
Azure上にデプロイしたRHEL VMでよくあるOS設定について説明しました。
これからAzure RHEL VMを始める方にも、すでに利用を開始されている方にも、本記事が少しでもお役にたてば幸いです。
山﨑 優美(日本ビジネスシステムズ株式会社)
ハイブリッドクラウド本部に所属。Windows Server・Linux、どちらのOSでもさわれるインフラエンジニアです。3児のママも兼務しています。
担当記事一覧