Rocky Linux 9 一覧へ戻る トップ / Rocky Linux 9 / 統合システム構成図
Rocky Linux 9 ・ システムデザイン

統合システム構成図(論理イメージ)

外部サービス(MyDNS / Brevo / Let's Encrypt)から、FortiGate、ホスト、コンテナの細部までを網羅した全体像

ホスト example.com(172.16.1.2) コンテナ adminuser.example.com(172.16.1.3) macvlan構成

目次

  1. 統合システム構成図
  2. 受付係によるドメイン別ルーティング
  3. 外部クラウドとの三位一体連携
  4. サーバーホスト詳細
  5. サーバーコンテナ詳細
  6. macvlanによる物理層共有と論理層分離
  7. 二重Brevoリレーと到達率100%
  8. 送信ドメイン認証(3重の身分証明)
  9. 多層防御(Defense in Depth)
  10. 総括マトリックス

統合システム構成図

外部クラウドサービスから境界防御、ホストとコンテナの独立環境まで。一切の省略を排除したアーキテクチャ全景です。

MyDNS.jp
DNS管理/委任
Brevo(SMTP)
SMTPリレー送信
Let's Encrypt
SSL証明書発行
↓ DNS解決 / メール送信依頼 / SSL証明書発行
FortiGate 50E
ポート単位のNAT/VIP振り分け
↓ ポート単位で経路分岐
Mail(25/587/993)
FortiGateからホストへ直接転送(従来通り)
Web(80/443)
Phase 4以降はCaddyへ転送
↓ Webのみ、Caddyでホスト名別に振り分け(Phase 4)
Caddy 172.16.1.18(DMZ)
HTTPS終端・リバースプロキシ/Let's Encrypt証明書自動発行
↓ ホスト名(SNI)で振り分け
hs.* → Headscale
SERVER・192.168.2.13:8080
auth.* → Authentik
SERVER・192.168.2.16:9000
www.* → サーバーホスト
172.16.1.2:80
↓ Mailはここで合流/Webはホストの「受付係」がyama/wingに振り分け
サーバーホスト
172.16.1.2 ・ example.com(親ドメイン)
BIND Apache Postfix Dovecot SELinux Fail2ban
STABILITY:SECURED
サーバーコンテナ
172.16.1.3 ・ adminuser.example.com(子ドメイン)
Nginx/Apache Postfix Dovecot macvlan
ISOLATION:ACTIVE

Phase 4(Caddy導入)による変更点

従来はFortiGateがWeb(80/443)もMailと同様にサーバーホストへ直接転送していましたが、Caddyリバースプロキシの構築(Phase 4)により、FortiGateのVIP転送先は172.16.1.18(Caddy)に変更されています。CaddyがHTTPS終端とホスト名別振り分けを一元管理し、SERVERセグメントのHeadscale/Authentikもここから公開されます。Mail(25/587/993)はCaddyを経由せず、従来通りサーバーホストへ直接届きます。

コア・コンセプト:「受付係」によるドメイン別ルーティング

Caddy(Web)とFortiGate(Mail)を経由してホストに届いた通信を、ホスト上のApache/Postfixが宛先ごとに仕分けする仕組みです。

1
到着Web(80/443)はCaddy(172.16.1.18)でwww.*向けと判定された通信が、Mail(25番等)はFortiGateから直接、それぞれホスト(172.16.1.2)に届く。
2
開封と確認(レイヤー7)ホスト上のApache/Postfixが「受付係」として、通信の中身(Hostヘッダーや宛先アドレス)を確認する。
3
振り分けの頭脳Web(Apache):宛先が yama なら自身のWebを表示、adminuser ならコンテナ(172.16.1.3)へパケットを中継(リバースプロキシ)。Mail(Postfix):宛先が @yama なら自身のポストへ、@adminuser ならコンテナへ転送。

Zoom-in 1:外部クラウドインフラとの三位一体連携

MyDNS.jp(玄関と委任)

example.comのグローバルIPを管理。wingサブドメインの管理権限をホストのBINDへ「委任(NSレコード)」。

Brevo(SMTPリレー)

ホスト(yama)とコンテナ(adminuser)の双方から利用。OP25B(25番ポートブロック)を回避し、SPF/DKIM/DMARCの正規証明を乗せて確実な到達率を保証。

Let's Encrypt(暗号化基盤)

Web(HTTPS)とMail(SSL/TLS)の暗号化証明書を無料発行。systemdタイマーにより90日サイクルの30日前に自動更新。

Zoom-in 3:サーバーホスト(example.com・172.16.1.2)

司令塔:BIND

wing専用の権威DNS。自動更新スクリプト(cronで5分間隔)により、グローバルIPの変動に24時間追従しダウンタイムを最小化。

メール実体:Postfix/Dovecot

yamaドメインのメール送受信を担当。送信はBrevoリレー(Port 587)へ。

交通整理:Apache

リバースプロキシとして、wing宛のWeb通信をコンテナへ中継。

防御層:Security Layer

ホストOS自体の防御。SELinuxはプロキシ通信を許可する特例設定(httpd_can_network_connect)を適用。

Zoom-in 4:サーバーコンテナ(adminuser.example.com・172.16.1.3)

独立したWeb実体

wingドメイン専用のWebサイトを表示する本体。ホスト側の環境汚染を完全に防ぐ。

独立したメール環境

Postfix/Dovecot。コンテナ独自でもBrevo経由でメール送信(Port 587)を可能に。サブドメイン専用のメール環境として完結。

自律的セキュリティ(SPF/DKIM/DMARC)

コンテナから送るメールの正当性を、ホスト上のBIND(DNS)に書き込んだレコードで証明。Fail2banによるコンテナ内ログの独立監視。

横断解説1:macvlanによる物理層の共有と論理層の分離

Physical NIC
eth0
Host Interface(eth0)
172.16.1.10
No IP assigned - state UP only
Container(adminuser)
Macvlan Virtual Network(macvlan0)
172.16.1.3

Critical Note:SSH切断の回避

ホストOSのルーティング破壊(SSH切断)を防ぐため、ホストOS側には仮想インターフェース(macvlan0)のIPアドレスを意図的に割り当てない(state UPのみ)。これにより、1つのNICから2つの完全に独立したIPを抽出し、FortiGateからの直接通信を可能にする。

横断解説2:究極の二重Brevoリレーと到達率100%への道

Postfix
Submission 587
SASL Auth
STARTTLS
Brevo SMTP Relay
smtp-relay.brevo.com:587
Internet
ISP制限の回避
自宅回線の25番ポートブロック

自宅回線の25番ポートブロック(OP25B)を回避するため、Brevoをスマートホストとして利用(Port 587)。

暗号化と認証
STARTTLS + SASL

STARTTLSで暗号化トンネルを構築し、sasl_passwdを用いたBase64認証でBrevoへログイン。

二重の独立リレー
ホスト・コンテナ双方から

ホスト(yama)とコンテナ(adminuser)の両方が、独立したSMTPキーを用いてBrevoへリレー送信。スパム判定を回避し、クリーンなIPからの正規配信を実現。

横断解説3:送信ドメイン認証(3重の身分証明)

第一の門
SPF(正規の配達員リスト)

TXTレコードで「Brevoが代理送信すること」を正式に許可。IPアドレスの照合。

第二の門
DKIM(電子実印)

CNAME経由で、メール内容が改ざんされていないことを暗号技術(公開鍵/秘密鍵)で数学的に証明。

第三の門
DMARC(不合格時のルール)

偽物が届いた際の破棄・レポートポリシー(p=none)を宣言し、なりすましを防止。結果の最終統合判定。

横断解説4:サーバー要塞化を支える多層防御(Defense in Depth)

24時間体制の自動追放:Fail2ban
  1. Read Logs(maillog / secure)を常時監視
  2. Detect 5 Failures(maxretry=5 / findtime=10m)でSSH・Postfix-SASL・Dovecotへの総当たり攻撃を検知
  3. Block IP(firewall-cmd --ipset)で攻撃者IPを即座にブロック
  4. Release after 30m(bantime=30m)で一定時間後に解除
OS内部の絶対的看守:SELinux(Enforcing)

Disabledにはせず、強制モードを維持。Webサーバーが外部通信する特例(httpd_can_network_connect)や、証明書へのアクセス権(restoreconによるcert_t付与)を厳密に管理。

総括マトリックス:主要な実施事項と成功のための鍵

分野項目成功のための鍵
DNS親子DNSの連携MyDNSでの委任と、ホスト上のBINDが常に「最新のグローバルIP」を公開していること。動的IPスクリプトの確実な稼働。
Email二重のBrevoリレーホスト(yama)もコンテナ(adminuser)も、それぞれBrevoへの認証を設定し、SPF/DKIM/DMARCで完全に保護すること。
Security多層防御の完遂FortiGate(物理)→ firewalld(OS)→ Fail2ban(ログ監視)→ SELinux(動作制限)をすべて有効に維持すること。
Networkmacvlanの構築コンテナがホストのルーティング(SSH)を壊さず、完全に独立した仮想インターフェースとして外部通信を確立すること。

一切の省略がない最終形

これが、安全性と拡張性を両立した要塞化インフラの全体像です。各詳細な構築手順は、Rocky Linux 9のセットアップ・セキュリティ・Webサーバー・Mailサーバーの各ページで解説しています。

Rocky Linux 9 一覧へ戻る