Docker:VPN セッション中に定義済みアドレスプールが残らない
定義済みプールのエラーは公開アドレスではなく自動割り当てに関するものです。割り当てを数え、オンリンク経路を比較し、VPN ポリシーを保ったままにしてください。
症状は明確です。Docker が新しいブリッジネットワーク用に受け入れ可能な自動サブネットを見つけられない、というものです。マシンのアドレスが尽きたという意味でも、VPN が壊れているという意味でもありません。診断を決めるのは二つの問いです。デーモンがどの候補ブロックを認識できるか、そしてそのうちどれをこの環境でアロケータが除外するか。この順に進めてください。一つ目に答えない限り、二つ目の問いは意味を持ちません。
何かを変える前に、何が失敗したのかを確認する
以下の手順はデーモンを動かしているホストで実行してください。リモートコンテキストに接続したシェルは別のマシンを語っています。その誤りだけで一時間を無駄にしかねません。
同時に Engine のバージョンをチケットに記録します。この手順書の残りのヒューリスティックはすべてバージョン依存であり、バージョンのない主張は噂にすぎません。
すでに持っている割り当てを数える
ネットワークを一覧表示し、重要なものを調べます。docker network ls、続いて docker network inspect NETWORK_NAME です。それぞれの IPAM サブネットと接続されているコンテナを読みます。Compose プロジェクトはコンテナ数から想像されるより多くのブロックを消費します。どのプロジェクトも独自の既定ネットワークを作りたがるからです。停止したコンテナはそのネットワークの割り当てを解放しません。
プールの設定も確認してください。既定プールには基底範囲とネットワークごとのプレフィックス長があります。ネットワークあたりの割り当てが大きいほど利用可能なブロックは早く尽きます。これは容量の事実であり、ルーティングの問題ではありません。
その数を書き留めます。次の変更が効いたかどうかを教えてくれる基準値です。
デーモンから見た経路を比較する
VPN は候補の選択に影響し得ますが、その方法は実装次第です。Linux 上の Moby 28.2.2 では、InferReservedNetworks がネームサーバーのアドレスと一部のオンリンク IPv4 経路を収集しますが、あらゆるテーブルのあらゆる経路を単純に予約するわけではありません。収集されたリンク経路は未指定の宛先アドレスも除外するため、0.0.0.0/1 の経路だけではすべてのアドレスを予約しません。別の広いオンリンクプレフィックス、たとえば 128.0.0.0/1 は、よく知られた候補範囲 172 と 192 と交差し得ます。
VPN 接続の前後で ip -4 route show table all をデーモンのホスト上で比較します。差分が証拠であり、バージョンが主張の適用範囲です。
あるリリースのヒューリスティックを全リリースに一般化しないでください。フォーラムの回答がポリシー変更になるのは、まさにそういう経路です。
機能する最小の修正を選ぶ
未使用だと確認できたネットワークが必要なブロックを保持しているなら、広く刈り込むのではなく、所有者とともに的を絞った廃止を計画します。新しいネットワークでは、明示的にレビューした未使用サブネットを使えば自動選択への依存をまったく避けられます。そのサブネットも実際の Docker、LAN、必要な VPN の宛先を避けなければなりません。プライベートは安全を意味しないからです。実際のリモートプレフィックスを経路にすると、割り当てのエラーをアクセス不能と引き換えにすることになります。
default-address-pools の変更は将来の割り当てに関するより広いポリシーです。衝突しない基底と適切な割り当てサイズを選び、既存のデーモン設定と統合し、文書化された再起動の影響を計画してください。既存のネットワークが黙って採番し直されることはありません。
割り当てを通すために会社の経路配布を無効にしないでください。明示的なアドレス計画は、必須ポリシーを弱めることなく局所的な問題を解決するのが通常です。
割り当てとルーティングは別々に受け入れる
変更後は、Docker が実際に作成したサブネットを調べ、アプリケーションの VPN とローカルの依存関係をテストします。割り当ての成功と実行時の正しいルーティングは別々の受け入れ検査であり、前者を通ったことは後者の証拠になりません。アプリがトンネルの先のリソースに到達できないなら、プールのエラーが隠していたルーティングの問題があります。どちらの結果もチケットに記録してください。
経路の差分とプールの数は変更記録と一緒に保管してください。次の VPN クライアント更新は Docker に触れずに前者を変え得ます。
他の誰かがこの二つの検査を再現して同じ答えを得られたとき、この手順書は完成です。