iptables の再起動後に Docker の iptables ルールの完全なプロセスが失われる

iptables の再起動後に Docker の iptables ルールの完全なプロセスが失われる

原因と結果

1. ansibleコマンドを使用してジャンプサーバー上のマシンBをテストすると、次のエラーが報告されるため、ネットワークファイアウォールに問題があると思われます。

10.10.0.86 | 失敗 >> {
 「失敗」:true、 
 "msg": "/bin/sh: /usr/bin/python: そのようなファイルまたはディレクトリはありません\r\nOpenSSH_7.6p1 Ubuntu-4ubuntu0.3、OpenSSL 1.0.2n 2017 年 12 月 7 日\r\ndebug1: 構成データ /etc/ssh/ssh_config を読み込んでいます\r\ndebug1: /etc/ssh/ssh_config 行 19: * のオプションを適用しています\r\ndebug1: auto-mux: 既存のマスターを試行しています\r\ndebug1: mux_client_request_session: マスター セッション ID: 2\r\n10.10.0.86 への共有接続が閉じられました。\r\n", 
 「解析済み」: false
}

2. マシンBにログインします。これはDockerコンテナを実行しているオンラインマシンです。私の経験では、ネットワークファイアウォールに問題がある場合は、

iptables -F
systemctl iptablesを停止する 
systemctl 停止 ファイアウォール

3. それでコンテナに影響はないだろうと思い、コンテナのログを見てみた。予想外に10個以上エラーが報告されていて、すべて接続できない状態だった。ちょっと慌てた…コンテナを再起動したが、全然起動しなかった。エラーは以下の通りだった

docker: デーモンからのエラー応答: ドライバーはエンドポイント happy_ptolemy での外部接続のプログラミングに失敗しました (9cedc114be35eb86cd6f7f7bb4f11f93b5f8d2c0745afc72664cef8e96aad439): iptables が失敗しました: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 10.10.0.86 --dport 3000 -j ACCEPT: iptables: その名前のチェーン/ターゲット/一致はありません。

(終了ステータス 1)。

4. 解決策: dockerを再起動する

systemctl dockerを再起動します

知識ポイント

1. netfilterとiptablesの関係

Netfilter は、ネットワーク パケットを管理するために使用される Linux カーネルのファイアウォール フレームワークです。ネットワーク アドレス変換 (NAT) の機能だけでなく、パケット コンテンツの変更やパケット フィルタリングなどのファイアウォール機能も備えています。 Netfilter を制御するには、ユーザー空間でアプリケーション ソフトウェア iptables を使用します (iptables は単なるアプリケーション ソフトウェア、ツールです)。

2. iptablesとfirewalldの関係

Firewalld は iptables と同様にアプリケーション ソフトウェアでありツールですが、その基礎となるレイヤーはやはり最初に iptables を通過します。

3. docker、firewalld、iptablesの関係

1) docker がインストールされると、iptables または firewalld が自動的に引き継がれます。docker が実行されると、iptables にルールが自動的に追加されます。そのため、iptables を再起動すると、iptables は失われ、docker を再起動することによってのみ修正できます。

2) Systemd を使用する場合、firewalld は Docker の前に起動しますが、Docker の起動後に firewalld を起動または再起動する場合は、Docker プロセスを再起動する必要があります。

要約する

1. 生産環境への敬意

2. 知識ポイントを十分に理解していないため、どのシナリオが使用可能で、どのシナリオが使用できないかがわからない

3. その後、ファイアウォールのルールをさらに理解する必要があります

これで、iptables の再起動後に Docker の iptables ルールが失われるというこの記事は終わりです。再起動後に Docker の iptables ルールが失われるという詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker コンテナで iptables を使用するときに最小限の権限を有効にする方法
  • Linux iptables とインターフェースを使用してコンテナ ネットワークを管理する Docker の詳細な説明

<<:  Vueは小さな天気予報アプリケーションを実装します

>>:  MySQL の悲観的ロックと楽観的ロックの理解と応用分析

推薦する

HTML H タイトルタグの使用

H タグ、特に h1 タグの使用は常に議論の的となっている問題であり、私たちが研究する価値のある問題...

js を使ってシンプルな虫眼鏡効果を実現

この記事の例では、参考までに簡単な虫眼鏡効果を実現するためのjsの具体的なコードを共有しています。具...

Dockerは公式Redisイメージをインストールし、パスワード認証を有効にします

参考: Docker 公式 Redis ドキュメント1. 特別なバージョン要件がある場合は、redi...

Dockerに証明書を追加する方法

1. アップグレードプロセス: sudo apt-get updateパッケージが見つからない、パッ...

Nginx は動的と静的の分離を実装します 例の説明

ウェブサイトの解析を高速化するために、動的ページと静的ページを異なるサーバーで解析して、解析速度を向...

VMware インストール エラー VMware Workstation が VMware 認証サービスを開始できませんでした

背景: SAP ECC サーバーをインストールし、XP をプレインストールしたいと考えています。XP...

MySQL Binlog ログ処理ツールの比較分析

目次運河マクスウェルデータバスAlibaba Cloud のデータ転送サービス (DTS)運河ポジシ...

Windows10システムにスーパーセットをインストールする手順

Superset は、エレガントなインターフェースとデータ テーブルに基づく動的なデータ生成を主な機...

複数のドメイン名に対する Nginx リバース プロキシを使用した HTTP および HTTPS サービスの実装

現在、Nginx は、Web サービスを提供するために、Windows ベースの IIS と Lin...

HTMLノードの追加と削除の簡単な例

HTML ノードの追加と削除の簡単な例 HTML ノードの追加と削除の簡単な例<input t...

IE8を閲覧するときにウェブサイトが自動的にIE7互換モードを使用するようにする

序文IE の将来のすべてのバージョンで Web ページの外観が一貫していることを保証するために、IE...

ウェブデザインと制作に関する科学的原則と提案の要約

<br />ネットワーク設計の分野では、アイトラッキングに関する研究が非常に盛んに行われ...

VMware Workstation での VMware vSphere のセットアップ (グラフィック チュートリアル)

VMware vSphere は、業界をリードする最も信頼性の高い仮想化プラットフォームです。 v...

CSS ポインターイベント属性の使用に関する詳細な説明

フロントエンド開発では、ユーザーと直接やり取りするため、ユーザーが操作がスムーズで快適だと感じ、ネイ...

MySQL でよく使われる連結文のまとめ

はじめに: MySQL では、CONCAT() 関数を使用して複数の文字列を 1 つの文字列に連結し...