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で複数の添付ファイルをアップロードする実装例

推薦する

jsを使って簡単な計算機を作る

この記事では、jsで簡単な計算機を作成する具体的なコードを参考までに共有します。具体的な内容は次のと...

Vueのハッシュジャンプ原理の詳細な説明

目次ハッシュと履歴の違いハッシュ履歴getCurrentLocation の実装setupListe...

Vue3サンドボックスの仕組みの詳しい説明

目次序文ブラウザコンパイル版ローカルプリコンパイルバージョン要約する参照する序文vue3サンドボック...

Linux で最も頻繁に使用されるターミナル コマンドのトップ 10 のリストを取得します。

私が最も頻繁に使用するコマンドは次の通りです:選択肢CDギットls ssh須藤数週間前、私はこの R...

GolangでMySQLデータベースを操作するための実装コード

序文Golang は、SQL データベースにアクセスするための database/sql パッケージ...

nginx リクエスト ヘッダー データ読み取りプロセスの詳細な説明

前回の記事では、nginx がリクエスト ラインのデータを読み取って、リクエスト ラインを解析する方...

DockerがElasticsearch7.xを起動してエラーを報告する問題を解決する

Docker実行コマンドの使用docker run -d -p 9200:9200 -p 9300:...

Navicat がデータベース データ構造をインポートする際に発生するエラー datetime(0) の SQL レポートの問題を解決します。

エラー発生: MySQL 5.7 から SQL にデータベースをエクスポートし、それを MySQL ...

HTML の 5 種類のスペースの意味

HTML には、幅の異なる 5 つのスペース エンティティが用意されています。非改行スペース ( )...

シンプルなリスト機能を実装するミニプログラム

この記事の例では、参考のために簡単なリスト機能を実装するアプレットの具体的なコードを共有しています。...

ページを更新せずにフォームを送信するには iframe を使用します

そこで、この問題を解決するために埋め込みフレームワークを導入します。具体的な原則は、フォームがデータ...

Linuxの運用・保守の基礎知識から上級者向け知識までをまとめました

運用保守エンジニアは、初期段階では非常に大変な仕事です。この期間中、コンピューターの修理、ネットワー...

WeChatアプレット+mqtt、esp8266温度と湿度の読み取り実装方法

まず、 esp8266 は mqtt を通じてメッセージを公開し、WeChat アプレットは mqt...

Vue3 トランジションアニメーションの落とし穴記録について

目次背景問題の場所さらなる分析要約する背景私のコース「Vue 3 エンタープライズレベルの音楽アプリ...

MySQL のキーとインデックスの違い

まずはコードを見てみましょう: ALTER TABLE reportblockdetail ADD ...