Overview
Ubuntu をベースとした実用的な設定内容や手法についての”ゆるい”まとめです。
モチベーション
長らく CentOS を使用してきましたが、2021 年 12 月を最後に CentOS8 のサポートが終了して以降は全て CentOS Stream となります。仮想マシンだけなら CentOS Stream でも良いのですが、CentOS Stream では公式のコンテナイメージが提供されない為、CentOS から Ubuntu へ移行しました。ISO が小さいのも良いと思います。
最近、CentOS の代替えとして Rocky Linux が良く紹介されていますが、かなりネーミングに抵抗があります。
CentOS と Ubuntu の違い
こちらを参照して下さい。
このサイトのポイント
このサイトのポイントをいくつか紹介します。
エディタの不使用
設定ファイルの編集が必要な手順は、最終的に Ansible や Dockerfile で扱いやすくするために vi 等のエディタは使用していません。ありがちなコメントアウト、アンコメント等の作業は Linux ビギナーが vi の使い方に慣れる意味では良いかもしれませんが、だるい作業でもあります。
- コメントを除く最小のデフォルト値を出力。
- それに対して必要な設定を追記・編集したテキストを用意し、ヒアドキュメントでコマンドから直接書き込む。
apt コマンド
CentOS の Yum/DNF と同じように、Ubuntu では apt を使用しますが、apt はパッケージのインストール時に TUI が表示され、インストールタイプ等の選択が必要になる場合があります。CentOS に慣れているとこの挙動はかなりうっとおしいのですが、下記の方法でそれを抑止することができます。
apt コマンドの interactive な TUI を抑止
デュアルスタック
可能な範囲でデュアルスタック(IPv4/IPv6)で稼働できるようにしています。日本ではかなりの企業で IPv6 化が遅れていますが、仕事で見る限りはちょっと加速してきたかなという印象です。
仮想化(仮想マシン)
仮想マシンは KVM 上で稼働させ、必要なサービスを実行します。
コンテナ
コンテナは KVM 上の仮想マシンで MicroK8s を稼働させ、MicroK8s 上でコンテナを実行します。
仮想ルーター
仮想化環境では仮想ルーターを使えると便利です。仮に仮想ルーターを導入しない KVM 環境ではルーティングポイントが外部の L3SW 等になり、セグメント構成に応じて L3SW 側で VLAN やらルーティングやらの設定が必要になります。仮想ルーターがあると、OSPF, BGP 等のルーティングプロトコルを使用して柔軟に外部とルーティング可能な構成を作ることができます。Ubuntu でも FRRouting を使用した仮想ルーターを作成することができますが、本稿では取り上げません。ルーティングは VyOS に任せています。
サードパーティーソフトウェアの不使用
サードパーティーソフトウェアは基本的に使用せず、デフォルトの apt, snap でインストール可能なソフトウェアを使用しています。
インストール
Ubuntu のインストールは他の Linux ディストリビューションと同じく何ら難しいことはありません。物理サーバーへのインストールであれば、rufus 等を使用してブート用の USB メモリを作成して実行するだけです。インストーラの操作もそのままですので本稿では手動インストールの説明を省略します。インストールの自動化は autoinstallation を使用した自動インストールを参照して下さい。
基本設定
基本設定に挙げる手順は用途によらず全てのホストで実施する想定の手順です。
ネットワーク設定
手動システムアップデート
自動システムアップデート
ホスト名設定
hosts 設定
タイムゾーン設定
時刻同期設定 timesyncd
時刻同期設定 chrony
SSH サーバー設定
NFS クライアント設定
ローカル MTA 設定
自己署名証明書
近年のシステムは殆どの通信が暗号化されています。暗号化について、未だに古い規格名の SSL と表現されることが多いですが、本稿での表記は TLS とします。TLS には証明書が必要となりますが、全てを正式な証明書機関が署名した証明書を使用するわけにはいかないので、内部通信には自己署名証明書を使用します。正式な証明書はインターネットに公開するシステムに使用するだけで十分です。
easy-rsa を使用した TLS 証明書の作成
TLS 証明書の信頼設定
各サービスの構築
DNS サーバー
内部向け DNS サーバー構築
外部向け DNS サーバー構築
View を使用した DNS サーバーの統合
Web サーバー
Web サーバー構築 Apache 基本的な Web サーバー
Web サーバー構築 Apache Userdir 有効化
Web サーバー構築 Aapche TLS 有効化
Web サーバー構築 Aapche PHP 有効化
Web サーバー構築 Aapche WAF 有効化
LDAP サーバー
LDAPサーバー構築 389 Directory Server インスタンスの起動
LDAPサーバー構築 389 Directory Server TLS 有効化
LDAPサーバー構築 389 Directory Server ベースエントリーの登録
LDAPサーバー構築 389 Directory Server アクセス制御
LDAPサーバー構築 389 Directory Server グループとユーザーの登録
メールサーバー
内部向けメールサーバー構築 Postfix
内部向けメールサーバー構築 Dovecot
その他
DHCPサーバー構築
LDAPクライアント
LinuxのLDAP認証 SSSD
NFSサーバー構築
Samba構築
データベースサーバー構築 MariaDB
TFTP サーバー構築 tftpd-hpa
ロードバランサー構築 HAProxy
プロキシサーバー構築 Squid
仮想化
KVM
KVM 環境構築
KVM 仮想マシンのデプロイ
KVM PCI パススルー
Microk8s
Docker
Docker #1 環境構築
Docker #2 TLS化
Docker #3 基本的な使い方
Docker #4 外部公開コンテナ
Docker #5 ボリュームの利用
Docker コンテナを自作する #1 ベースイメージ
Docker コンテナを自作する #2 MariaDB
Podman
Podman 環境構築
Podman 基本的な使い方
Podman Redmine 環境構築
その他
ホームディレクトリの手動作成
デスクトップ環境の追加
リモートデスクトップ設定
Openshift 構築環境