<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>運用・保守 on KnightLiブログ</title>
        <link>https://knightli.com/ja/categories/%E9%81%8B%E7%94%A8%E4%BF%9D%E5%AE%88/</link>
        <description>Recent content in 運用・保守 on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Thu, 07 May 2026 21:03:12 +0800</lastBuildDate><atom:link href="https://knightli.com/ja/categories/%E9%81%8B%E7%94%A8%E4%BF%9D%E5%AE%88/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>2026年の Linux サーバー向けディストリビューション選び：Debian、Rocky Linux、AlmaLinux、Ubuntu Server 比較</title>
        <link>https://knightli.com/ja/2026/05/07/linux-server-distro-comparison-2026/</link>
        <pubDate>Thu, 07 May 2026 21:03:12 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/07/linux-server-distro-comparison-2026/</guid>
        <description>&lt;p&gt;2026年に Linux サーバー向けディストリビューションを選ぶとき、重要なのは「どれが一番良いか」ではなく、「どれが自分たちの運用モデルに合うか」です。&lt;/p&gt;
&lt;p&gt;最も安定したコミュニティディストリビューションが必要なら、Debian は今でも有力な第一候補です。RHEL 互換エコシステムが必要だが RHEL を直接購入したくない場合、Rocky Linux と AlmaLinux は CentOS 後の自然な代替です。クラウドイメージ、ドキュメント、素早いデプロイ、新しめのパッケージを重視するなら、Ubuntu Server が今でも最も楽です。&lt;/p&gt;
&lt;p&gt;以下では、サーバー用途の実務目線で比較します。&lt;/p&gt;
&lt;h2 id=&#34;早見表&#34;&gt;早見表
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;ディストリビューション&lt;/th&gt;
          &lt;th&gt;最適な用途&lt;/th&gt;
          &lt;th&gt;主な利点&lt;/th&gt;
          &lt;th&gt;注意点&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Debian&lt;/td&gt;
          &lt;td&gt;長期安定、自ホスト、基礎サービス&lt;/td&gt;
          &lt;td&gt;安定、簡潔、強いコミュニティ、自由ソフトウェアの伝統&lt;/td&gt;
          &lt;td&gt;標準パッケージは保守的。企業向け商用サポートは RHEL/Ubuntu ほど明確ではない&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Rocky Linux&lt;/td&gt;
          &lt;td&gt;RHEL 互換の本番環境&lt;/td&gt;
          &lt;td&gt;RHEL に近い運用習慣。CentOS からの企業移行に向く&lt;/td&gt;
          &lt;td&gt;パッケージ更新は保守的。デスクトップや新技術体験は主目的ではない&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AlmaLinux&lt;/td&gt;
          &lt;td&gt;RHEL 互換本番環境、クラウド、企業向け代替&lt;/td&gt;
          &lt;td&gt;RHEL 互換、活発なコミュニティ、明確なライフサイクル&lt;/td&gt;
          &lt;td&gt;RHEL と少し差異があるため release notes の確認が必要&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Ubuntu Server&lt;/td&gt;
          &lt;td&gt;クラウドサーバー、コンテナ、開発デプロイ&lt;/td&gt;
          &lt;td&gt;クラウド対応が強い、資料が多い、デプロイが速い、LTS が長い&lt;/td&gt;
          &lt;td&gt;Snap、HWE カーネル、PPA はチーム内ルールが必要&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一言で言うと次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;最も無難な汎用選択&lt;/strong&gt;：Debian。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;企業向け RHEL エコシステム代替&lt;/strong&gt;：Rocky Linux / AlmaLinux。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;クラウドと開発効率優先&lt;/strong&gt;：Ubuntu Server。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;debian岩のような安定性&#34;&gt;Debian：岩のような安定性
&lt;/h2&gt;&lt;p&gt;2026年5月時点で、Debian の current stable は Debian 13 &lt;code&gt;trixie&lt;/code&gt; です。Debian 12 &lt;code&gt;bookworm&lt;/code&gt; は oldstable に移行しており、セキュリティと LTS サポートはありますが、新規サーバー導入では Debian 13 を優先して検討するのがよいでしょう。&lt;/p&gt;
&lt;p&gt;Debian の特徴は一貫しています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;標準パッケージ選択は保守的。&lt;/li&gt;
&lt;li&gt;システム構造がきれい。&lt;/li&gt;
&lt;li&gt;商用ベンダーに強く縛られない。&lt;/li&gt;
&lt;li&gt;コミュニティガバナンスが成熟している。&lt;/li&gt;
&lt;li&gt;長期稼働する基礎サービスに向く。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;次のようなサーバーなら Debian は扱いやすいです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nginx / Apache。&lt;/li&gt;
&lt;li&gt;PostgreSQL / MariaDB / Redis。&lt;/li&gt;
&lt;li&gt;Docker / Podman。&lt;/li&gt;
&lt;li&gt;WireGuard / Tailscale。&lt;/li&gt;
&lt;li&gt;ファイルサービス、バックアップサービス、監視サービス。&lt;/li&gt;
&lt;li&gt;小規模な自ホストアプリ。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Debian の強みは「最新」ではなく「手間が少ない」ことです。多くのサーバーはインストール後、数年間は通常のセキュリティ更新と小さな保守だけで動かせます。&lt;/p&gt;
&lt;p&gt;Debian に向いている場面：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;システムをなるべく素朴に保ち、ディストリビューションベンダーの戦略に振り回されたくない。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apt&lt;/code&gt;、systemd、Debian のファイル構成に慣れている。&lt;/li&gt;
&lt;li&gt;ソフトウェアが最新版でなくてもよい。&lt;/li&gt;
&lt;li&gt;安定性、セキュリティ更新、予測しやすいアップグレードを重視する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Debian にあまり向かない場面：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ベンダーが RHEL または Ubuntu だけを認証している。&lt;/li&gt;
&lt;li&gt;SLA 付きの企業向け商用サポートが必要。&lt;/li&gt;
&lt;li&gt;最新カーネル、最新 GPU スタック、新しいハードウェア対応に依存している。&lt;/li&gt;
&lt;li&gt;チームの運用標準が全面的に RHEL 系エコシステムで書かれている。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;私の判断では、個人サーバー、自ホスト、軽量 SaaS、小規模チームの基礎サービスでは、Debian は今でも非常に有力です。&lt;/p&gt;
&lt;h2 id=&#34;rocky-linuxcentos-後の堅実な代替&#34;&gt;Rocky Linux：CentOS 後の堅実な代替
&lt;/h2&gt;&lt;p&gt;Rocky Linux の位置付けは明確です。RHEL 互換エコシステムを必要とするユーザー向けであり、かつて CentOS Linux が企業本番環境で果たしていた役割を引き継ぎます。&lt;/p&gt;
&lt;p&gt;2026年時点で、Rocky Linux 9 と Rocky Linux 10 はどちらもサポート期間内です。Rocky Linux 9 はより保守的な本番環境に向き、Rocky Linux 10 は新規プロジェクト、新しいハードウェア、より長い将来期間に向きます。&lt;/p&gt;
&lt;p&gt;Rocky Linux に向く場面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以前 CentOS 7 / CentOS 8 を使っていた企業環境。&lt;/li&gt;
&lt;li&gt;RHEL 系のディレクトリ構造、パッケージ名、運用習慣が必要。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dnf&lt;/code&gt;、RPM、SELinux、firewalld に依存している。&lt;/li&gt;
&lt;li&gt;ソフトウェアベンダーが RHEL-compatible ディストリビューションを明示的にサポートしている。&lt;/li&gt;
&lt;li&gt;社内自動化スクリプトが Enterprise Linux 前提で書かれている。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;利点は移行の抵抗が小さいことです。多くのチームは CentOS を前提に Ansible playbook、監視ルール、監査スクリプト、セキュリティベースラインを長年積み上げています。Rocky Linux への移行は、Debian や Ubuntu への移行より心理的負担が小さいです。&lt;/p&gt;
&lt;p&gt;Rocky Linux の注意点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;パッケージバージョンは保守的です。これは Enterprise Linux の設計目標であり、欠点ではありません。&lt;/li&gt;
&lt;li&gt;非常に新しいユーザー空間コンポーネントが必要な場合、EPEL、第三者リポジトリ、またはコンテナに頼ることがあります。&lt;/li&gt;
&lt;li&gt;RHEL 互換は、すべての商用ソフトウェアベンダーが自動的に正式サポートするという意味ではありません。認証リストを確認してください。&lt;/li&gt;
&lt;li&gt;Rocky Linux 10 はハードウェア基準や第三者エコシステムに新しい要件があります。本番投入前に検証が必要です。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;私の判断では、サーバー環境がもともと CentOS / RHEL 系なら、Rocky Linux は非常に自然な代替です。特に安定した本番環境と企業内部サービスに向いています。&lt;/p&gt;
&lt;h2 id=&#34;almalinuxより能動的な-rhel-互換ルート&#34;&gt;AlmaLinux：より能動的な RHEL 互換ルート
&lt;/h2&gt;&lt;p&gt;AlmaLinux も CentOS 後の重要な代替です。位置付けは同じく、企業向け、長期サポート、RHEL 互換です。&lt;/p&gt;
&lt;p&gt;Rocky Linux との共通点は多くあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;どちらも RHEL 互換エコシステム向け。&lt;/li&gt;
&lt;li&gt;どちらもサーバー本番環境に向く。&lt;/li&gt;
&lt;li&gt;どちらも 8、9、10 の長期サポート系列を持つ。&lt;/li&gt;
&lt;li&gt;どちらも CentOS からの移行に向く。&lt;/li&gt;
&lt;li&gt;どちらも多くの Enterprise Linux エコシステムツールを使える。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;違いは、AlmaLinux が RHEL 互換を保ちながら、上流との差異をより積極的に記録・処理する点です。たとえば AlmaLinux 10 は古いハードウェア向けに &lt;code&gt;x86-64-v2&lt;/code&gt; アーキテクチャ選択肢を提供し、release notes で RHEL との差異を明確に説明しています。&lt;/p&gt;
&lt;p&gt;これは一部のユーザーに有用です。RHEL エコシステムに留まりつつ、ハードウェア対応、パッケージビルド、EPEL 互換性でより柔軟なコミュニティディストリビューションを求める場合です。&lt;/p&gt;
&lt;p&gt;AlmaLinux に向く場面：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;RHEL 互換が必要だが、RHEL のリリース戦略に完全には縛られたくない。&lt;/li&gt;
&lt;li&gt;コミュニティガバナンスと透明な release notes を重視する。&lt;/li&gt;
&lt;li&gt;クラウド、コンテナイメージ、企業ワークロードで安定したベースシステムが必要。&lt;/li&gt;
&lt;li&gt;CentOS や古い Enterprise Linux から平滑に移行したい。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注意すべき点は、AlmaLinux が「目を閉じれば RHEL と同じ」ではないことです。厳格なコンプライアンス、ベンダー認証、データベース認証、ハードウェア認証が必要な場面では、ソフトウェアベンダーが AlmaLinux を明示的にサポートしているか確認してください。&lt;/p&gt;
&lt;p&gt;私の判断では、Rocky Linux と AlmaLinux はどちらも CentOS 代替になります。より保守的で伝統的な CentOS 的ストーリーを好むなら Rocky、コミュニティ透明性と柔軟な互換ルートを重視するなら AlmaLinux です。&lt;/p&gt;
&lt;h2 id=&#34;ubuntu-serverクラウド対応とデプロイ効率が最も強い&#34;&gt;Ubuntu Server：クラウド対応とデプロイ効率が最も強い
&lt;/h2&gt;&lt;p&gt;Ubuntu Server の強みは現実的です。クラウドプラットフォーム、ドキュメント、コミュニティチュートリアル、イメージ、自動化ツール、開発者エコシステムが強いです。&lt;/p&gt;
&lt;p&gt;2026年の新規サーバー導入では、主力は引き続き Ubuntu 24.04 LTS です。Ubuntu LTS は通常 5 年の標準サポートを持ち、ESM による延長も可能です。クラウドサーバー、コンテナホスト、開発環境、CI/CD ノードでは、Ubuntu Server が最も早く使える選択になることが多いです。&lt;/p&gt;
&lt;p&gt;Ubuntu Server に向く場面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AWS、Azure、Google Cloud、Oracle Cloud、Alibaba Cloud、Tencent Cloud などのクラウドサーバー。&lt;/li&gt;
&lt;li&gt;Docker、Kubernetes、GitLab Runner、CI/CD。&lt;/li&gt;
&lt;li&gt;AI / GPU / CUDA 開発環境。&lt;/li&gt;
&lt;li&gt;大量のチュートリアルとコミュニティ解法が必要なチーム。&lt;/li&gt;
&lt;li&gt;開発と本番をできるだけ同じ環境にしたい場合。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ubuntu の利点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;クラウドイメージの品質が高い。&lt;/li&gt;
&lt;li&gt;公式・第三者ドキュメントが多い。&lt;/li&gt;
&lt;li&gt;新しいハードウェア対応が比較的積極的。&lt;/li&gt;
&lt;li&gt;LTS のリズムが明確。&lt;/li&gt;
&lt;li&gt;開発者ツールチェーンを更新しやすい。&lt;/li&gt;
&lt;li&gt;多くの商用ソフトウェアが Ubuntu 向け手順を優先して用意する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ubuntu の注意点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;サーバーで Snap を好まないチームもあるため、利用方針は事前に決めるべきです。&lt;/li&gt;
&lt;li&gt;PPA は便利ですが、本番環境で乱用すると保守リスクが増えます。&lt;/li&gt;
&lt;li&gt;HWE カーネル、クラウドカーネル、標準カーネルのどれを使うか明確にする必要があります。&lt;/li&gt;
&lt;li&gt;極めてミニマルな安定性を好む人には、Ubuntu の標準構成は Debian より「にぎやか」に感じられます。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;私の判断では、クラウドサーバー、コンテナ、開発デプロイ、AI ツールチェーンが中心なら、Ubuntu Server は通常最も効率的です。最も「純粋」なディストリビューションではありませんが、多くの作業で調査とつまずきを減らしてくれます。&lt;/p&gt;
&lt;h2 id=&#34;四つをどう選ぶか&#34;&gt;四つをどう選ぶか
&lt;/h2&gt;&lt;h3 id=&#34;個人-vps--自ホスト&#34;&gt;個人 VPS / 自ホスト
&lt;/h3&gt;&lt;p&gt;Debian または Ubuntu Server を優先します。&lt;/p&gt;
&lt;p&gt;安定、省心、低メンテナンスを求めるなら Debian。チュートリアルに沿って新しいプロジェクトを頻繁にデプロイする、または新しめのソフトウェアスタックが必要なら Ubuntu Server です。&lt;/p&gt;
&lt;h3 id=&#34;企業本番環境&#34;&gt;企業本番環境
&lt;/h3&gt;&lt;p&gt;Rocky Linux、AlmaLinux、または RHEL を優先します。&lt;/p&gt;
&lt;p&gt;会社が以前 CentOS を使っていたなら、Rocky / Alma への移行コストが最も低いです。商用データベース、ハードウェア認証、セキュリティコンプライアンス、ベンダーサポートが関わる場合は、認証リストを先に確認してください。&lt;/p&gt;
&lt;h3 id=&#34;クラウドネイティブとコンテナホスト&#34;&gt;クラウドネイティブとコンテナホスト
&lt;/h3&gt;&lt;p&gt;Ubuntu Server、Debian、Rocky / Alma はいずれも使えます。&lt;/p&gt;
&lt;p&gt;開発効率を重視するチームなら Ubuntu Server。極簡安定を求めるなら Debian。企業標準が RHEL 系なら Rocky / Alma です。&lt;/p&gt;
&lt;h3 id=&#34;ai--gpu-サーバー&#34;&gt;AI / GPU サーバー
&lt;/h3&gt;&lt;p&gt;まず Ubuntu Server、次に Rocky / Alma を見ます。&lt;/p&gt;
&lt;p&gt;理由は単純です。NVIDIA、CUDA、PyTorch、TensorFlow、ドライバ導入手順、コミュニティ経験は Ubuntu が最も多いことが一般的です。企業 GPU クラスターがすでに RHEL エコシステムで構築されている場合は Rocky / Alma も選べますが、ドライバ、CUDA、コンテナランタイム、監視ツールは事前検証が必要です。&lt;/p&gt;
&lt;h3 id=&#34;伝統的な業務システム&#34;&gt;伝統的な業務システム
&lt;/h3&gt;&lt;p&gt;Rocky Linux / AlmaLinux を優先します。&lt;/p&gt;
&lt;p&gt;伝統的な Java、データベース、ミドルウェア、商用ソフトウェア、監査、運用標準は RHEL 系に寄りがちです。この場合、Rocky / Alma は Debian / Ubuntu より既存体系に合わせやすいです。&lt;/p&gt;
&lt;h2 id=&#34;選ぶ前に見るべき指標&#34;&gt;選ぶ前に見るべき指標
&lt;/h2&gt;&lt;p&gt;ディストリビューション名だけで選ばないことです。サーバー選定では、次の質問で判断するのがよいでしょう。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;ライフサイクル&lt;/strong&gt;：このバージョンは何年まで保守されるか。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;アップグレード経路&lt;/strong&gt;：メジャーバージョンアップは成熟しているか。平滑移行は可能か。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ソフトウェア供給元&lt;/strong&gt;：第三者リポジトリに依存するか。誰が保守しているか。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;セキュリティ更新&lt;/strong&gt;：セキュリティアドバイザリ、パッチ頻度、CVE 対応は明確か。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ハードウェア対応&lt;/strong&gt;：CPU、NIC、RAID、GPU、ストレージコントローラは検証済みか。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;チーム経験&lt;/strong&gt;：チームは &lt;code&gt;apt&lt;/code&gt; と &lt;code&gt;dnf&lt;/code&gt; のどちらに慣れているか。Debian 系か RHEL 系か。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ベンダー認証&lt;/strong&gt;：業務ソフトウェアはそのディストリビューションを明示的にサポートしているか。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自動化資産&lt;/strong&gt;：既存の Ansible、Terraform、イメージビルドスクリプトを再利用できるか。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;本当のコストはインストール ISO ではありません。今後 5 年のアップグレード、監査、トラブルシュート、引き継ぎです。&lt;/p&gt;
&lt;h2 id=&#34;私のおすすめ構成&#34;&gt;私のおすすめ構成
&lt;/h2&gt;&lt;p&gt;2026年のサーバー選定でデフォルト案を出すなら次の通りです。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;場面&lt;/th&gt;
          &lt;th&gt;推奨&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;個人 VPS、自ホスト&lt;/td&gt;
          &lt;td&gt;Debian 13&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;クラウドサーバー、素早いデプロイ&lt;/td&gt;
          &lt;td&gt;Ubuntu Server 24.04 LTS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CentOS 移行&lt;/td&gt;
          &lt;td&gt;Rocky Linux 9 / AlmaLinux 9&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;新規企業プロジェクト&lt;/td&gt;
          &lt;td&gt;Rocky Linux 10 / AlmaLinux 10。先にエコシステム検証&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI / GPU 開発&lt;/td&gt;
          &lt;td&gt;Ubuntu Server 24.04 LTS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;強いコンプライアンスが必要な商用本番&lt;/td&gt;
          &lt;td&gt;RHEL、またはベンダーサポート確認後に Rocky / Alma&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;短い結論&#34;&gt;短い結論
&lt;/h2&gt;&lt;p&gt;Debian のキーワードは、安定、簡潔、コミュニティ、自由ソフトウェアの伝統です。長期稼働する基礎サーバーに向きます。&lt;/p&gt;
&lt;p&gt;Rocky Linux と AlmaLinux のキーワードは、RHEL 互換、企業本番、CentOS 代替です。既存の Enterprise Linux 運用体系を持つチームに向きます。&lt;/p&gt;
&lt;p&gt;Ubuntu Server のキーワードは、クラウド、ドキュメント、開発効率、エコシステムの完全性です。素早いデプロイ、コンテナ、AI/GPU、クラウドサーバーに向きます。&lt;/p&gt;
&lt;p&gt;永遠に正しいディストリビューションはありません。チーム、業務、ハードウェア、ライフサイクルに最も合うものが正解です。サーバーで最良の選択は、たいてい一番流行っているものではなく、5 年後も保守する気になれるものです。&lt;/p&gt;
&lt;h2 id=&#34;関連リンク&#34;&gt;関連リンク
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Debian Releases：&lt;a class=&#34;link&#34; href=&#34;https://www.debian.org/releases/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.debian.org/releases/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ubuntu Releases：&lt;a class=&#34;link&#34; href=&#34;https://releases.ubuntu.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://releases.ubuntu.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rocky Linux Release and Version Guide：&lt;a class=&#34;link&#34; href=&#34;https://wiki.rockylinux.org/rocky/version/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://wiki.rockylinux.org/rocky/version/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AlmaLinux Release Notes：&lt;a class=&#34;link&#34; href=&#34;https://wiki.almalinux.org/release-notes/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://wiki.almalinux.org/release-notes/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Nginx のレート制限設定：高頻度の 404・400 スキャンリクエストに rate limit をかける</title>
        <link>https://knightli.com/ja/2026/05/01/nginx-rate-limit-404-400-scan-requests/</link>
        <pubDate>Fri, 01 May 2026 05:41:31 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/01/nginx-rate-limit-404-400-scan-requests/</guid>
        <description>&lt;p&gt;Web サイトのログに突然大量の &lt;code&gt;404&lt;/code&gt; や &lt;code&gt;400&lt;/code&gt; が出る場合、原因は通常ユーザーがリンクを押し間違えたことではなく、自動スキャナーが &lt;code&gt;.env&lt;/code&gt;、&lt;code&gt;.git&lt;/code&gt;、&lt;code&gt;wp-admin&lt;/code&gt;、&lt;code&gt;phpmyadmin&lt;/code&gt;、&lt;code&gt;xmlrpc.php&lt;/code&gt; といったパスを探っていることが多いです。&lt;/p&gt;
&lt;p&gt;この種のリクエストには、いくつか問題があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;access log が急速に大きくなる&lt;/li&gt;
&lt;li&gt;error log が意味の薄い記録で埋まる&lt;/li&gt;
&lt;li&gt;静的サイトやリバースプロキシの接続が無効なリクエストに使われる&lt;/li&gt;
&lt;li&gt;本当に見るべき問題がスキャンノイズに埋もれる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nginx では &lt;code&gt;limit_req&lt;/code&gt; と &lt;code&gt;limit_conn&lt;/code&gt; を使って制限できます。ただし先に一点だけ重要です。Nginx は「レスポンスステータスが 404 または 400 だったら制限する」という処理を標準機能だけで直接行うことはできません。レート制限はレスポンス生成前に行われるためです。&lt;/p&gt;
&lt;p&gt;実際には、&lt;code&gt;404&lt;/code&gt; / &lt;code&gt;400&lt;/code&gt; を生みやすいスキャンパス、異常なアクセス元、サイト全体の高頻度アクセスを事前に制限します。&lt;/p&gt;
&lt;h2 id=&#34;基本方針&#34;&gt;基本方針
&lt;/h2&gt;&lt;p&gt;まずは三層に分けるのがおすすめです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;サイト全体にゆるいレート制限をかけ、単一 IP による高頻度アクセスを抑える。&lt;/li&gt;
&lt;li&gt;よくあるスキャンパスには厳しめの制限をかけ、直接 &lt;code&gt;404&lt;/code&gt; を返す。&lt;/li&gt;
&lt;li&gt;IP ごとの同時接続数を制限する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;より安全な導入順は、まずスキャンパスのルールと &lt;code&gt;access_log off&lt;/code&gt; を入れて 1 日観察することです。それでもランダムパスの &lt;code&gt;404&lt;/code&gt; が多い場合に、サイト全体の &lt;code&gt;limit_req&lt;/code&gt; を追加します。&lt;/p&gt;
&lt;h2 id=&#34;まず-http-でレート制限用-zone-を定義する&#34;&gt;まず http でレート制限用 zone を定義する
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;limit_req_zone&lt;/code&gt; と &lt;code&gt;limit_conn_zone&lt;/code&gt; は必ず &lt;code&gt;http {}&lt;/code&gt; の中に置きます。個別サイトの &lt;code&gt;server {}&lt;/code&gt; には置けません。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/etc/nginx/nginx.conf&lt;/code&gt; の &lt;code&gt;http {}&lt;/code&gt; に直接書けます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;http&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 按客户端 IP 限速，普通页面请求
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;limit_req_zone&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$binary_remote_addr&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=perip_general:20m&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;rate=5r/s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 更严格：疑似扫描路径
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;limit_req_zone&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$binary_remote_addr&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=perip_scan:20m&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;rate=1r/s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 并发连接限制
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;limit_conn_zone&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$binary_remote_addr&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=addr_conn:20m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;include&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/etc/nginx/conf.d/*.conf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;include&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/etc/nginx/sites-enabled/*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;別ファイルを作っても構いません。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo nano /etc/nginx/conf.d/limit-zones.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;内容は次の通りです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;limit_req_zone&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$binary_remote_addr&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=perip_general:20m&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;rate=5r/s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;limit_req_zone&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$binary_remote_addr&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=perip_scan:20m&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;rate=1r/s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;limit_conn_zone&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$binary_remote_addr&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=addr_conn:20m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;前提として、&lt;code&gt;nginx.conf&lt;/code&gt; の &lt;code&gt;http {}&lt;/code&gt; 内で次が include されている必要があります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;include&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;/etc/nginx/conf.d/*.conf&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;次に-server-で-zone-を使う&#34;&gt;次に server で zone を使う
&lt;/h2&gt;&lt;p&gt;サイト設定ファイルは通常 &lt;code&gt;/etc/nginx/sites-enabled/www.example.com&lt;/code&gt; のような場所にあり、中身はたいてい &lt;code&gt;server {}&lt;/code&gt; です。ここには &lt;code&gt;limit_req_zone&lt;/code&gt; を書かず、前段で定義した zone だけを使います。&lt;/p&gt;
&lt;p&gt;例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;root&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/srv/www/example.com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;index.html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;server_name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;example.com&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;www.example.com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;access_log&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/var/log/nginx/example.com.access.log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;error_log&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/var/log/nginx/example.com.error.log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 全站温和限速：允许短时突发，降低误伤正常用户的概率
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;limit_req&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=perip_general&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;burst=30&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;nodelay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;limit_conn&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;addr_conn&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 对常见扫描路径严格限速，并关闭访问日志
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;^/(\.env|\.git|\.svn|wp-|wp/|adminer|phpmyadmin|pma|vendor|backup|config|server-status|cgi-bin|xmlrpc\.php)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;access_log&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;off&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;limit_req&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=perip_scan&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;burst=5&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;nodelay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;404&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# 你原来的 location /、listen ssl 等配置继续放这里
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;サイト全体のレート制限で通常アクセスを巻き込むのが心配なら、最初はスキャンパスだけにしてもよいです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;^/(\.env|\.git|\.svn|wp-|wp/|adminer|phpmyadmin|pma|vendor|backup|config|server-status|cgi-bin|xmlrpc\.php)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;access_log&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;off&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;limit_req&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=perip_scan&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;burst=5&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;nodelay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;404&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;各パラメータの意味&#34;&gt;各パラメータの意味
&lt;/h2&gt;&lt;p&gt;この行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;limit_req_zone&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$binary_remote_addr&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=perip_general:20m&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;rate=5r/s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;意味は次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;limit_req_zone&lt;/code&gt;：リクエストのレート制限に使うカウント用 zone を定義する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$binary_remote_addr&lt;/code&gt;：クライアント IP を制限キーにする。&lt;code&gt;$remote_addr&lt;/code&gt; よりメモリ効率がよい。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;zone=perip_general:20m&lt;/code&gt;：&lt;code&gt;perip_general&lt;/code&gt; という名前の共有メモリ領域を &lt;code&gt;20m&lt;/code&gt; のサイズで作る。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rate=5r/s&lt;/code&gt;：IP ごとに平均で毎秒 5 リクエストまで許可する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;limit_req_zone&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$binary_remote_addr&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=perip_scan:20m&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;rate=1r/s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;基本は同じですが、より厳しい設定です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;perip_scan&lt;/code&gt;：疑わしいスキャンパス専用。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rate=1r/s&lt;/code&gt;：IP ごとに毎秒 1 リクエストだけ許可する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;limit_conn_zone&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$binary_remote_addr&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=addr_conn:20m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;意味は次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;limit_conn_zone&lt;/code&gt;：同時接続数制限に使うカウント用 zone を定義する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$binary_remote_addr&lt;/code&gt;：ここでもクライアント IP ごとに集計する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;zone=addr_conn:20m&lt;/code&gt;：&lt;code&gt;addr_conn&lt;/code&gt; という名前の接続数カウント用共有メモリ領域を作る。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;実際に同時接続数を制限するのは次です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;limit_conn&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;addr_conn&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これは、各 IP の同時接続を最大 20 本にする、という意味です。&lt;/p&gt;
&lt;h2 id=&#34;burst-と-nodelay-の考え方&#34;&gt;burst と nodelay の考え方
&lt;/h2&gt;&lt;p&gt;例えば：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;limit_req&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=perip_general&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;burst=30&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;nodelay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;次のように理解できます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rate=5r/s&lt;/code&gt;：長期的な平均レートは毎秒 5 リクエスト。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;burst=30&lt;/code&gt;：短時間の突発分として 30 リクエストまで許容する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nodelay&lt;/code&gt;：平均レートを超えても &lt;code&gt;burst&lt;/code&gt; 内なら待たせず処理し、&lt;code&gt;burst&lt;/code&gt; を超えたら拒否する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;nodelay&lt;/code&gt; がない場合、Nginx は一部リクエストを遅延させてキューに入れようとします。通常の Web ページでは &lt;code&gt;nodelay&lt;/code&gt; のほうが挙動を理解しやすいことが多いです。API や特に敏感なエンドポイントでは、実際の挙動に合わせて調整します。&lt;/p&gt;
&lt;h2 id=&#34;よくあるエラーlimit_req_zone-の配置場所が違う&#34;&gt;よくあるエラー：limit_req_zone の配置場所が違う
&lt;/h2&gt;&lt;p&gt;次のようなエラーが出た場合：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2026/04/30 21:33:48 [emerg] 2290771#2290771: &amp;#34;limit_req_zone&amp;#34; directive is not allowed here in /etc/nginx/sites-enabled/example.com:9
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これは、&lt;code&gt;limit_req_zone&lt;/code&gt; を許可されていない場所に書いたという意味です。&lt;/p&gt;
&lt;p&gt;よくある誤りは、&lt;code&gt;server {}&lt;/code&gt; の中に置いてしまうことです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;root&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/srv/www/example.com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;index.html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;server_name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;example.com&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;www.example.com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;limit_req_zone&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$binary_remote_addr&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=perip_general:20m&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;rate=5r/s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;limit_req_zone&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$binary_remote_addr&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=perip_scan:20m&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;rate=1r/s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;limit_conn_zone&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$binary_remote_addr&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;zone=addr_conn:20m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これは動きません。&lt;/p&gt;
&lt;p&gt;覚え方はシンプルです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;limit_req_zone&lt;/code&gt; は「プールを定義する」ものなので &lt;code&gt;http {}&lt;/code&gt; に置く。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;limit_req&lt;/code&gt; は「プールを使う」ものなので &lt;code&gt;server {}&lt;/code&gt; または &lt;code&gt;location {}&lt;/code&gt; に置く。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;limit_conn_zone&lt;/code&gt; は「接続プールを定義する」ものなので &lt;code&gt;http {}&lt;/code&gt; に置く。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;limit_conn&lt;/code&gt; は「接続プールを使う」ものなので &lt;code&gt;server {}&lt;/code&gt; または &lt;code&gt;location {}&lt;/code&gt; に置く。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;明らかに異常な-ip-を一時的に拒否する&#34;&gt;明らかに異常な IP を一時的に拒否する
&lt;/h2&gt;&lt;p&gt;ログから、特定の IP が継続的にスキャンしていると確認できている場合は、一時的に拒否してもよいです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;deny&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;45.95.42.164&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;deny&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;185.177.72.51&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;deny&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;185.177.72.5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;deny&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;185.177.72.56&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;deny&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;185.177.72.58&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;この種の &lt;code&gt;deny&lt;/code&gt; は &lt;code&gt;server {}&lt;/code&gt; にも、特定の &lt;code&gt;location {}&lt;/code&gt; にも置けます。長期的に残すかどうかは、誤検知リスクとアクセス元を見て判断します。&lt;/p&gt;
&lt;h2 id=&#34;チェックしてリロードする&#34;&gt;チェックしてリロードする
&lt;/h2&gt;&lt;p&gt;変更後はまず設定を確認します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo nginx -t
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;問題がなければリロードします。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl reload nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;いきなりサービスを再起動しないほうがよいです。&lt;code&gt;reload&lt;/code&gt; なら Nginx が新しい設定を滑らかに読み込むため、リスクが低くなります。&lt;/p&gt;
&lt;h2 id=&#34;推奨パラメータ&#34;&gt;推奨パラメータ
&lt;/h2&gt;&lt;p&gt;個人サイトや静的サイトなら、まずは次の値から始めるとよいです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通常ページ：&lt;code&gt;rate=5r/s&lt;/code&gt; から &lt;code&gt;10r/s&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;スキャンパス：&lt;code&gt;rate=1r/s&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;スキャンパスの &lt;code&gt;burst=5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;サイト全体の &lt;code&gt;burst=30&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;IP ごとの同時接続：&lt;code&gt;10&lt;/code&gt; から &lt;code&gt;20&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通常ユーザーのアクセスが少ないサイトなら、さらに厳しくできます。画像、スクリプト、API リクエストが多いサイトでは、通常ページの制限を少し緩めて、本物のアクセスを巻き込まないようにします。&lt;/p&gt;
&lt;p&gt;一番安全なのは段階的に入れる方法です。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;まずスキャンパスに &lt;code&gt;access_log off&lt;/code&gt; + &lt;code&gt;return 404&lt;/code&gt; を入れる。&lt;/li&gt;
&lt;li&gt;次に &lt;code&gt;perip_scan&lt;/code&gt; の厳しいレート制限を加える。&lt;/li&gt;
&lt;li&gt;1 日ログを見る。&lt;/li&gt;
&lt;li&gt;ランダムパスの 404 がまだ多い場合、サイト全体のゆるいレート制限を有効にする。&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>Ubuntu 26.04 LTS の GPU とハードウェア対応アップデート: CUDA、ROCm、DPC&#43;&#43;、そして各種プラットフォームの変更</title>
        <link>https://knightli.com/ja/2026/04/26/ubuntu-26-04-lts-gpu-hardware-ai-updates/</link>
        <pubDate>Sun, 26 Apr 2026 19:35:57 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/26/ubuntu-26-04-lts-gpu-hardware-ai-updates/</guid>
        <description>&lt;p&gt;前の記事が &lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; のデスクトップ全体像だったとすれば、こちらはハードウェアと計算基盤まわりの補足版です。今回の &lt;code&gt;26.04&lt;/code&gt; では、AI、GPU コンピューティング、プラットフォーム互換性に関わる項目が、メインアーカイブや正式サポートの範囲にかなり取り込まれています。&lt;/p&gt;
&lt;p&gt;先に結論を言うと、今回の注目点は単なるデスクトップやカーネルの更新ではなく、&lt;strong&gt;Ubuntu が Intel、NVIDIA、AMD の GPU コンピューティングスタックを、より体系的にディストリビューションへ取り込み始めたこと&lt;/strong&gt;です。&lt;/p&gt;
&lt;h2 id=&#34;1-intel-dpc-と関連コンポーネントが-ubuntu-archive-に追加&#34;&gt;1. Intel DPC++ と関連コンポーネントが Ubuntu Archive に追加
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;26.04&lt;/code&gt; から、Intel のオープンソース &lt;code&gt;oneAPI DPC++&lt;/code&gt; コンパイラが Ubuntu Archive から直接利用できるようになり、&lt;code&gt;SYCL&lt;/code&gt; コードのビルドに使えます。ランタイムには Intel GPU 向けアダプタも含まれます。&lt;/p&gt;
&lt;p&gt;あわせて、次の関連コンポーネントも Ubuntu リポジトリで利用可能になりました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;oneDPL&lt;/code&gt;。DPC++ library として、より高生産性な開発 API を提供&lt;/li&gt;
&lt;li&gt;&lt;code&gt;oneDNN&lt;/code&gt;。&lt;code&gt;dpclang-6&lt;/code&gt; でビルドされており、Intel GPU 上で実行可能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、すでに &lt;code&gt;SYCL&lt;/code&gt;、ヘテロジニアスコンピューティング、あるいは Intel GPU 上の AI ワークロードを見ている人にとって、Ubuntu 上での導入経路がかなり素直になったということです。従来のように外部スタックを丸ごと別管理する必要が薄くなります。&lt;/p&gt;
&lt;p&gt;実運用上の注意点として、Ubuntu はこれらの Intel GPU 関連機能を使うにはユーザーが &lt;code&gt;render&lt;/code&gt; グループに属している必要があるとも明記しています。&lt;/p&gt;
&lt;h2 id=&#34;2-nvidia-cuda-toolkit-も-apt-で直接導入可能に&#34;&gt;2. NVIDIA CUDA toolkit も &lt;code&gt;apt&lt;/code&gt; で直接導入可能に
&lt;/h2&gt;&lt;p&gt;多くの開発者や運用担当者にとって、これは今回の更新の中でもかなり実用的な変更でしょう。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;26.04&lt;/code&gt; から、&lt;code&gt;NVIDIA CUDA toolkit&lt;/code&gt; を Ubuntu Archive から直接インストールできます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install cuda-toolkit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;意味があるのは、単にセットアップ手順が少し減るという話だけではありません。&lt;/p&gt;
&lt;p&gt;Ubuntu 向けにソフトウェアを配布する開発者にとっては、&lt;code&gt;CUDA runtime&lt;/code&gt; への依存関係を宣言するだけでよくなり、実際のインストールや互換性管理は Ubuntu 側がディストリビューションレベルで面倒を見る形になります。CUDA が Ubuntu 上でよりネイティブなシステム機能に近づき、別管理の外部スタックとして抱え込む必要が減るわけです。&lt;/p&gt;
&lt;h2 id=&#34;3-amd-rocm-710-が-universe-に追加&#34;&gt;3. AMD ROCm 7.1.0 が Universe に追加
&lt;/h2&gt;&lt;p&gt;AMD 側では、Ubuntu Universe に &lt;code&gt;ROCm 7.1.0&lt;/code&gt; が入りました。&lt;/p&gt;
&lt;p&gt;このライブラリ群が提供する主なものは次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AMD GPU 向け AI 学習・推論のバックエンド基盤&lt;/li&gt;
&lt;li&gt;機械学習および高性能計算向けのソフトウェア基盤&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;さらに Canonical は、ROCm 関連コンポーネントを自社の CI/CD パイプラインで継続的に検証していると述べています。&lt;code&gt;autopkgtests&lt;/code&gt; に加えて、次のようなユーザー空間アプリケーションも対象です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;llama.cpp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pytorch&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Blender&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Lemonade Server&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ここはかなり重要です。Ubuntu は単にパッケージを置いただけではなく、ROCm をメンテナブルなソフトウェアスタックとして扱い、継続的に検証していることを意味します。&lt;/p&gt;
&lt;h2 id=&#34;4-本当のポイントは-3-社の-gpu-エコシステムが同時に進んでいること&#34;&gt;4. 本当のポイントは 3 社の GPU エコシステムが同時に進んでいること
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;DPC++&lt;/code&gt;、&lt;code&gt;CUDA&lt;/code&gt;、&lt;code&gt;ROCm&lt;/code&gt; を並べて見ると、&lt;code&gt;26.04&lt;/code&gt; の方向性がわかりやすくなります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intel: &lt;code&gt;SYCL&lt;/code&gt; / &lt;code&gt;oneAPI&lt;/code&gt; 系の機能を公式リポジトリへ取り込む&lt;/li&gt;
&lt;li&gt;NVIDIA: &lt;code&gt;CUDA toolkit&lt;/code&gt; にディストリビューション管理の導入経路を与える&lt;/li&gt;
&lt;li&gt;AMD: &lt;code&gt;ROCm 7.1.0&lt;/code&gt; を Universe に入れ、継続的な検証も行う&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ubuntu 上で次のような用途に触れる人ほど、この更新の意味を感じやすいはずです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ローカル LLM 推論&lt;/li&gt;
&lt;li&gt;GPU アクセラレーションを使った学習やファインチューニング&lt;/li&gt;
&lt;li&gt;Blender、科学技術計算、HPC&lt;/li&gt;
&lt;li&gt;複数の GPU プラットフォームをまたぐ開発環境&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;要するに、Ubuntu は「GPU ドライバが入る OS」から一歩進み、&lt;strong&gt;AI と GPU コンピューティングに必要なユーザー空間ソフトウェアスタックもより包括的に担うディストリビューション&lt;/strong&gt;になりつつあります。&lt;/p&gt;
&lt;h2 id=&#34;5-nvidia-dynamic-boost-がデフォルトで有効化&#34;&gt;5. NVIDIA Dynamic Boost がデフォルトで有効化
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;25.04&lt;/code&gt; 以降、対応する NVIDIA 搭載ノート PC では &lt;code&gt;Dynamic Boost&lt;/code&gt; がデフォルトで有効になっています。&lt;/p&gt;
&lt;p&gt;仕組み自体はわかりやすく、システム負荷に応じて CPU と GPU の間で消費電力を動的に振り分けます。ゲーム用途では、必要なときに GPU へより多くの電力を回し、性能を引き上げる形になります。&lt;/p&gt;
&lt;p&gt;ただし有効になる条件は 2 つあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AC 電源に接続されていること&lt;/li&gt;
&lt;li&gt;GPU 負荷が十分に高いこと&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;バッテリー駆動時には動作しません。&lt;/p&gt;
&lt;h2 id=&#34;6-新しい-intel-内蔵-gpu--外付け-gpu-のサポートも前進&#34;&gt;6. 新しい Intel 内蔵 GPU / 外付け GPU のサポートも前進
&lt;/h2&gt;&lt;p&gt;Ubuntu は新しい Intel GPU への対応も引き続き進めています。主な対象は次の通りです。&lt;/p&gt;
&lt;p&gt;統合 GPU:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Intel Core Ultra Xe2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Intel Core Ultra Xe3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ディスクリート GPU:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Intel Arc 5 B570&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Intel Arc 5 B580&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Intel Arc Pro B50&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Intel Arc Pro B60&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Intel Arc Pro B65&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Intel Arc Pro B70&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらのデバイスに関連して、Ubuntu はすでに利用可能な機能も挙げています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intel Embree を利用した GPU / CPU レイトレーシング描画性能の向上。&lt;code&gt;Blender 4.2+&lt;/code&gt; などで恩恵あり&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Battlemage&amp;rdquo; デバイスで &lt;code&gt;AVC&lt;/code&gt;、&lt;code&gt;JPEG&lt;/code&gt;、&lt;code&gt;HEVC&lt;/code&gt;、&lt;code&gt;AV1&lt;/code&gt; のハードウェアエンコードをサポート&lt;/li&gt;
&lt;li&gt;Intel Compute Runtime に新しい &lt;code&gt;CCS&lt;/code&gt; 最適化を導入&lt;/li&gt;
&lt;li&gt;Intel Xe GPU のデバッグサポートを有効化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;さらに後続の &lt;code&gt;25.10&lt;/code&gt; では、次のような機能強化も続きます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Linux kernel 6.17&lt;/code&gt; を通じて、開発コードネーム &lt;code&gt;Panther Lake&lt;/code&gt; の次世代 Intel クライアントプラットフォームを初期サポート&lt;/li&gt;
&lt;li&gt;IOMMU、PCIe サブシステム、マルチ GPU サポートの改善&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Mesa 25.2.3&lt;/code&gt; で Battlemage と Panther Lake 向けに &lt;code&gt;VK_KHR_shader_bfloat16&lt;/code&gt; を有効化&lt;/li&gt;
&lt;li&gt;&lt;code&gt;intel-media-driver 25.3.0&lt;/code&gt; で Panther Lake のデコードと &lt;code&gt;VP9&lt;/code&gt; エンコードを追加&lt;/li&gt;
&lt;li&gt;&lt;code&gt;intel-compute-runtime 25.31&lt;/code&gt; で Level Zero の &lt;code&gt;USM&lt;/code&gt; プールやローカルデバイスメモリ上のイベント確保戦略を調整&lt;/li&gt;
&lt;li&gt;&lt;code&gt;level-zero 1.24&lt;/code&gt; と &lt;code&gt;level-zero-raytracing 1.1.0&lt;/code&gt; で仕様対応と RTAS 拡張を強化&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-nvidia-デスクトップのサスペンド復帰も安定化&#34;&gt;7. Nvidia デスクトップのサスペンド復帰も安定化
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; から、Ubuntu はプロプライエタリな &lt;code&gt;Nvidia&lt;/code&gt; ドライバでサスペンド復帰を有効化し、復帰時の破損やフリーズを減らしています。&lt;/p&gt;
&lt;p&gt;見た目に派手な変更ではありませんが、長時間稼働させるデスクトップや、サスペンドと復帰を繰り返す環境ではかなり大事な改善です。&lt;/p&gt;
&lt;h2 id=&#34;8-armraspberry-pirisc-vibm-z-でも要件変更がある&#34;&gt;8. ARM、Raspberry Pi、RISC-V、IBM Z でも要件変更がある
&lt;/h2&gt;&lt;p&gt;GPU ソフトウェアスタック以外にも、今回のリリースノートにはプラットフォーム面で覚えておきたい変更がいくつかあります。&lt;/p&gt;
&lt;h3 id=&#34;arm64-デスクトッププラットフォーム&#34;&gt;ARM64 デスクトッププラットフォーム
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; から、&lt;code&gt;ARM64&lt;/code&gt; 向け &lt;code&gt;linux-generic&lt;/code&gt; カーネルは、&lt;code&gt;UEFI&lt;/code&gt; で起動する ARM64 デスクトッププラットフォームへの互換性をより広く提供します。&lt;/p&gt;
&lt;h3 id=&#34;raspberry-pi-の新しいブートレイアウト&#34;&gt;Raspberry Pi の新しいブートレイアウト
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; で導入され、&lt;code&gt;26.04&lt;/code&gt; でも継続調整されている変更の 1 つが、Raspberry Pi 向けブートパーティションの新レイアウトです。&lt;/p&gt;
&lt;p&gt;目的はブート信頼性の向上で、新しく書き込まれたブート資産はいったん「テスト」され、問題がなければ新しい &amp;ldquo;known good&amp;rdquo; セットとして確定されます。&lt;/p&gt;
&lt;p&gt;特に覚えておきたいのはファームウェア日付の条件です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Pi 3 / 3+ / CM3+ / Zero 2W&lt;/code&gt;: 追加作業は不要。ブートファームウェアはイメージ自体に含まれる&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Pi 4 / 400 / CM4&lt;/code&gt;: ブートファームウェアの日付が &lt;code&gt;2022-11-25&lt;/code&gt; 以前であってはならない&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Pi 5 / 500 / CM5&lt;/code&gt;: ブートファームウェアの日付が &lt;code&gt;2025-02-11&lt;/code&gt; 以前であってはならない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;確認コマンドは次の通りです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rpi-eeprom-update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ファームウェアが古く、かつ &lt;code&gt;Ubuntu 24.04 LTS&lt;/code&gt; 以降を使っているなら、次のように更新できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rpi-eeprom-update -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;raspberry-pi-デスクトップイメージは-desktop-minimal-ベースに&#34;&gt;Raspberry Pi デスクトップイメージは desktop-minimal ベースに
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; から、Raspberry Pi 向け Ubuntu Desktop イメージは完全な &lt;code&gt;desktop&lt;/code&gt; seed ではなく、&lt;code&gt;desktop-minimal&lt;/code&gt; ベースになりました。&lt;/p&gt;
&lt;p&gt;Ubuntu が示している利点は明確で、デフォルトのアプリセットが小さくなり、非圧縮イメージと実システムの両方で約 &lt;code&gt;777MB&lt;/code&gt; を節約できます。&lt;/p&gt;
&lt;p&gt;アップグレード後にこのデフォルトアプリ群をまとめて削除したい場合は、次を使えます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt purge ubuntu-desktop --autoremove
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一部のアプリを残したいなら、先に &lt;code&gt;apt&lt;/code&gt; で手動インストール扱いにしておけば除外できます。&lt;/p&gt;
&lt;h3 id=&#34;raspberry-pi-の-swap-は-cloud-init-管理に&#34;&gt;Raspberry Pi の swap は cloud-init 管理に
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; から、Raspberry Pi デスクトップイメージ上の swap ファイル作成は &lt;code&gt;cloud-init&lt;/code&gt; が担当します。&lt;br&gt;
初回起動前に swap サイズを調整したい場合は、ブートパーティション上の &lt;code&gt;user-data&lt;/code&gt; を直接編集できます。&lt;/p&gt;
&lt;h3 id=&#34;risc-v-の要件が引き上げ&#34;&gt;RISC-V の要件が引き上げ
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; から、&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; の &lt;code&gt;RISC-V&lt;/code&gt; 版は &lt;code&gt;RVA23S64 ISA profile&lt;/code&gt; を実装したハードウェアを必要とします。&lt;/p&gt;
&lt;p&gt;この要件を満たさないシステムでは &lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; を動かせません。もし以前の &lt;code&gt;RVA20&lt;/code&gt; プロセッサコアを使ったボードを使っているなら、&lt;code&gt;Ubuntu 24.04 LTS&lt;/code&gt; のサポートラインに留まる必要があります。&lt;/p&gt;
&lt;p&gt;Ubuntu の説明では、&lt;code&gt;2026 年 4 月&lt;/code&gt; 時点で実機の &lt;code&gt;RVA23S64&lt;/code&gt; ハードウェアはまだ存在しません。そのため、現在サポートされる唯一の環境は、実質的には &lt;code&gt;-cpu rva23s64&lt;/code&gt; を指定した &lt;code&gt;QEMU&lt;/code&gt; 仮想環境です。&lt;/p&gt;
&lt;h3 id=&#34;ibm-z-の最低要件は-z15-に&#34;&gt;IBM Z の最低要件は z15 に
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;26.04&lt;/code&gt; から、&lt;code&gt;s390x&lt;/code&gt; アーキテクチャの最低要件は &lt;code&gt;z15&lt;/code&gt; へ引き上げられました。&lt;/p&gt;
&lt;p&gt;つまり次のようになります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;z14&lt;/code&gt; / &lt;code&gt;LinuxONE II&lt;/code&gt; およびそれ以前のシステムでは &lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; をインストールできない&lt;/li&gt;
&lt;li&gt;&lt;code&gt;z15&lt;/code&gt; / &lt;code&gt;LinuxONE III&lt;/code&gt; 以降では性能向上が期待できる&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;9-この内容を先に読むべき人&#34;&gt;9. この内容を先に読むべき人
&lt;/h2&gt;&lt;p&gt;次のようなケースでは、この文章のほうがデスクトップ概要より優先度が高いはずです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu 上で &lt;code&gt;CUDA&lt;/code&gt;、&lt;code&gt;ROCm&lt;/code&gt;、&lt;code&gt;SYCL&lt;/code&gt;、ローカル AI 推論を使う&lt;/li&gt;
&lt;li&gt;Intel、NVIDIA、AMD の GPU を使った開発や計算処理を行う&lt;/li&gt;
&lt;li&gt;Raspberry Pi、ARM64、RISC-V、IBM Z など、標準的な x86 以外のプラットフォームを運用している&lt;/li&gt;
&lt;li&gt;アップグレード後のリポジトリ可用性、ドライバ挙動、ランタイム、プラットフォーム要件に敏感である&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;10-ひと言でまとめると&#34;&gt;10. ひと言でまとめると
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; のハードウェアと AI スタック面での要点は、どこか 1 社の GPU だけが大きく強化されたことではありません。&lt;strong&gt;Intel の DPC++、NVIDIA の CUDA、AMD の ROCm が、より公式に、よりリポジトリ内で、より保守しやすい形で Ubuntu エコシステムへ入ってきたこと&lt;/strong&gt;です。&lt;/p&gt;
&lt;p&gt;これまで Ubuntu を「まず OS を入れて、その上に GPU 環境は自分で組むもの」と見ていたなら、&lt;code&gt;26.04&lt;/code&gt; は AI やヘテロジニアスコンピューティングのワークロードを、ディストリビューション側がより積極的に支える方向へ進み始めた版だと言えます。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ubuntu 26.04 LTS リリース：GNOME 50 と Linux 7.0 でデスクトップが大きく更新</title>
        <link>https://knightli.com/ja/2026/04/26/ubuntu-26-04-lts-release-notes/</link>
        <pubDate>Sun, 26 Apr 2026 16:10:25 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/26/ubuntu-26-04-lts-release-notes/</guid>
        <description>&lt;p&gt;&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; は &lt;strong&gt;2026 年 4 月 23 日&lt;/strong&gt; に公開され、コードネームは &lt;code&gt;Resolute Raccoon&lt;/code&gt; です。今回は新しい長期サポート版で、標準サポートは &lt;strong&gt;2031 年 4 月&lt;/strong&gt; まで続きます。&lt;code&gt;Ubuntu Pro&lt;/code&gt; を使う場合は、セキュリティメンテナンスを &lt;strong&gt;10 年&lt;/strong&gt; まで延長できます。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Ubuntu 24.04 LTS&lt;/code&gt; からアップグレードする場合、この版は単なる定例更新ではありません。&lt;code&gt;24.10&lt;/code&gt;、&lt;code&gt;25.04&lt;/code&gt;、&lt;code&gt;25.10&lt;/code&gt; の主な変化もまとめて取り込んでいます。なので、この記事は「アップグレード前に何を見ておくべきか」を素早く把握するための要約として読むのがいちばん向いています。&lt;/p&gt;
&lt;p&gt;今回のリリースで特に重要な更新だけを先に押さえるなら、まず次の 4 点です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GNOME 50&lt;/code&gt; が LTS に入り、デスクトップ体験と表示まわりのサポートが一段進みました&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Linux kernel 7.0&lt;/code&gt; が新しい基準になり、ハードウェア対応と今後の保守基盤が更新されました&lt;/li&gt;
&lt;li&gt;Ubuntu Desktop は正式に全面 &lt;code&gt;Wayland&lt;/code&gt; へ移行しました&lt;/li&gt;
&lt;li&gt;既定アプリ群がまとめて更新され、&lt;code&gt;Firefox&lt;/code&gt;、&lt;code&gt;LibreOffice&lt;/code&gt;、&lt;code&gt;Thunderbird&lt;/code&gt;、&lt;code&gt;GIMP&lt;/code&gt; が大きく新しくなりました&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-まずは重要な更新を確認&#34;&gt;1. まずは重要な更新を確認
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; は長期サポート版で、標準サポートは &lt;code&gt;2031-04&lt;/code&gt; までです&lt;/li&gt;
&lt;li&gt;デスクトップ環境は &lt;code&gt;GNOME 50&lt;/code&gt; に更新されました&lt;/li&gt;
&lt;li&gt;汎用カーネルは &lt;code&gt;Linux kernel 7.0&lt;/code&gt; に更新されました&lt;/li&gt;
&lt;li&gt;Ubuntu Desktop のセッションは &lt;code&gt;Wayland&lt;/code&gt; のみになりました&lt;/li&gt;
&lt;li&gt;古いバージョンから &lt;code&gt;26.04&lt;/code&gt; へ大きく飛び越して直接アップグレードすることはできません&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まだ &lt;code&gt;Ubuntu 22.04 LTS&lt;/code&gt; または &lt;code&gt;25.04&lt;/code&gt; を使っている場合、公式にはまず &lt;code&gt;Ubuntu 24.04 LTS&lt;/code&gt; か &lt;code&gt;25.10&lt;/code&gt; へ上げてから、さらに &lt;code&gt;26.04 LTS&lt;/code&gt; へ進むことが推奨されています。&lt;/p&gt;
&lt;h2 id=&#34;2-最大の変化その-1gnome-50-が-lts-に入った&#34;&gt;2. 最大の変化その 1：GNOME 50 が LTS に入った
&lt;/h2&gt;&lt;p&gt;今回のデスクトップ側で最もわかりやすい変化は、&lt;code&gt;GNOME 50&lt;/code&gt; がついに LTS に入ったことです。一般ユーザーにとって価値があるのは、単発の目立つ新機能というより、デスクトップ全体の使い勝手がまとめて良くなった点です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小型画面や狭いウィンドウでの使いやすさが向上&lt;/li&gt;
&lt;li&gt;通知をアプリ単位でグループ化可能&lt;/li&gt;
&lt;li&gt;HDR、VRR、分数スケーリングなど表示関連の改善が継続&lt;/li&gt;
&lt;li&gt;リモートデスクトップ、Wayland、NVIDIA ドライバ環境での滑らかさと安定性が向上&lt;/li&gt;
&lt;li&gt;アクセシビリティ対応がさらに強化され、&lt;code&gt;Orca&lt;/code&gt; スクリーンリーダーも目立つ更新が入っています&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ubuntu 独自の実用的な改善もあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GNOME Shell のグローバル検索から利用可能な &lt;code&gt;snap&lt;/code&gt; アプリを直接探せる&lt;/li&gt;
&lt;li&gt;検索からそのままウェブ検索を始められる&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Yaru&lt;/code&gt; テーマは upstream GNOME の見た目にさらに近づいた&lt;/li&gt;
&lt;li&gt;&lt;code&gt;snap&lt;/code&gt; アプリの権限、ファイルアクセス、ドラッグアンドドロップの体験がより自然になった&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;普段デスクトップ版を使っているなら、この世代の LTS のポイントは「見た目が大きく変わった」ことではなく、以前からあった細かな引っかかりがまとめて減ったことにあります。&lt;/p&gt;
&lt;h2 id=&#34;3-最大の変化その-2既定アプリが広く刷新された&#34;&gt;3. 最大の変化その 2：既定アプリが広く刷新された
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;24.04 LTS&lt;/code&gt; と比べると、&lt;code&gt;26.04 LTS&lt;/code&gt; に含まれる標準アプリはかなり大きく更新されています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Firefox&lt;/code&gt; は &lt;code&gt;150&lt;/code&gt; へ&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LibreOffice&lt;/code&gt; は &lt;code&gt;24.2&lt;/code&gt; から &lt;code&gt;25.8&lt;/code&gt; へ&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Thunderbird&lt;/code&gt; は &lt;code&gt;140&lt;/code&gt; へ&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GIMP&lt;/code&gt; は &lt;code&gt;2.10&lt;/code&gt; から &lt;code&gt;3.2&lt;/code&gt; へ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;さらに、日常利用で影響の大きい置き換えもあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PDF ビューアは &lt;code&gt;Evince&lt;/code&gt; から &lt;code&gt;Papers&lt;/code&gt; に変更&lt;/li&gt;
&lt;li&gt;画像ビューアは &lt;code&gt;Loupe&lt;/code&gt; に変更&lt;/li&gt;
&lt;li&gt;ターミナルは &lt;code&gt;Ptyxis&lt;/code&gt; に変更&lt;/li&gt;
&lt;li&gt;システムモニターは &lt;code&gt;Resources&lt;/code&gt; に変更&lt;/li&gt;
&lt;li&gt;既定の動画プレーヤーは &lt;code&gt;Showtime&lt;/code&gt; に変更&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;こうした変化から見える方向性は明確です。Ubuntu は &lt;code&gt;GTK4&lt;/code&gt;、&lt;code&gt;libadwaita&lt;/code&gt;、そして一部では Rust で再実装された新世代の GNOME アプリ群へ、より本格的に寄せています。&lt;/p&gt;
&lt;h2 id=&#34;4-最大の変化その-3wayland-が唯一のデスクトップセッションになった&#34;&gt;4. 最大の変化その 3：Wayland が唯一のデスクトップセッションになった
&lt;/h2&gt;&lt;p&gt;これは長く Ubuntu を使ってきた人ほど気になる変更です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; から始まっていた流れが、&lt;code&gt;26.04 LTS&lt;/code&gt; で正式に定着しました。Ubuntu Desktop は &lt;code&gt;Wayland&lt;/code&gt; バックエンドのみで動作し、&lt;code&gt;GNOME Shell&lt;/code&gt; はもはや &lt;code&gt;X.org&lt;/code&gt; セッションとしては動きません。&lt;/p&gt;
&lt;p&gt;もちろん、これで古いアプリが全部使えなくなるわけではありません。公式リリースノートでも、&lt;code&gt;X.org&lt;/code&gt; 向けアプリは &lt;code&gt;XWayland&lt;/code&gt; 互換レイヤー経由で引き続き動かせると明記されています。ただし、古い GPU ドライバや一部のリモートデスクトップ手法、録画ツール、入力メソッドの細かな挙動に依存しているワークフローなら、アップグレード前の確認はやっておいたほうが安心です。&lt;/p&gt;
&lt;h2 id=&#34;5-最大の変化その-4linux-kernel-70-と低層スタックもまとめて更新&#34;&gt;5. 最大の変化その 4：Linux kernel 7.0 と低層スタックもまとめて更新
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; の GA generic スタックは &lt;code&gt;Linux 6.8&lt;/code&gt; から &lt;code&gt;Linux 7.0&lt;/code&gt; に上がり、HWE スタックも &lt;code&gt;7.0&lt;/code&gt; に統一されました。&lt;/p&gt;
&lt;p&gt;公式が触れている低層側の変更の中で、一般ユーザーや運用担当に関係が大きいのは次のあたりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;デスクトップ版とサーバー版の両方で crash dump が既定で有効&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sched_ext&lt;/code&gt; により、開発者が eBPF を使ってスケジューリングポリシーを実装できる新しい拡張モデルが入った&lt;/li&gt;
&lt;li&gt;&lt;code&gt;linux-lowlatency&lt;/code&gt; バイナリパッケージは廃止され、&lt;code&gt;linux-generic&lt;/code&gt; とユーザー空間の &lt;code&gt;lowlatency-kernel&lt;/code&gt; パッケージによる低レイテンシ調整へ移行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;amd64v3&lt;/code&gt; アーキテクチャ変種は利用可能だが、既定では opt-in のまま&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比較的新しいマシンを使っているなら、&lt;code&gt;amd64v3&lt;/code&gt; は気にしておいてよい項目です。公式が示している有効化方法は次のとおりです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;APT::Architecture-Variants &amp;#34;amd64v3&amp;#34;;&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/apt/apt.conf.d/99enable-amd64v3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ただし、これは自動では有効になりません。Ubuntu は引き続き互換性を最優先にしています。&lt;/p&gt;
&lt;h2 id=&#34;6-ハードウェア要件と導入の目安&#34;&gt;6. ハードウェア要件と導入の目安
&lt;/h2&gt;&lt;p&gt;Ubuntu Desktop 26.04 LTS に対して公式が示している推奨ラインは次のとおりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;2 GHz&lt;/code&gt; のデュアルコア CPU 以上&lt;/li&gt;
&lt;li&gt;&lt;code&gt;6 GB RAM&lt;/code&gt; 以上&lt;/li&gt;
&lt;li&gt;&lt;code&gt;25 GB&lt;/code&gt; 以上の空きストレージ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;マシンの性能がやや低めなら、公式には &lt;code&gt;Xubuntu&lt;/code&gt; や &lt;code&gt;Lubuntu&lt;/code&gt; のようなフレーバーも検討するよう案内されています。&lt;br&gt;
サーバー版の下限はもっと低く、ドキュメントでは &lt;code&gt;1.5 GB RAM&lt;/code&gt; と &lt;code&gt;4 GB&lt;/code&gt; ストレージから始められるとされていますが、実際には動かすサービスの負荷次第です。&lt;/p&gt;
&lt;h2 id=&#34;7-どんな人に優先してアップグレード向きか&#34;&gt;7. どんな人に優先してアップグレード向きか
&lt;/h2&gt;&lt;p&gt;すでに &lt;code&gt;24.04 LTS&lt;/code&gt; を使っていて、次のようなものを求めているなら、&lt;code&gt;26.04 LTS&lt;/code&gt; はかなり有力です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小さなパッチではなく、一世代分まとめて更新されたデスクトップスタック&lt;/li&gt;
&lt;li&gt;より成熟した &lt;code&gt;Wayland&lt;/code&gt; と表示サポート&lt;/li&gt;
&lt;li&gt;新しくなった既定アプリ群&lt;/li&gt;
&lt;li&gt;新しいカーネルと、より長い今後のサポート期間&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一方で、古い &lt;code&gt;X11&lt;/code&gt; ワークフローや特殊なドライバ、独自のデスクトップ拡張に強く依存している場合、あるいは本番環境で変更に非常に慎重である場合は、アップグレード前に互換性確認を一度通しておくのが無難です。&lt;/p&gt;
&lt;h2 id=&#34;8-ひとことでまとめると&#34;&gt;8. ひとことでまとめると
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; の価値は、目立つ単独機能ひとつにあるわけではありません。ここ 2 年のデスクトップ、カーネル、アプリ、互換性の進化を、新しい LTS の基準に一気にまとめて載せたところにあります。&lt;/p&gt;
&lt;p&gt;最短で言うなら、&lt;strong&gt;この版は「全体として新しくなり、全体として安定した」Ubuntu LTS であり、ひとつの派手な売りだけで成り立っている版ではない&lt;/strong&gt;、ということです。&lt;/p&gt;
&lt;h2 id=&#34;関連リンク&#34;&gt;関連リンク
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;公式リリースノート：&lt;code&gt;https://documentation.ubuntu.com/release-notes/26.04/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;LTS ユーザー向け要約：&lt;code&gt;https://documentation.ubuntu.com/release-notes/26.04/summary-for-lts-users/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>nftables フレームワークを理解する：テーブル、チェーン、ルール、セット</title>
        <link>https://knightli.com/ja/2026/04/18/nftables-framework-concepts/</link>
        <pubDate>Sat, 18 Apr 2026 10:31:12 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/18/nftables-framework-concepts/</guid>
        <description>&lt;p&gt;&lt;code&gt;nftables&lt;/code&gt; を学び始めると、ついコマンドの細部に入りがちです。ルールをどう追加するか、handle をどう削除するか、ポートマッチをどう書くか。もちろんコマンドは重要ですが、先にフレームワークの概念を整理しておくと、ルールの読解、問題調査、ルールセット設計がかなり楽になります。&lt;/p&gt;
&lt;p&gt;nftables は、次のような階層構造として理解できます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;table&lt;/code&gt; はルール空間を分離する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;family&lt;/code&gt; はルールが扱うネットワークプロトコルを決める。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chain&lt;/code&gt; はルールがどの段階で実行されるかを決める。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rule&lt;/code&gt; は具体的なマッチ条件とアクションを持つ。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;set&lt;/code&gt;、&lt;code&gt;map&lt;/code&gt;、&lt;code&gt;verdict map&lt;/code&gt; は重複ルールを減らし、ルールセットを保守しやすくする。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以下では、概念を階層ごとに整理します。&lt;/p&gt;
&lt;h2 id=&#34;tableルールの名前空間&#34;&gt;table：ルールの名前空間
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;table&lt;/code&gt; は nftables で最も外側にあるルールコンテナです。異なる table は互いに分離されるため、関連するルールを同じ table にまとめるのが一般的です。&lt;/p&gt;
&lt;p&gt;たとえば、フィルタリングルール、NAT ルール、独自のテスト用ルールを分けて置けます。こうすると境界が明確になります。デバッグ時にはどのルール群を変更しているかが分かりやすく、クリーンアップ時にも無関係な内容を誤って削除しにくくなります。&lt;/p&gt;
&lt;p&gt;table 自体はパケットを直接処理しません。実際にパケット処理に関わるのは、table の中にある chain と rule です。&lt;/p&gt;
&lt;h2 id=&#34;familyルールが対象にするプロトコル&#34;&gt;family：ルールが対象にするプロトコル
&lt;/h2&gt;&lt;p&gt;table を作成するときは &lt;code&gt;family&lt;/code&gt; を選びます。これは、その table 内のルールがどの種類のパケットに適用されるかを決めます。&lt;/p&gt;
&lt;p&gt;代表的な family は次のように理解できます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ip&lt;/code&gt;：IPv4 のみを処理する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ip6&lt;/code&gt;：IPv6 のみを処理する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;inet&lt;/code&gt;：IPv4 と IPv6 の両方を処理する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;arp&lt;/code&gt;：ARP を処理する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bridge&lt;/code&gt;：ブリッジ層のトラフィックを処理する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;netdev&lt;/code&gt;：ネットワークデバイス入口に近く、より早い段階でトラフィックを処理する用途に向く。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通常のファイアウォールルールでは、&lt;code&gt;inet&lt;/code&gt; がよく使われます。IPv4 と IPv6 のルールを同じ table に置けるため、似た構造のルールを 2 セット維持する必要がなくなります。&lt;/p&gt;
&lt;h2 id=&#34;chainルールが実行される場所&#34;&gt;chain：ルールが実行される場所
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;chain&lt;/code&gt; は rule のリストです。パケットがある hook に入ると、chain 内のルールを順番に通過します。&lt;/p&gt;
&lt;p&gt;chain は大きく 2 種類に分けられます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;基本 chain：カーネルのネットワーク経路上の hook に接続され、パケット処理の流れから直接呼び出される。&lt;/li&gt;
&lt;li&gt;通常 chain：hook には直接接続されず、他のルールから jump されて呼び出される。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;基本 chain では、通常いくつかの重要な属性を指定します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt;：この chain の用途。たとえば &lt;code&gt;filter&lt;/code&gt;、&lt;code&gt;nat&lt;/code&gt;、&lt;code&gt;route&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hook&lt;/code&gt;：接続する処理段階。たとえば &lt;code&gt;prerouting&lt;/code&gt;、&lt;code&gt;input&lt;/code&gt;、&lt;code&gt;forward&lt;/code&gt;、&lt;code&gt;output&lt;/code&gt;、&lt;code&gt;postrouting&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;priority&lt;/code&gt;：同じ hook に複数の chain があるとき、どれを先に実行するか。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;policy&lt;/code&gt;：どのルールにもマッチしなかった場合のデフォルト動作。一般的には &lt;code&gt;accept&lt;/code&gt; または &lt;code&gt;drop&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;chain を理解するうえで重要なのは、ルールは「どこに書いても同じように効く」わけではないという点です。同じルールでも、&lt;code&gt;input&lt;/code&gt;、&lt;code&gt;forward&lt;/code&gt;、&lt;code&gt;output&lt;/code&gt; のどこに置くかで意味はまったく変わります。&lt;/p&gt;
&lt;h2 id=&#34;ruleマッチ条件とアクション&#34;&gt;rule：マッチ条件とアクション
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rule&lt;/code&gt; は、nftables が実際に判断を行う場所です。通常は 2 つの部分で構成されます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;マッチ条件：送信元 IP、宛先 IP、プロトコル、ポート、インターフェイス、接続状態など。&lt;/li&gt;
&lt;li&gt;アクション：&lt;code&gt;accept&lt;/code&gt;、&lt;code&gt;drop&lt;/code&gt;、&lt;code&gt;reject&lt;/code&gt;、&lt;code&gt;counter&lt;/code&gt;、&lt;code&gt;jump&lt;/code&gt;、&lt;code&gt;return&lt;/code&gt; など。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ルールは順番に評価されます。パケットが処理を終了させるアクションにマッチすると、その後ろのルールは実行されません。マッチしなければ、chain の終端またはデフォルトポリシーに到達するまで処理が続きます。&lt;/p&gt;
&lt;p&gt;そのため、ルールの順序は重要です。より具体的なルールは、通常より広い条件のルールより前に置く必要があります。そうしないと、実行される機会がない場合があります。&lt;/p&gt;
&lt;h2 id=&#34;set値の集合をまとめる&#34;&gt;set：値の集合をまとめる
&lt;/h2&gt;&lt;p&gt;多数の IP、ポート、インターフェイスをマッチしたい場合、ルールを大量に並べると保守しにくくなります。&lt;code&gt;set&lt;/code&gt; は、同じ型の値をひとまとめに管理するための仕組みです。&lt;/p&gt;
&lt;p&gt;たとえば、信頼する IP の集合、拒否したいポートの集合、帯域制限したいアドレスの集合を set に入れられます。ルール側では、ある値がその set に含まれるかどうかだけを判定すれば済みます。&lt;/p&gt;
&lt;p&gt;set の利点は次のとおりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ルール数を減らせる。&lt;/li&gt;
&lt;li&gt;可読性が上がる。&lt;/li&gt;
&lt;li&gt;後から要素を追加・削除しやすい。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ルールの中に同じような条件が大量に出てくる場合は、set の利用を検討するタイミングです。&lt;/p&gt;
&lt;h2 id=&#34;mapマッチした値を結果に変換する&#34;&gt;map：マッチした値を結果に変換する
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;map&lt;/code&gt; は「参照表」として理解できます。入力値に応じて結果を返します。&lt;/p&gt;
&lt;p&gt;たとえば、ポートごとに異なる mark を返す、アドレスごとに異なる処理パラメータを返す、といった表現ができます。多くの if/else 風ルールを書くより、map のほうが集中管理しやすく、保守もしやすくなります。&lt;/p&gt;
&lt;p&gt;set が気にするのは「集合に含まれるかどうか」です。一方で map が気にするのは「この値に対応する結果は何か」です。&lt;/p&gt;
&lt;h2 id=&#34;verdict-mapマッチした値をアクションに変換する&#34;&gt;verdict map：マッチした値をアクションに変換する
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;verdict map&lt;/code&gt; は map の重要な使い方の 1 つです。マッチした値を verdict、つまりルールのアクションに変換します。&lt;/p&gt;
&lt;p&gt;たとえば、IP 範囲ごとに &lt;code&gt;accept&lt;/code&gt;、&lt;code&gt;drop&lt;/code&gt;、または別 chain への jump を対応させられます。これにより、多くの分岐判断を 1 つの構造に圧縮できます。&lt;/p&gt;
&lt;p&gt;ルールセットが複雑になってきたとき、verdict map はとても便利です。重複ルールを減らし、長い条件分岐の列ではなく、表に近い形でポリシーを表現できます。&lt;/p&gt;
&lt;h2 id=&#34;概念からルール設計を考える&#34;&gt;概念からルール設計を考える
&lt;/h2&gt;&lt;p&gt;nftables ルールを設計するときは、次の順序で考えると整理しやすくなります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;まずルールが属する &lt;code&gt;family&lt;/code&gt; を決める。&lt;/li&gt;
&lt;li&gt;次に、どの &lt;code&gt;table&lt;/code&gt; に入れるかを決める。&lt;/li&gt;
&lt;li&gt;適切な &lt;code&gt;hook&lt;/code&gt; と &lt;code&gt;chain&lt;/code&gt; を選ぶ。&lt;/li&gt;
&lt;li&gt;具体的な &lt;code&gt;rule&lt;/code&gt; を書く。&lt;/li&gt;
&lt;li&gt;重複条件が多い場合は、&lt;code&gt;set&lt;/code&gt;、&lt;code&gt;map&lt;/code&gt;、&lt;code&gt;verdict map&lt;/code&gt; を導入する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;この順序で書くと、ルールは保守しやすく、問題も切り分けやすくなります。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;nftables の概念は複雑ではありませんが、階層が重要です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;table はルールの境界を管理する。&lt;/li&gt;
&lt;li&gt;family はプロトコル範囲を管理する。&lt;/li&gt;
&lt;li&gt;chain は実行位置を管理する。&lt;/li&gt;
&lt;li&gt;rule はマッチとアクションを管理する。&lt;/li&gt;
&lt;li&gt;set、map、verdict map は複雑さを管理する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まずこれらの概念を理解してから具体的なコマンドを見るほうが、コマンドを直接暗記するより安定します。特にルールセットが増えてきたあとでは、概念が明確だと、問題がプロトコル範囲、実行段階、ルール順序、またはマッチ条件そのもののどこにあるのかを判断しやすくなります。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/10/html/configuring_firewalls_and_packet_filters/concepts-in-the-nftables-framework&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/10/html/configuring_firewalls_and_packet_filters/concepts-in-the-nftables-framework&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>nftables クイック入門：テーブル、チェーン、ルールとよく使う操作</title>
        <link>https://knightli.com/ja/2026/04/18/nftables-quick-start/</link>
        <pubDate>Sat, 18 Apr 2026 10:22:07 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/18/nftables-quick-start/</guid>
        <description>&lt;p&gt;&lt;code&gt;nftables&lt;/code&gt; は、Linux でよく使われるパケットフィルタリングとファイアウォールルール管理の仕組みです。端末の通信制御、トラフィック統計、ポートマッチ、簡単な帯域制限だけを行うなら、最初からルール体系全体を覚える必要はありません。まずは次の 3 つを押さえれば十分です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;table&lt;/code&gt;：ルールを入れるコンテナ。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chain&lt;/code&gt;：ルールが評価される場所。通常は特定の hook に接続します。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rule&lt;/code&gt;：実際のマッチ条件とアクション。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以下では、まずテスト環境で試しやすい最小構成の流れを整理します。&lt;/p&gt;
&lt;h2 id=&#34;基本構成&#34;&gt;基本構成
&lt;/h2&gt;&lt;p&gt;先にいくつか変数を用意します。以降のコマンドで再利用します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;table&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;customtable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;chain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;custom_control
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;drop
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ip&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;192.168.18.251
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;mac&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;00:00:01:02:03:04
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;IPv4 と IPv6 の両方を扱える &lt;code&gt;inet&lt;/code&gt; table を作成します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add table inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;次に、&lt;code&gt;forward&lt;/code&gt; 段階に接続する chain を作成します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; filter hook forward priority 0&lt;span class=&#34;se&#34;&gt;\;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ここで、&lt;code&gt;type filter&lt;/code&gt; はフィルタリング用のルールであることを示し、&lt;code&gt;hook forward&lt;/code&gt; は転送されるパケットを処理することを示します。&lt;/p&gt;
&lt;h2 id=&#34;よく使うマッチ方法&#34;&gt;よく使うマッチ方法
&lt;/h2&gt;&lt;p&gt;送信元 IP でマッチします。通常はアップロード方向の制御として考えられます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ip saddr &lt;span class=&#34;nv&#34;&gt;$ip&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;宛先 IP でマッチします。通常はダウンロード方向の制御として考えられます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ip daddr &lt;span class=&#34;nv&#34;&gt;$ip&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;MAC アドレスでマッチする場合、&lt;code&gt;ether saddr&lt;/code&gt; で上り方向を制御できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ether saddr &lt;span class=&#34;nv&#34;&gt;$mac&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ブリッジ、転送、アドレス変換を経由するネットワークでは、下りパケットを宛先 MAC で安定してフィルタできない場合があります。端末の通信制御を行うときは、まず &lt;code&gt;ether saddr&lt;/code&gt; または IP ベースのルールから検証するのが安全です。&lt;/p&gt;
&lt;p&gt;ポートでマッチする場合、TCP と UDP をまとめて対象にできます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; tcp, udp &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; dport &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ポート範囲をマッチしたい場合は、比較式を使えます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; tcp dport &lt;span class=&#34;se&#34;&gt;\&amp;gt;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1024&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;単一端末の通信量を集計する&#34;&gt;単一端末の通信量を集計する
&lt;/h2&gt;&lt;p&gt;特定 IP の上りと下りの通信量を集計したいだけなら、&lt;code&gt;counter return&lt;/code&gt; を使えます。マッチしたらカウンターを記録して戻るため、後続に他の統計ルールがある場合でも余計なマッチ処理を減らせます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ip saddr &lt;span class=&#34;nv&#34;&gt;$ip&lt;/span&gt; counter &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ip daddr &lt;span class=&#34;nv&#34;&gt;$ip&lt;/span&gt; counter &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;統計結果を確認します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft list chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;各ルールの &lt;code&gt;handle&lt;/code&gt; を確認したい場合は、&lt;code&gt;-a&lt;/code&gt; を付けます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft -a list chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;handle&lt;/code&gt; は重要です。nftables で単一ルールを削除するときは、通常この値で対象を指定します。&lt;/p&gt;
&lt;h2 id=&#34;簡単な帯域制限&#34;&gt;簡単な帯域制限
&lt;/h2&gt;&lt;p&gt;帯域制限には &lt;code&gt;limit rate over&lt;/code&gt; を使えます。たとえば、MAC アドレスごとに指定速度を超えた通信を制限します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;rate&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;unit&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mbytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ether saddr &lt;span class=&#34;nv&#34;&gt;$mac&lt;/span&gt; limit rate over &lt;span class=&#34;nv&#34;&gt;$rate&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$unit&lt;/span&gt;/second drop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ここでの &lt;code&gt;mbytes&lt;/code&gt;、&lt;code&gt;kbytes&lt;/code&gt; は、日常的な M、K の単位として理解できます。手動で 8 倍換算する必要はありません。実際に使うときは、まず緩めの値でテストし、マッチ方向と効果を確認してから調整するのが安全です。&lt;/p&gt;
&lt;h2 id=&#34;ルールの削除と整理&#34;&gt;ルールの削除と整理
&lt;/h2&gt;&lt;p&gt;まず &lt;code&gt;handle&lt;/code&gt; 付きでルールを表示します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft -a list chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;次に handle を指定してルールを削除します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; handle &amp;lt;handle&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;chain を空にします。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft flush chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;chain を削除します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;table 全体を削除します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete table inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;日常的なデバッグでは、自分で作成した table だけを整理するのがおすすめです。システムや他のサービスが自動生成した table を直接変更しないほうが、ルールを書き間違えた場合でも戻しやすくなります。&lt;/p&gt;
&lt;h2 id=&#34;使い方のポイント&#34;&gt;使い方のポイント
&lt;/h2&gt;&lt;p&gt;nftables を使うときは、まず独立した table と chain を自分で作成すると扱いやすくなります。利点は次の 2 つです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;システム既存のルールと混ざりにくい。&lt;/li&gt;
&lt;li&gt;デバッグ、flush、削除を安全に行いやすい。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ルールを書いたあとは、必ず &lt;code&gt;nft list chain&lt;/code&gt; で実際のマッチ状況を確認します。特に MAC、インターフェイス、ポート、帯域制限のルールは、デバイス、ブリッジ構成、システムバージョンによって挙動が変わることがあります。複雑なルールを一度に書くより、まず小さい範囲で試すほうが安全です。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.right.com.cn/forum/thread-8369750-1-1.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.right.com.cn/forum/thread-8369750-1-1.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>go2rtc は Xiaomi カメラ RTSP に直接接続します。NVR、HomeKit、Frigate に接続します。</title>
        <link>https://knightli.com/ja/2026/04/11/go2rtc-xiaomi-rtsp-nvr-homekit-frigate/</link>
        <pubDate>Sat, 11 Apr 2026 08:14:47 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/11/go2rtc-xiaomi-rtsp-nvr-homekit-frigate/</guid>
        <description>&lt;p&gt;この記事では、&lt;code&gt;go2rtc&lt;/code&gt; を使用して Xiaomi カメラ ストリームを直接取得し、それを NVR、HomeKit、および Frigate に均一に分散する方法を記録します。&lt;/p&gt;
&lt;h2 id=&#34;docker-のデプロイメント例&#34;&gt;Docker のデプロイメント例
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;go2rtc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;go2rtc&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;alexxit/go2rtc:master-hardware&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;always&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;network_mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;host&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;privileged&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;TZ=Asia/Shanghai&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/vol1/1000/docker/go2rtc:/config&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;go2rtc バックエンド アドレス:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://192.168.3.217:1984/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;ストリーム構成例&#34;&gt;ストリーム構成例
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;streams&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;micam1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;xiaomi://xxx&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;#H265转H264,Homekit预览会用到&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;#micam1_h264:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;#- ffmpeg:micam1#video=h264#width=1280#height=720#hardware#raw=-r 15&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;micam2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;xiaomi://xxx&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;micam3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;xiaomi://xxx&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;RTSP ストリーム アドレスの形式:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtsp://192.168.3.217:8554/micam1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;画質とパラメータ&#34;&gt;画質とパラメータ
&lt;/h2&gt;&lt;p&gt;画質は &lt;code&gt;0&lt;/code&gt; ～ &lt;code&gt;5&lt;/code&gt; で指定します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0&lt;/code&gt; は通常、自動を意味します&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1&lt;/code&gt; は &lt;code&gt;sd&lt;/code&gt; を意味します&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2&lt;/code&gt; は &lt;code&gt;hd&lt;/code&gt; を意味します (go2rtc のデフォルト)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一部の新しいカメラは、&lt;code&gt;3&lt;/code&gt; で HD を備えている場合があります。古いモデルでは、&lt;code&gt;3&lt;/code&gt; のコーデック構成が壊れている可能性があるため、フリーサイズは推奨されません。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;subtype=hd/sd/auto/0-5&lt;/code&gt; を介して画質を指定できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;streams&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;xiaomi1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;xiaomi://***&amp;amp;subtype=sd&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;2 番目のチャンネル パラメーター &lt;code&gt;channel=2&lt;/code&gt; は、デュアルカメラ シーンで使用できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;streams&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;xiaomi1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;xiaomi://***&amp;amp;channel=2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;go2rtc による統合ストリーミング後は、RTSP を NVR 録画、Frigate 分析、HomeKit プレビューに同時に使用できるようになり、メンテナンス コストが大幅に削減されます。&lt;/p&gt;
&lt;h2 id=&#34;参考リンク&#34;&gt;参考リンク
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;カメラサポートリスト: &lt;a class=&#34;link&#34; href=&#34;https://github.com/AlexxIT/go2rtc/issues/1982&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/AlexxIT/go2rtc/issues/1982&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;公式説明ソース: &lt;a class=&#34;link&#34; href=&#34;https://github.com/AlexxIT/go2rtc/blob/master/internal/xiaomi/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/AlexxIT/go2rtc/blob/master/internal/xiaomi/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Docker イメージ: &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/alexxit/go2rtc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://hub.docker.com/r/alexxit/go2rtc&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Windows タスク マネージャーのデータは一時停止され、更新されません。通常、更新速度は一時停止に設定されます。</title>
        <link>https://knightli.com/ja/2026/04/09/windows-task-manager-data-paused/</link>
        <pubDate>Thu, 09 Apr 2026 18:15:53 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/09/windows-task-manager-data-paused/</guid>
        <description>&lt;p&gt;Windows タスク マネージャーを開くと、[プロセス] または [パフォーマンス] ページのデータがスタックしているように見え、CPU、メモリ、ディスク、またはネットワークの値が長期間変更されていないことがわかることがあります。一見するとシステムの異常のように見えますが、実際に実行されているプログラム、ネットワーク伝送、リソースの使用状況は正常に変化しています。&lt;/p&gt;
&lt;p&gt;この状況は通常、システムが実際に停止したことを意味するのではなく、タスク マネージャーの更新頻度が「一時停止」に変更されたことを意味します。&lt;/p&gt;
&lt;h2 id=&#34;現象&#34;&gt;現象
&lt;/h2&gt;&lt;p&gt;一般的な症状には次のものがあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「プロセス」ページの CPU、メモリ、その他のデータがジャンプしなくなりました&lt;/li&gt;
&lt;li&gt;「パフォーマンス」ページのカーブが長期間更新されない&lt;/li&gt;
&lt;li&gt;明らかにプログラムが実行されていますが、タスク マネージャーは非アクティブになっているように見えます。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;問題が発生した場合のインターフェイスの例を次に示します。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/09/windows-task-manager-data-paused/1.png&#34;
	width=&#34;639&#34;
	height=&#34;546&#34;
	srcset=&#34;https://knightli.com/2026/04/09/windows-task-manager-data-paused/1_hu_b54b1db143639c67.png 480w, https://knightli.com/2026/04/09/windows-task-manager-data-paused/1_hu_133bff4e7ebfe2ef.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;任务管理器数据不刷新示例&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;117&#34;
		data-flex-basis=&#34;280px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;理由&#34;&gt;理由
&lt;/h2&gt;&lt;p&gt;タスク マネージャーは、「更新速度」の調整をサポートしており、高速、標準、低速、または一時停止に直接設定できます。&lt;/p&gt;
&lt;p&gt;これを「一時停止」に設定すると、インターフェイス上のさまざまな統計情報が更新されなくなるため、CPU、メモリ、またはネットワーク情報がすべて停止したように見えます。&lt;/p&gt;
&lt;p&gt;下の図に示すように、このオプションは通常、タスク マネージャーの上部メニューの [表示] にあります。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/09/windows-task-manager-data-paused/2.png&#34;
	width=&#34;642&#34;
	height=&#34;547&#34;
	srcset=&#34;https://knightli.com/2026/04/09/windows-task-manager-data-paused/2_hu_3020d576b0c86412.png 480w, https://knightli.com/2026/04/09/windows-task-manager-data-paused/2_hu_9f84b87ce1e21e95.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;任务管理器更新速度被设为已暂停&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;117&#34;
		data-flex-basis=&#34;281px&#34;
	
&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Feiniu NAS にリモートアクセスする 2 つの方法と比較</title>
        <link>https://knightli.com/ja/2026/04/04/fnos-remote-access-public-ip-vs-fn-connect/</link>
        <pubDate>Sat, 04 Apr 2026 11:00:00 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/04/fnos-remote-access-public-ip-vs-fn-connect/</guid>
        <description>&lt;p&gt;Feiniu NAS には主に 2 つのリモート アクセス方法があります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;パブリックIP直接接続&lt;/li&gt;
&lt;li&gt;FN Connectリモートアクセスサービス&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以下は「使い方＋注意事項＋適用シナリオ」に沿って直接参照できるものをまとめたものです。&lt;/p&gt;
&lt;h2 id=&#34;方法-1-パブリック-ip-直接接続&#34;&gt;方法 1: パブリック IP 直接接続
&lt;/h2&gt;&lt;p&gt;これは、ホーム ネットワークにパブリック IP があり、ルーターでポート転送を構成する必要があるシナリオに適しています。
次に、ブラウザまたは Feiniu アプリにパブリック IPv4/IPv6 アドレスとポート番号を入力してアクセスします。
さらに DDNS を使用し、ドメイン名を通じてアクセスすることもできます。&lt;/p&gt;
&lt;h3 id=&#34;注意事項&#34;&gt;注意事項
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Feiniu プライベート クラウド fnOS のデフォルト ポート:
&lt;code&gt;HTTP = 8000&lt;/code&gt;，&lt;code&gt;HTTPS = 8001&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;ポート転送が設定されている場合、アクセス アドレスにはポート番号が含まれている必要があります。そうでないと、Feiniu NAS に正しくアクセスできません。&lt;/li&gt;
&lt;li&gt;パブリック IP 直接接続には通常、追加のリレーがなく、速度損失が軽減されます。&lt;/li&gt;
&lt;li&gt;セキュリティ証明書が正しく構成されていない場合、HTTP はプレーン テキストで送信されます。信頼できるネットワーク環境でのみご使用ください。&lt;/li&gt;
&lt;li&gt;多くのブロードバンド ネットワークでは、80、8080 などの一般的なポートがブロックされます。一般的なポートを接続できない場合は、人気のないポートを試してください。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;方法2fn-connectリモートアクセスサービス&#34;&gt;方法2：FN Connectリモートアクセスサービス
&lt;/h2&gt;&lt;p&gt;FN Connect は、Feiniu が提供するリモート アクセス サービスです。&lt;br&gt;
使用後は、Feiniu NAS を識別し、対応する方法でリモート アクセスを有効にするために使用される一意の FN ID を取得します。&lt;/p&gt;
&lt;h3 id=&#34;注意事項-1&#34;&gt;注意事項
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;FN Connectを使用するには、Feiniuアカウントに登録またはログインする必要があります。&lt;/li&gt;
&lt;li&gt;FN Connect は、HTTPS 経由で安全にアクセスできる、FN ID に対応するサブドメイン名の SSL 証明書を提供します。&lt;/li&gt;
&lt;li&gt;FN Connectは、現在のネットワーク環境に基づいて、より適切な接続方法を自動的に選択します。&lt;/li&gt;
&lt;li&gt;パブリック ネットワーク直接接続が利用可能な場合、Web ページはパブリック ネットワーク IP 直接接続を使用するかどうかを選択できます。&lt;/li&gt;
&lt;li&gt;FN Connect のリレー転送にはトラフィック コストが発生するため、レート制限ポリシーが存在します。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;2-つの方法の比較&#34;&gt;2 つの方法の比較
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;公网 IP 直连&lt;/th&gt;
          &lt;th&gt;FN Connect&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;上手难度&lt;/td&gt;
          &lt;td&gt;需要公网 IP + 路由器端口转发&lt;/td&gt;
          &lt;td&gt;登录账号后按引导配置，门槛更低&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;访问速度&lt;/td&gt;
          &lt;td&gt;通常更快、链路更直接&lt;/td&gt;
          &lt;td&gt;直连时接近直连；中继时可能限速&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;安全性&lt;/td&gt;
          &lt;td&gt;取决于你自己的证书与暴露策略&lt;/td&gt;
          &lt;td&gt;默认支持证书，HTTPS 访问更省心，依赖于飞牛本身的安全&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;维护成本&lt;/td&gt;
          &lt;td&gt;需要自行维护网络与安全配置&lt;/td&gt;
          &lt;td&gt;日常维护成本较低&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;适合人群&lt;/td&gt;
          &lt;td&gt;有网络配置经验、追求性能&lt;/td&gt;
          &lt;td&gt;追求易用与稳定的普通用户&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;提案を選択する&#34;&gt;提案を選択する
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;ネットワーク構成に精通していて、より高い帯域幅とより低い遅延が必要な場合は、パブリック IP 直接接続を優先してください。&lt;/li&gt;
&lt;li&gt;使いやすさと安全なアクセス体験を重視する場合は、FN Connect を優先してください。&lt;/li&gt;
&lt;li&gt;実際の使用では、FN Connect がデフォルトであり、条件が許せばパブリック IP 直接接続に切り替えるなど、混合することができます。&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>Ubuntu で Let&#39;s Encrypt 証明書を自動的に更新する (Certbot &#43; Nginx)</title>
        <link>https://knightli.com/ja/2026/04/02/certbot-auto-renew-nginx/</link>
        <pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/02/certbot-auto-renew-nginx/</guid>
        <description>&lt;p&gt;Let&amp;rsquo;s Encrypt 証明書の有効期限は 90 日間のみです。オンライン サイトでは、証明書の有効期限切れによる HTTPS エラーを回避するために自動更新を構成する必要があります。&lt;/p&gt;
&lt;h2 id=&#34;crontabを手動で追加する推奨例&#34;&gt;crontabを手動で追加する(推奨例)
&lt;/h2&gt;&lt;p&gt;更新タスクを自分で明示的に管理したい場合は、root ユーザーとして追加します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo crontab -e
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;次の行を追加します (毎日午前 3 時に 1 回実行)。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;0 3 * * * certbot renew --pre-hook &amp;#34;systemctl stop nginx&amp;#34; --post-hook &amp;#34;systemctl start nginx&amp;#34; &amp;gt;&amp;gt; /tmp/certbot-renew.log 2&amp;gt;&amp;amp;1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;このコマンドの意味は次のとおりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0 3 * * *&lt;/code&gt;: 毎日 03:00 に実行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;certbot renew&lt;/code&gt;: 有効期限が近づいている証明書を確認して更新します (実際には毎日更新されるわけではありません)。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--pre-hook&lt;/code&gt;: 80/443 ポートの競合を避けるために、更新前に Nginx を停止します (スタンドアロン モードで一般的)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--post-hook&lt;/code&gt;: 更新後のNginxの起動&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;gt;&amp;gt; /tmp/certbot-renew.log 2&amp;gt;&amp;amp;1&lt;/code&gt;: トラブルシューティングを容易にするためにログをファイルに追加します&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最初に更新のシミュレーションを行うことをお勧めします&#34;&gt;最初に更新のシミュレーションを行うことをお勧めします
&lt;/h2&gt;&lt;p&gt;スケジュールされたタスクを追加した後、まずプロセスが利用可能かどうかを手動で確認します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo certbot renew --pre-hook &lt;span class=&#34;s2&#34;&gt;&amp;#34;systemctl stop nginx&amp;#34;&lt;/span&gt; --post-hook &lt;span class=&#34;s2&#34;&gt;&amp;#34;systemctl start nginx&amp;#34;&lt;/span&gt; --dry-run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;シミュレーションが正常に更新されたことを確認した後、長期実行のためにスケジュールされたタスクに渡されます。&lt;/p&gt;
&lt;h2 id=&#34;共通の注意点&#34;&gt;共通の注意点
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;webroot&lt;/code&gt; または &lt;code&gt;nginx&lt;/code&gt; プラグインを使用している場合、多くのシナリオで Nginx を停止する必要はありません。代わりに、更新後に構成をリロードすることもできます。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;certbot renew --deploy-hook &lt;span class=&#34;s2&#34;&gt;&amp;#34;systemctl reload nginx&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;certbot renew&lt;/code&gt; は、証明書の有効期限が近づいた場合にのみ実際の更新を実行するため、1 日に 1 回実行するのが通常の一般的な方法です。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;長期的な運用とメンテナンスを容易にするために、ログ ディレクトリを長期的に追跡可能な場所 (&lt;code&gt;/var/log/letsencrypt/&lt;/code&gt; など) に変更することをお勧めします。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        
    </channel>
</rss>
