Dockerのデフォルトネットワークセグメントの正しい変更手順

Dockerのデフォルトネットワークセグメントの正しい変更手順

背景

同僚がセキュリティ プロジェクトに取り組んでおり、AWS サーバーに秘密兵器を展開する必要があります。秘密兵器は Docker を通じて展開されます。展開前は、ジャンプ サーバーのイントラネットおよびエクストラネット SSH 経由でサーバーにログインできます。展開後は、エクストラネット SSH 経由でのみサーバーにログインできます。症状はまさにこのとおりで、薬の処方方法は医療スキルに依存します。

心臓の旅をチェック

1.秘密兵器を展開する前は、内部ネットワークと外部ネットワークで使用できますが、展開後は外部ネットワークでのみ使用できます。この症状を見ると、ネットワークファイアウォールの問題です。

1) iptables -F

2) 強制0を設定する

3) AWS 上で、このサーバーのセキュリティグループを inbound 0.0.0.0 に設定します (これは純粋にテスト用なので、正式な環境では行わないでください~~~)

2. SSH が失敗する原因は SSH 設定ファイルが変更されたことにありますか? ポートが変更されたため、SSH 設定ファイルに内部および外部ネットワークがログインできるかどうかを制御する設定がありますか?だから〜〜〜

vim /etc/ssh/sshd_config を実行して、いくつかランダムな変更を加えます (これは、私が ssh について十分に理解しておらず、設定ファイルに精通していないことを示しています。そのため、学習する必要があります)

3. これは一体何なのでしょう。ネットワークは正常で、セキュリティグループも問題ありません。なぜか、ルーティングについて考えました。route -n を使って調べてみました。すごい、こんなに多くのルートがあります。これらのルートを見ると、そのうちの 1 つは 172.29.0.0 でした (ジャンプ サーバーのネットワーク セグメントはこれによく似ています)。漠然と、ここに問題があると感じました (女性の直感は、彼氏が外で犬を飼っているかどうかだけでなく、彼氏が自分を愛しているかどうかも判断します。彼女の直感はここでもかなり正確です、笑)。それで~~~

 ルート -n
 ルート del -net 172.22.32.0 ネットマスク 255.255.255.0
 ルート del -net 172.23.32.0 ネットマスク 255.255.255.0
 ......

コンテナに関連するすべてのルートを強制終了し、ジャンプサーバーからイントラネットに ssh で接続すると、わお~~~わお~~~動作する、とても興奮する~~~~

4.そのルートの問題であることが確認されました。このコンテナが割り当てたネットワークセグメントがジャンプサーバーのネットワークセグメントと競合していたため、~~~~

 ルートを追加 -net 172.22.32.0 ネットマスク 255.255.255.0
 ......

競合するルートを除いて、削除したすべてのルートを追加します。これで、この問題を解決できます。

当時の解決策

考えてみると、競合があるので、このコンテナのネットワーク セグメントを変更する必要があります。どのように変更するのでしょうか? 私は非常に愚かな方法を使用しました。このコンテナを停止して削除し、docker-compose で再起動しました。新しいネットワーク セグメントが再割り当てされ、競合は発生しませんでした。

根本的な解決策

コンテナを起動する前に、Docker ネットワーク全体を、独自のネットワーク セグメントと競合しないものに変更します。これにより、Docker は常に、設定したネットワーク セグメントのみを割り当てるようになります。

操作手順: docker.json を変更して、docker 全体のネットワーク セグメントを変更します。元のネットワーク セグメントは 172 でしたが、これを 192 に変更します。

1) vim /etc/docker/daemon.json (このファイルが存在しない場合は自分で作成してください)

{
 "bip":"192.168.0.1/24"
}

2) Dockerを再起動する

systemctl dockerを再起動します

3) ネットワークセグメントを再確認する

注: Docker コンテナの使用を最初に計画するときには、この点を考慮して、使用するネットワーク セグメントを計画する必要があります。上記の方法では、Docker とコンテナを再起動する必要があります。

疑い

コンテナを停止または削除せずにネットワーク セグメントを変更するより良い方法はありますか? (調査が終わったらさらに追加します)

要約する

1: ssh 設定ファイルについてよく知らない (いつか体系的に調べる必要がある)

2: ネットワーク、特にルーティングに精通していること。正直に言うと、ルーティングの具体的な役割はまだ説明できません。直感的にしか理解できません。ルーティングなしではやっていけないとわかっているだけです (この期間中に PMP 試験を終えたら、シスコに関する本を読み始めます。認定については話しませんが、まずはネットワークを強化するために、それらの本を注意深く読みます)

3: Docker ネットワーク モードに慣れていない (今後は Docker ネットワークの公式ドキュメントを注意深く読んでください)

さて、今回の記事は以上です。この記事の内容が皆さんの勉強や仕事に少しでも参考になれば幸いです。123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker で Docker0 ブリッジのデフォルトのネットワーク セグメントを変更する方法
  • Dockerコンテナのホスト間マルチネットワークセグメント通信ソリューションの詳細説明
  • Dockerは同じIPネットワークセグメントとの接続を実現する
  • Docker は、ホストと同じネットワーク セグメントにある IP アドレスを指定します。
  • Docker はホスト ネットワーク セグメント IP をどのように割り当てますか?
  • Dockerコンテナはカスタムネットワークセグメントで固定IP/静的IPアドレスを指定します
  • Dockerのデフォルトネットワークセグメントを変更する実装方法の分析

<<:  mysql5.7.19 zip 詳細なインストールプロセスと構成

>>:  Vueで複数の添付ファイルをアップロードする実装例

推薦する

Windows で MySQL 5.6 を 5.7 にアップグレードする方法

前面に書かれたMySQL をアップグレードする方法には、インプレース アップグレードと論理アップグレ...

SQL 集計、グループ化、並べ替え

目次1. 集計クエリ1. COUNT関数2. SUM関数3. AVG関数4. MAX関数とMIN関数...

MySQL の詳細な単一テーブルの追加、削除、変更、クエリの CRUD ステートメント

MySQL の追加、削除、変更、クエリステートメント1. 練習シートを作成するここでの練習表は3つの...

jQueryは従業員情報の追加と削除の機能を実装します

この記事では、従業員情報の追加と削除の機能を実装するためのjQueryの具体的なコードを参考までに共...

Linux での tcpdump コマンド例の詳細な説明

序文簡単に言えば、tcpdump は、ネットワーク上のトラフィックをダンプし、ユーザーの定義に従って...

MySQL 派生テーブル(Derived Table)の簡単な使用例分析

この記事では、例を使用して、MySQL 派生テーブルの簡単な使用方法を説明します。ご参考までに、詳細...

vue-element-admin プロジェクトのインポートとエクスポートの実装

vue-element-admin インポートコンポーネントのカプセル化テンプレートとスタイルまず、...

mysqlはルートユーザーと一般ユーザーを作成し、機能を変更および削除します。

方法1: SET PASSWORDコマンドを使用する mysql -u ルート mysql> ...

CSSのclip-pathプロパティを使用して不規則なグラフィックを表示する

clip-path CSS プロパティはクリッピングを使用して要素の表示可能領域を作成します。領域内...

js配列forEachインスタンスの詳細な使用方法

1. forEach() は map() に似ています。これも渡された関数に各要素を順番に適用します...

CSSでスペースを処理する方法

1. 宇宙のルールHTML コード内の空白は通常、ブラウザによって無視されます。 <p>...

Node.jsはMySQLデータベースの実戦記録を追加、削除、変更、チェックします

目次プロジェクトでデータベースを操作する3つのステップデータベースを操作するための具体的な手順1: ...

異なる列を持つテーブルのクエリ結果のSQLマージ操作

2 つの異なるテーブルをクエリするには、結果をマージする必要があります。たとえば、table1 の列...

Centos7.2 で mysql5.7 データベースをインストールするための詳細な手順

サーバー上の mysql はバージョン 8.0.12 でインストールされており、ローカルのものはバー...

Vueでルーティング権限を動的に設定する主なアイデア

以前、インターネット上で動的ルーティング設定をいくつか見たことがありましたが、現在のプロジェクトとは...