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 の悲観的ロックと楽観的ロックの理解と応用分析

推薦する

Vueは動的クエリルール生成コンポーネントを実装します

1. 動的クエリルール動的クエリルールは、おおよそ次の図のようになります。ユーザのカスタマイズに応じ...

Vueはシンプルな計算機能を実装します

この記事では、参考までに、簡単な計算機機能を実現するためのVueの具体的なコードを紹介します。具体的...

Linux における SUID、SGID、SBIT の素晴らしい使い方の詳細な説明

序文Linux のファイル権限管理はとにかく素晴らしいです。SUID、SGID、SBIT の機能を確...

Firefoxでリンクをクリックしたときに点線の枠線を削除する方法

今日、ブラウザの互換性の問題にいくつか遭遇しました。そのうちの 1 つは奇妙に感じました。Firef...

vue の v-for ディレクティブはリストのレンダリングを完了します

目次1. リストの走査2. Vueにおけるキーの役割3. リストフィルタリングこの記事では、Vue ...

MySQL での limit の使用方法は何ですか (推奨)

SELECT * FROM テーブル名制限m,n; SELECT * FROM テーブル LIMI...

CentOS8.1 で Gitlab サーバーを構築するための詳細なチュートリアル

Gitlab と Github の違いについては、あまり説明する必要はありません。一言でまとめると、...

MySQL が外部キーを作成できない理由と解決策

2 つのテーブルを関連付けるときに、外部キーを作成できませんでした。このブログから、問題は、ポイント...

Git サーバーを使用してデバッグ ブランチを表示し、修正する方法を 1 日 1 分で学習します。

デバッグブランチプロジェクトの通常の開発中に、以前にリリースされたバージョンにバグがある場合がありま...

スキン効果を実現するJavaScript(背景の変更)

この記事では、スキン変更効果を実現するためのJavaScriptの具体的なコードを参考までに紹介しま...

Apache、Tomcat、Nginx サーバーの詳細な理解と比較分析

質問1件会社のサーバーはApacheを使用しており、バックエンドはPHP、サーバーはLinux C/...

Node.JS で悪天候のリアルタイム警報システムを構築する

目次序文:ステップ1: 無料の天気予報インターフェースを見つけるステップ2: 天気予報インターフェー...

docker コマンド例外「権限が拒否されました」の解決方法

Linuxシステムでは、dockerを新しくインストールし、次のようなコマンドを入力します。dock...

VueとFlask間の通信の実装

axiosをインストールして通信を実装するここでは、axios を使用して Vue フロントエンドと...

静的ウェブサイトをRSSに変換するツール

<br /> この記事は allwebdesignresources.com から Ra...