2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Cloud9は172.17.0.0/16に気を付けろ!

Last updated at Posted at 2020-11-28

言いたいこと

  • Cloud9を使うときはVPCのCIDRに172.17.0.0/16は禁物
  • VPCピア接続でも影響あるからね

Cloud9トラブルシュートから抜粋

10月29日にAWS Cloud9 のトラブルシューティングに以下が追記されました。(英語版はもっと前に追記されてました)

VPC の IP アドレスが Docker で使用されているEC2 環境ため、 に接続できない

問題: EC2 環境の場合、Amazon VPCクラスレスドメイン間ルーティング IPv4 (CIDR) ブロックを使用する (仮想プライベートクラウド) 172.17.0.0/16 で EC2 インスタンスを起動すると、その環境を開いたときに接続が停止することがあります。

原因: Docker では、同じブリッジネットワークに接続されたコンテナが通信できるようにするブリッジネットワークと呼ばれるリンクレイヤーデバイスを使用します。 AWS Cloud9は、コンテナ通信用のデフォルトブリッジを使用するコンテナを作成します。通常、デフォルトのブリッジはコンテナネットワーキングに172.17.0.0/16サブネットを使用します。

Cloud9のネットワークみてみた

Cloud9でブリッジネットワークみてみるとサブネット172.17.0.0/16でした。

$ docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "xxx",
        "Created": "2020-11-28T11:05:59.364729174Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

VPC(172.17.0.0/16)でCloud9作ってみた

禁断の構成VPC(172.17.0.0/16)で、Cloud9を作ると何が起こるか試してみました。

image.png

作成したところ、以下の画面からなかなか進みません。

image.png

しばらくするとエラーが発生しました。(画面のオレンジ色のところ)

image.png

(オレンジ色の)エラーメッセージの内容

This is taking longer than expected. The delay may be caused by high CPU usage in your environment, or your T2 or T3 instance is running out of burstable CPU capacity credits, or there are VPC configuration issues. Please check documentation.

Google翻訳

これには予想よりも時間がかかっています。 遅延は、環境内のCPU使用率が高いか、T2またはT3インスタンスでバースト可能なCPU容量クレジットが不足しているか、VPC構成に問題があることが原因である可能性があります。 ドキュメントを確認してください。

エラー内容から172.17.0.0/16が問題と気が付くのは困難ですね。

エラー発生後の状態も確認しました。
AWSコンソールのCloud9を確認すると問題なく作れたみたいに見えます。

image.png

Cloud9のEC2は起動状態でこれまた問題無いように見えます。

image.png

Cloud9はCloudFormationスタックで構築されます。そのスタックもCREATE_COMPLETEとなっていて、これも問題無いように見えます。

image.png

という感じで、エラーメッセージからCIDR172.17.0.0/16が問題ってことはわかりにくいことがわかりました。

VPCピア接続時も要注意

Dockerネットワークを理解している方には当然の話ですが、以下の構成でも問題が発生します。

VPC-2(192.168.0.0/16)にCluod9を作ることはできますが、Cloud9から、ピア接続したVPC-1(172.17.0.0/16)のEC2への接続は通信不具合が発生します。

image.png

さいごに

Cloud9が好きでよく使うのですが、172.17.0.0/16の制限を知らず苦労しました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?