Linux Mint 20.3 (Una) lightdm 1.30.0
アンマウントするスクリプトを作成する。
#!/bin/bash umount -f -l -t cifs -a
スクリプトに実行権限を付与する。
# chmod +x /etc/lightdm/cifs-umount.sh
スクリプトの実行を指示する設定を追加する。
[SeatDefaults] session-cleanup-script=/etc/lightdm/cifs-umount.sh
人生の最終目標は気ままな老後生活
Linux Mint 20.3 (Una) lightdm 1.30.0
アンマウントするスクリプトを作成する。
#!/bin/bash umount -f -l -t cifs -a
スクリプトに実行権限を付与する。
# chmod +x /etc/lightdm/cifs-umount.sh
スクリプトの実行を指示する設定を追加する。
[SeatDefaults] session-cleanup-script=/etc/lightdm/cifs-umount.sh
この記事で設定したPostfixを使用する。
AlmaLinux release 8.5 (Arctic Sphynx) postfix 3.5.8 opendkim 2.11.0
EPELリポジトリを追加する。
# dnf install epel-release
必要なパッケージをインストールする。
# dnf install opendkim # dnf install opendkim-tools
鍵を格納するディレクトリを作成する。
# cd /etc/opendkim/keys/ # mkdir hirohiro716.com alias.hirohiro716.com # chmod 750 *
鍵を作成する。–selectorオプションは1つのドメインに複数の鍵を設定する場合を除き指定する必要はない。
# opendkim-genkey -D /etc/opendkim/keys/hirohiro716.com/ -d hirohiro716.com # opendkim-genkey -D /etc/opendkim/keys/alias.hirohiro716.com/ -d alias.hirohiro716.com # chown -R opendkim:opendkim /etc/opendkim/keys/
作成されたdefault.txtを参考にDNSレコードを登録しておく。
default._domainkey.hirohiro716.com TXT 0 v=DKIM1; k=rsa; p=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa _adsp._domainkey.hirohiro716.com TXT 0 dkim=unknown default._domainkey.alias.hirohiro716.com TXT 0 v=DKIM1; k=rsa; p=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb _adsp._domainkey.alias.hirohiro716.com TXT 0 dkim=unknown
opendkimの設定を変更する。
※変更箇所のみ記載
Mode sv SoftwareHeader no KeyTable /etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable
KeyTableを変更して使用する秘密鍵を指定する。
default._domainkey.hirohiro716.com hirohiro716.com:default:/etc/opendkim/keys/hirohiro716.com/default.private default._domainkey.alias.hirohiro716.com alias.hirohiro716.com:default:/etc/opendkim/keys/alias.hirohiro716.com/default.private
SigningTableを変更して署名するドメインを指定する。
*@hirohiro716.com default._domainkey.hirohiro716.com *@alias.hirohiro716.com default._domainkey.alias.hirohiro716.com
サービスを有効化して実行する。
# systemctl enable --now opendkim
Postfixの設定ファイルの最下部に下記を追記する。
# DKIM settings. smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept
Postfixの設定を再読み込みする。
# systemctl reload postfix
AlmaLinux release 8.5 (Arctic Sphynx) certbot 1.22.0 apache 2.4.37 postfix 3.5.8
Let’sEncryptの証明書を発行するためのcertbotをインストールする。
# dnf install epel-release # dnf install certbot
ACMEプロトコル用にApacheの設定を行う。
<VirtualHost *:80> ServerName test.example.com DocumentRoot /var/lib/letsencrypt/ <Directory /var/lib/letsencrypt/> AllowOverride None Options IncludesNoExec Require method GET </Directory> </VirtualHost>
Apacheの設定を再読み込みする。
# systemctl reload httpd
SSL証明書を発行する。何度も失敗したりしても制限がかかるので、–dry-runオプションを指定してテストする。
# certbot certonly --webroot -w /var/lib/letsencrypt/ -d test.example.com ------------------------------------------------------------- Saving debug log to /var/log/letsencrypt/letsencrypt.log Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): admin@test.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server. Do you agree? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: N Account registered. Requesting a certificate for test.example.com Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/test.example.com/fullchain.pem Key is saved at: /etc/letsencrypt/live/test.example.com/privkey.pem This certificate expires on 2022-08-01. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
発行が成功すると下記の場所に証明書が作られる。ほかのサーバーに移行する場合は/etc/letsencrypt/ごとコピーすればOKだった。
/etc/letsencrypt/live/test.example.com/cert.pem /etc/letsencrypt/live/test.example.com/privkey.pem /etc/letsencrypt/live/test.example.com/chain.pem /etc/letsencrypt/live/test.example.com/fullchain.pem
cronで毎朝4時にSSL証明書を更新するジョブを追加する。更新されるかは自動で決定され、更新された場合のみ–deploy-hookオプションで指定されたコマンドが実行される。
0 4 * * * certbot renew --deploy-hook "systemctl reload postfix"
Postfixのmain.cfを編集して証明書の設定をする。
※変更箇所のみ記載
# Certificate settings. smtpd_tls_cert_file = /etc/letsencrypt/live/test.example.com/fullchain.pem smtpd_tls_key_file = /etc/letsencrypt/live/test.example.com/privkey.pem
・ システムアカウントとE-mailアカウントは別にしたい ・ user1@hirohiro716.comのようなアドレスで主に送受信する ・ 別名でuser1@alias.hirohiro716.comでも受信したい ・ メーリングリストも使用したい
・ AlmaLinuxのバージョン: 8.5 ・ Postfixのバージョン: 3.5.8 ・ Dovecotのバージョン: 2.3.8 ・ プロトコル: smtp/smtps/imaps/pop3s
先にDNSレコードを登録しておく。
mydomain: email.hirohiro716.com
virtual_mailbox_domains: hirohiro716.com
virtual_alias_domains: alias.hirohiro716.com
email.hirohiro716.com A 0 153.126.160.145 hirohiro716.com A 0 153.126.160.145 hirohiro716.com MX 10 hirohiro716.com hirohiro716.com TXT 0 v=spf1 +mx ~all alias.hirohiro716.com A 0 153.126.160.145 alias.hirohiro716.com MX 10 alias.hirohiro716.com alias.hirohiro716.com TXT 0 v=spf1 +mx ~all
この手順ではZeroSSLで発行した証明書を使用する。ZeroSSLにログインして発行した証明書のzipファイルを解凍する。
# unzip email.hirohiro716.com.zip -d /etc/ssl/email.hirohiro716.com/
解凍されたファイルは「ca_bundle.crt」「certificate.crt」「private.key」で、中間CA証明書がないので作成する。
# cd /etc/ssl/email.hirohiro716.com/ # cat certificate.crt ca_bundle.crt > fullchain.crt
証明書のSELinuxコンテキストのラベル付けを復元する。
# restorecon -RF /etc/ssl/email.hirohiro716.com/
Dovecotをインストールする。
# dnf install dovecot
SSL証明書の設定をする。
※変更箇所のみ記載
ssl_cert = </etc/ssl/email.hirohiro716.com/fullchain.crt ssl_key = </etc/ssl/email.hirohiro716.com/private.key
使用するプロトコルを設定する。
※変更箇所のみ記載
protocols = imap pop3
認証の際に受け付けるポート、Postfix認証用ソケットファイルの設定をする。ソケットファイルのパーミッションとか所有者とかはコメントを読む限り0666で問題なさそうなのでそのまま。
※変更箇所のみ記載
service imap-login { inet_listener imap { port = 0 } inet_listener imaps { port = 993 ssl = yes } } service pop3-login { inet_listener pop3 { port = 0 } inet_listener pop3s { port = 995 ssl = yes } } unix_listener /var/spool/postfix/private/auth { mode = 0666 }
バーチャルメールボックス用のシステムアカウントとディレクトリを作成する。
# groupadd -g 5000 vmail # useradd -u 5000 -g vmail -s /sbin/nologin vmail # mkdir /var/spool/mail/virtual # chown vmail:vmail /var/spool/mail/virtual # chmod 770 /var/spool/mail/virtual
Dovecotにバーチャルメールボックスの場所を設定する。
※変更箇所のみ記載
mail_location = maildir:/var/spool/mail/virtual/%d/%n/Maildir
Dovecotの認証方法に関する設定を変更する。システムアカウントで認証はしない。
※変更箇所のみ記載
#!include auth-system.conf.ext !include auth-passwdfile.conf.ext !include auth-static.conf.ext
auth-passwdfile.conf.extはデフォルトのまま使用する。
passdb { driver = passwd-file args = scheme=CRYPT username_format=%u /etc/dovecot/users } userdb { driver = passwd-file args = username_format=%u /etc/dovecot/users }
auth-passwdfile.conf.extで指定されているusersファイルを作成する。
user1@hirohiro716.com:{PLAIN}password-1234 user2@hirohiro716.com:{PLAIN}password-5678
auth-static.conf.extを編集して作成したアカウント「vmail」を指定する。homeの指定はしなくても大丈夫だと思われる。
※変更箇所のみ記載
userdb { driver = static args = uid=vmail gid=vmail }
Postfixをインストールする。
# dnf install postfix
main.cfを編集して基本的な設定をする。
※変更箇所のみ記載
# Not matching the actual hostname. myhostname = email.hirohiro716.com mydomain = $myhostname myorigin = $mydomain # Receive mail on all network interfaces. inet_interfaces = all # Disable IPv6. inet_protocols = ipv4 # Specifies the domain that this machine delivers locally. mydestination = $myhostname, localhost.$mydomain, localhost # Not publish. smtpd_banner = $myhostname ESMTP unknown # Certificate settings. smtpd_tls_cert_file = /etc/ssl/email.hirohiro716.com/fullchain.crt smtpd_tls_key_file = /etc/ssl/email.hirohiro716.com/private.key # Disable user search. disable_vrfy_command = yes # SASL settings. smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination # Client restriction settings. smtpd_client_restrictions = permit_mynetworks, reject_unknown_client, permit # HELO restriction settings. smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks, reject_unknown_hostname, reject_non_fqdn_hostname, reject_invalid_hostname, permit # Sender restriction settings. smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain, reject_non_fqdn_sender
master.cfを編集して利用するプロトコルの種類を設定する。smtpsのsmtpd_tls_wrappermodeを有効にしないとtcp/465でもSTARTTLSが試行される。
※変更箇所のみ記載
smtp inet n - n - - smtpd submission inet n - n - - smtpd smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes
現在のサイズに関する設定値を確認する。
berkeley_db_create_buffer_size = 16777216 berkeley_db_read_buffer_size = 131072 body_checks_size_limit = 51200 bounce_size_limit = 50000 header_size_limit = 102400 lmdb_map_size = 16777216 mailbox_size_limit = 51200000 message_size_limit = 10240000 tcp_windowsize = 0
メールボックスが50MB、メッセージが10MBに制限されている。ちょっと少ないので設定変更する。再度「main.cf」を編集して最下部に追記する。
※追記する箇所のみ記載
# Maximum mailbox size 1GB. Maximum message size 20MB. mailbox_size_limit = 1024000000 message_size_limit = 20480000
バーチャルメールボックスの設定をする。再度「main.cf」を編集して最下部に追記する。
※追記する箇所のみ記載
# Virtual mailbox settings. virtual_mailbox_domains = hirohiro716.com virtual_mailbox_base = /var/spool/mail/virtual virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_uid_maps = static:5000 virtual_gid_maps = static:5000
main.cfで指定したバーチャルメールボックスの場所を定義するファイルを作成する。
user1@hirohiro716.com hirohiro716.com/user1/Maildir/ user2@hirohiro716.com hirohiro716.com/user2/Maildir/
作成したvmailboxから検索テーブル(vmailbox.db)を生成する。
# postmap /etc/postfix/vmailbox
バーチャルエイリアスの設定をする。再度「main.cf」を編集して最下部に追記する。
※追記する箇所のみ記載
# Virtual ailias settings. virtual_alias_domains = alias.hirohiro716.com virtual_alias_maps = hash:/etc/postfix/virtual
main.cfで指定したバーチャルエイリアスの転送先を定義するファイルを作成する。
@alias.hirohiro716.com @hirohiro716.com
作成したvirtualから検索テーブル(virtual.db)を生成する。
# postmap /etc/postfix/virtual
メーリングリストはバーチャルエイリアスの設定で実現する。再度「main.cf」を編集して「virtual_alias_maps」に「regexp:/etc/postfix/ml」をカンマ区切りで追記する。
※変更箇所のみ記載
virtual_alias_maps = hash:/etc/postfix/virtual, regexp:/etc/postfix/ml
main.cfで指定したメーリングリストの設定を定義するファイルを作成する。
# Group1 /^group1@(hirohiro716\.com|alias\.hirohiro716\.com)$/ user1@hirohiro716.com, user2@hirohiro716.com, # Team2 /^team2@(hirohiro716\.com|alias\.hirohiro716\.com)$/ user1@hirohiro716.com,
ファイアウォールの例外設定をする。
# firewall-cmd --permanent --add-service={smtp,smtp-submission,smtps,imaps,pop3s} # firewall-cmd --reload
サービスを有効化して実行する。
# systemctl enable --now dovecot # systemctl enable --now postfix
・ ディストリビューション: AlmaLinux 8.5 ・ Linuxカーネル: 4.18.0-348.20.1.el8_5.x86_64
ELRepoを利用してインストールを行うので、GPGキーをインポートする。
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
ELRepoリポジトリを追加する。
# dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
kernel-ltの中身を確認する。ltはLTSの略。
名前 : kernel-lt バージョン : 5.4.189 リリース : 1.el8.elrepo Arch : x86_64 サイズ : 70 k ソース : kernel-lt-5.4.189-1.el8.elrepo.src.rpm リポジトリー : elrepo-kernel 概要 : The Linux kernel. (The core of any Linux-based operating system.) URL : https://www.kernel.org/ ライセンス : GPLv2 説明 : The kernel-lt meta package.
kernel-ltをインストールする。
# dnf --enablerepo=elrepo-kernel install kernel-lt kernel-lt-devel kernel-lt-headers
再起動してブート時に新しくインストールしたカーネルを選択する。
# reboot
EPELリポジトリを追加する。
# dnf install epel-release
xrdpをインストールする。
# dnf install xrdp
ファイアウォールに例外を追加する。
# firewall-cmd --permanent --add-service=rdp # firewall-cmd --reload
サービスを有効化して起動する。
# systemctl enable xrdp # systemctl start xrdp
OS規定のversion:10を使用。
host:sv1 ip:192.168.0.100 略称:プライマリ
host:sv2 ip:192.168.0.101 略称:セカンダリ
インストールする。
# dnf install postgresql-server postgresql-devel postgresql-contrib
ファイアウォールに例外を追加する。
# firewall-cmd --add-service=postgresql --permanent # firewall-cmd --reload
データベースを初期化してデータベースクラスタを作成する。
# postgresql-setup initdb
サービスを有効化する。
# systemctl enable postgresql
サービスを起動する。
# systemctl start postgresql
レプリケーション用ユーザーを作成する。
# su postgres $ psql =# CREATE USER replication_user REPLICATION PASSWORD 'password'; =# \q
外部からの通信を許可。最下部に下記を追記する。
host replication replication_user 192.168.0.0/24 md5
postgresql.confを編集して下記8行を変更する。
※synchronous_commitはシステム要件によって変更した方が良い
listen_addresses = '*' wal_level = hot_standby fsync = on synchronous_commit = off wal_sync_method = fsync max_wal_senders = 2 ※プライマリを含んだレプリケーションサーバーの数を入れる wal_keep_segments = 32 ※8~32が目安らしい synchronous_standby_names = '*'
ついでに下記設定値がシステム要件に合っているか確認する。
max_connections = 300 ※同時接続数 shared_buffers = 1024MB ※物理メモリの1/4程度 work_mem = 8MB ※物理メモリの1/500程度だが最大8MB effective_cache_size = 2048MB ※物理メモリの1/2程度
サービスを再起動する。
# systemctl restart postgresql
postgresqlサービスが停止した状態でdataを空にする。
# rm -r -f /var/lib/pgsql/data/*
先程作成したレプリケーション用ユーザーを使用してプライマリからデータをコピーする。
※-Rオプションはrecovery.confを自動作成する指定
※-Pオプションは進捗を表示する指定
# su postgres $ pg_basebackup -R -h 192.168.0.100 -p 5432 -U replication_user -D /var/lib/pgsql/data/ -P
/var/lib/pgsql/data/内のすべてのファイルの所有者/所有グループがpostgresになっているか確認する。
ll /var/lib/pgsql/data/
/var/lib/pgsql/data/postgresql.confを編集して設定を変更する。
hot_standby = on
postgresqlサービスを起動する。
# systemctl start postgresql
プライマリサーバーで下記SQLを実行するとレプリケーションされているか確認できる。
SELECT * FROM pg_stat_replication;
フェイルオーバーする際はセカンダリで下記コマンドを実行する。
# su postgres $ pg_ctl promote -D /var/lib/pgsql/data/
・ ディストリビューション: CentOS 7.9 ・ ホスト名: ipa1.local.example.com ・ IPアドレス: 192.168.0.10 ・ IPAサーバー: 4.6.8
・ ディストリビューション: AlmaLinux 8.5 ・ ホスト名: newipa1.local.example.com ・ IPアドレス: 192.168.0.20 ・ IPAサーバー: 4.9.6
移行先の4.9.6にはca設定を含むレプリカが作成できない不具合があるため、試した限り移行元から移行先へのレプリカ作成は一度しか実行できない。一度でも4.9.6でレプリカを作成した場合、それ以降は4.6.8のca設定を含むレプリカを4.9.6で作成できなくなった。
この作業手順でca設定などが消失しても運営者は一切責任とりません
・移行元のバックアップを作成してから実行する ・移行先のFQDNは本番プライマリサーバーと同一にする
4.9.6のレプリカ作成前なら4.6.8同士のレプリカを作成できるので、それを利用して4.6.8のレプリカを作成し、プライマリに変更して移行元とする。
参考ページ: dna範囲の確認方法
① 一時的に移行元と同じ4.6.8でcaを含むバックアップ用のレプリカを作成する ② IdMのWebUIなどで「IPA CA renewal master」をバックアップ用のレプリカに変更する ③ 移行元のdna範囲を控える ④ 移行先と同じFQDNのIPAサーバーを削除する ⑤ さっきの記事を参考に控えたdna範囲をバックアップ用のレプリカにセットする
移行元でファイアウォールを無効化しておく。使用しているポートが違うのか例外設定していても失敗する。
# systemctl stop firewalld
移行元のIdMにWEBブラウザでアクセスして、移行先のhostを追加する。
移行先のホスト名をFQDNに変更する。
# hostnamectl set-hostname newipa1.local.example.com
参照するDNSサーバーを移行元IPAサーバーにする。
# nmcli connection modify コネクション名 ipv4.dns 192.168.0.10 # nmcli connection up コネクション名
必要なパッケージをインストールする。
# dnf install @idm:DL1 # dnf install ipa-server ipa-server-dns
IPAクライアントとして設定する。
# ipa-client-install
初回ログイン時にホームディレクトリを自動生成するよう設定する。
# authconfig --enablemkhomedir --update
ファイアウォールの例外を登録する。
# firewall-cmd --permanent --add-service={freeipa-ldap,freeipa-ldaps,freeipa-replication,dns,ntp,http,https} # firewall-cmd --reload
ca設定を含むレプリカを作成する。
※DNSとしても動作させるため「–setup-dns」オプション指定
# ipa-replica-install --setup-ca --setup-dns --forwarder <forwarderのIPアドレス1> --forwarder <forwarderのIPアドレス2>
参照するDNSサーバーを自身にする。
# nmcli connection modify コネクション名 ipv4.dns 192.168.0.20 # nmcli connection up コネクション名
「IPA CA renewal master」を移行先に変更する。
# kinit admin # ipa config-mod --ca-renewal-master-server newipa1.local.example.com
移行元のdna範囲を確認する。
※必要に応じて予め「kinit admin」で認証する
# ipa-replica-manage dnarange-show
確認した移行元のdna範囲を移行先にセットする。
※必要に応じて予め「kinit admin」で認証する
# ipa-replica-manage dnarange-set newipa1.local.example.com 1304400077-1304599999
ここの手順で構築したIPAサーバーで認証する。
・ AlmaLinuxのバージョン: 8.5 ・ ホスト名: samba.local.example.com ・ IPアドレス: 192.168.0.12 ・ sambaのバージョン: 4.14.5 ・ ipa-clientのバージョン: 4.9.6
IPAサーバーのIdMにWEBブラウザでアクセスして、ホスト「samba.local.example.com」をIPアドレス「192.168.0.12」で追加する。
IPAサーバーでsambaからの認証要求を処理するために必要なパッケージをインストールする。
# dnf install ipa-server-trust-ad
下記コマンドを実行してsambaを信頼設定する。
# ipa-adtrust-install
ファイアウォールに例外を登録する。
# firewall-cmd --permanent --add-service=freeipa-trust # firewall-cmd --reload
IPAサーバーを再起動する。
# ipactl restart
※セカンダリIPAサーバーでもsambaからの認証要求を処理したい場合は同様の設定手順をセカンダリでも行う必要がある
FQDNでホスト名を設定する。
# hostnamectl set-hostname samba.local.example.com
必要なパッケージをインストールする。
# dnf install ipa-client-samba
IPAクライアントとして設定する。
# ipa-client-install
共有ディレクトリを作成する。
※root以外がアクセスできないようにする
# mkdir -p /var/samba/share # chmod 770 /var/samba/share
samba構成ユーティリティを実行して初期設定する。
# ipa-client-samba
初期設定されたsambaの設定ファイルを編集して最下行に追記する。
※「force user」にrootを指定してファイル操作をrootで実行させる
[share] path = /var/samba/share create mask = 0660 directory mask = 0770 force user = root writable = yes valid users = @testgroup
ファイアウォールに例外を登録する。
# firewall-cmd --permanent --add-service=samba # firewall-cmd --reload
SELinuxのラベル付けを行う。
# semanage fcontext -a -t samba_share_t "/var/samba/share(/.*)?" # restorecon -RF /var/samba/share/
SELinuxにsmbdによるパブリックディレクトリへの書き込みを有効にする。
# setsebool -P allow_smbd_anon_write true
サービスを有効にして起動する。
# systemctl enable --now smb # systemctl enable --now winbind
・ AlmaLinuxのバージョン: 8.5 ・ ipaサーバーのバージョン: 4.9.6 ・ プライマリのIPアドレスは192.168.0.10 ・ セカンダリのIPアドレスは192.168.0.11
FQDNでホスト名を設定する。
※FQDNが192.168.0.10に名前解決できるようにしておく
# hostnamectl set-hostname ipa1.local.example.com
モジュールを検索して必要そうなものを特定する。
$ dnf module list
idmのDL1にServerと書いてあったので、それをインストールする。
# dnf install @idm:DL1
モジュールのインストールが完了したら、必要なパッケージをインストールする。
# dnf install ipa-server ipa-server-dns
対話型のインストーラーを起動する。
※同時にbindも設定してもらう
※DNSフォワーダーも設定する
※そのほかは大体Enterで続行した
# ipa-server-install
ファイアウォールの例外を登録するよう促されるので登録する。
※サービス名で設定する場合は「ldap」ではなく「freeipa-ldap」なので注意
※freeipa-replicationはセカンダリを構築しない場合はいらない
# firewall-cmd --permanent --add-service={freeipa-ldap,freeipa-ldaps,freeipa-replication,dns,ntp,http,https} # firewall-cmd --reload
参照するDNSサーバーを自身にする。
# nmcli connection modify コネクション名 ipv4.dns 192.168.0.10 # nmcli connection up コネクション名
chronyのserver/clientの設定をする。
※変更箇所のみ記載
# Allow NTP client access from local network. #allow 192.168.0.0/16 allow 192.168.0.0/24 # Select which information is logged. #log measurements statistics tracking server ntp.nict.jp iburst
chronydを再起動する。
# systemctl restart chronyd
初回ログイン時にホームディレクトリを自動生成するよう設定する。
# authconfig --enablemkhomedir --update
プライマリのIdMにWEBブラウザでアクセスして、セカンダリのhostを追加する。
セカンダリのホスト名をFQDNに変更する。
# hostnamectl set-hostname ipa2.local.example.com
参照するDNSサーバーをプライマリIPAサーバーにする。
# nmcli connection modify コネクション名 ipv4.dns 192.168.0.10 # nmcli connection up コネクション名
必要なパッケージをインストールする。
# dnf install @idm:DL1 # dnf install ipa-server ipa-server-dns
IPAクライアントとして設定する。
# ipa-client-install
chronyのserver/clientの設定をする。
※変更箇所のみ記載
# Allow NTP client access from local network. #allow 192.168.0.0/16 allow 192.168.0.0/24 # Select which information is logged. #log measurements statistics tracking server ntp.nict.jp iburst
chronydを再起動する。
# systemctl restart chronyd
初回ログイン時にホームディレクトリを自動生成するよう設定する。
# authconfig --enablemkhomedir --update
ファイアウォールの例外を登録する。
# firewall-cmd --permanent --add-service={freeipa-ldap,freeipa-ldaps,freeipa-replication,dns,ntp,http,https} # firewall-cmd --reload
レプリカインストールを実行する。なぜか「–setup-ca」オプションをつけると必ず失敗する。ほかのディストリビューション(Rocky Linux、Oracle Linux)で試してみたり、色々な小細工してみたけど解決できなかったので、今回はCA設定をプライマリだけで運用することにした。
※DNSとしても動作させるため「–setup-dns」オプション指定
# ipa-replica-install --setup-dns --forwarder <forwarderのIPアドレス1> --forwarder <forwarderのIPアドレス2>
参照するDNSサーバーを自身にする。
# nmcli connection modify コネクション名 ipv4.dns 192.168.0.11 # nmcli connection up コネクション名
プライマリのCA設定がレプリケーションできていないため定期的にバックアップを取得する必要がある。下記のコマンドでバックアップを作成できるが、作成場所は指定できず/var/lib/ipa/backup/に「ipa-full-2022-04-09-14-28-16」という形でディレクトリが作成される。cronで実行する場合は適宜スクリプトを書いた方が良い。
# ipa-backup
対してリストアはバックアップファイルへのパスを指定して実行する。
# ipa-restore /var/lib/ipa/backup/ipa-full-2022-04-09-14-28-16/