【Docker】とあるIPセグメントからだけDockerで公開してるサービスにアクセス出来なかったお話【社内ネットワーク】


まえがき

とあるお仕事で、社内ネットワークにdockerで社内用WEBサービスを立ち上げました。
その社内ネットワークは「A拠点」、「B拠点」がVPSで接続されている構成となっているのですが
自分が所属&dockerホストを配置した「A拠点」からは問題無くWEBサービスへアクセス出来るのに
「B拠点」からはなぜかアクセス出来ないという事象が発生したので、それについてまとめます。

かなり珍しい事象かと思いますが、今後の為に書き留めました。

読んだ方がいいかもしれない人

  • 社内サービスをDockerで構築しようとしている人
  • 社内ネットワークでクラスBのIPが使用されている環境にいる人
  • 拠点毎、部署毎など、IPのセグメントが分割されている環境にいる人

詳細

環境

  • 拠点A
    • 172.16.XX.XX/16 のセグメントを利用
    • VPNゲートウェイは172.16.0.1
  • 拠点B
    • 172.17.XX.XX/16 のセグメントを利用
    • VPNゲートウェイは172.17.0.1
  • Dockerホストマシン
    • 拠点Aのネットワークに配置(172.16.16.33)

事象

拠点Aのクライアントマシン(172.16.YY.YY)から、Dockerにて提供されるWEBサービスへのアクセスは出来るが、
拠点Bのクライアントマシン(172.17.XY.ZZ)から、Dockerにて提供されるWEBサービスへのアクセスは出来ない。

原因

Docker起動時に構築される「Dockerホストとコンテナを繋ぐブリッジ(docker0)」に割り当てられるIPアドレスがデフォルトだと「172.17.0.1/16」である為
拠点BのVPNゲートウェイのIPアドレスと被ってしまった。

解決策

dockerブリッジ(docker0)のipアドレスを変更する。

↓参考
Dockerでdocker0ネットワークのIPアドレスを変更する