Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Dockerコンテナ内 HTTP通信遮断について

質問内容

Dockerコンテナ内において、外部とのHTTP通信が遮断していることを確認すべく、コマンドで確認しました。

  • wgetコマンドでは「接続中」のステータスで1分程度待っても反応なし
    • (ufwのログには通信をブロックした痕跡あり)
  • pingコマンドを打った際にpingが帰ってきました。

上記より、コンテナ内で外部とのHTTP通信は遮断されていると考えられるのでしょうか。

前提条件

  • 機器 (OS:Linux) は社内ネットワーク内にあり、インターネット接続が可能な環境
  • ufwを有効
  • 次の設定を実施
    • サーバーへの入力は遮断
    • サーバーからの出力は許可
    • その他ポートの許可
  • /etc/docker/daemon.json
    • iptables:false

行ったこと

  • 以下のコマンドでコンテナ内へ入る
$ docker exec -it [コンテナID or コンテナ名] bash
  • コンテナ内で、以下のwgetコマンドを実行
# wget https://www.yahoo.co.jp
  • コンテナ内で、以下のpingコマンドを実行
# ping yahoo.co.jp

実行結果

  • wgetコマンドの結果
      →Connecting to [yahoo.co.jpのグローバルIP]:443... (<--- この状態で停止)
      →ufwログに [yahoo.co.jpのグローバルIP]:443関係の通信についてブロックしたログが記載

- pingコマンドの結果
  →pingの結果が戻って来る

以上となります。
もし、記載内容に間違いがあった場合はお知らせいただけますと幸いです。
どうぞよろしくお願いします。

1

1Answer

結果からすると目的は達成できているように見えますが、、、

なにか変な気もします。

1. ufw で遮断したのはサーバーへの入力?です

どういうトラフィックを遮断したのかは明確ではありませんが、少なくとも外部へ向かう HTTPS トラフィックを遮断するルールを書いたわけではなさそうです。にもかかわらず、ブロックしたログが残っているというのもおかしな気がします。

2. iptables:false

Dockerのバージョンにもよるのかもしれませんが、27.5.0 で確認するとこの設定により iptables (nftables) へのルールは作成されません。この為、コンテナネットワークからホスト外への通信経路は無くなります。(逆にホスト含むコンテナ外からは docker-proxy プロセスが通信を中継するのでコンテナサービスへのアクセスは可能です)

従って、コンテナ -> ホスト外に対しては HTTPS だけでなく ping も通信不可となるのですが、確認結果ではレスポンスが返ってくるとあります。
/etc/docker/daemon.json を書き換えた後 Docker(もしくはホスト自体)を再起動していないとか、rootless docker を使っているということは無いでしょうか?

0Like

Your answer might help someone💌