Willkommen, Mach es dir gemütlich!
【Linux】マクドナルドのフリーWi Fiでキャプティブポータルが開かない原因はDockerの172.17.0.0/16とのルーティング衝突だった
はじめに マクドナルドのフリーWi-Fi 00_MCD-FREE-WIFI に接続したものの、キャプティブポータルの認証画面が開かない問題に遭遇しました。 Wi-Fi自体には正常に接続できており、IPアドレスも取得できています。しかし、認証ページへのリダイレクト先に接続するとタイムアウトします。 最終的に調べてみると、原因はDockerが作成していた docker0 のネットワーク 172.17.0.0/16 と、Wi-Fiの認証サーバーのIPアドレスが衝突していたことでした。 この記事では、実際のログをもとに、どのように原因を切り分けたのかを記録します。 ※この記事に記載するIPアドレスやネットワーク構成は、今回接続した環境で実際に観測したものです。マクドナルドのWi-Fi環境が常に同じ構成とは限りません。 発生した問題 まず、Wi-Fiへの接続自体は成功していました。 wlp3s0: 接続済み から 00_MCD-FREE-WIFI inet4 10.4.44.95/15 route4 10.4.0.0/15 metric 600 route4 default via 10.4.0.126 metric 600 つまり、 Wi-Fiには接続済み IPアドレスを取得済み デフォルトゲートウェイも存在 という状態です。 一見すると正常に通信できそうです。実際、Firefoxのキャプティブポータル検出用URLにはアクセスできました。ログ上でも、HTTPリクエストは成功し、Wi-Fi側のポータルへ 302 Found でリダイレクトされています。 問題は、その次に発生しました。 キャプティブポータルへのリダイレクト detectportal.firefox.com にアクセスすると、まずWi-Fi側のポータルへリダイレクトされます。 Location: http://10.4.0.1/index.php?http://detectportal.firefox.com/canonical.html さらにアクセスすると、次のURLへリダイレクトされました。 Location: http://mdj-service-select.internal/ServiceSelect.html?mac=... ここまでは正常です。 そして重要なのが、このホスト名を名前解決した結果です。 Host mdj-service-select.internal:80 was resolved. IPv4: 172.17.232.116 つまり、今回の環境では認証ページのホスト名 mdj-service-select.internal が、 172.17.232.116 へ解決されていました。 しかし172.17.232.116に接続できない 問題のIPアドレスへ接続しようとすると、次のエラーになります。 Trying 172.17.232.116:80... connect to 172.17.232.116 port 80 from 172.17.0.1 failed: ホストへの経路がありません ここで注目すべきなのは、 ...