私の目標は、ウェブサイトを介して一部のデバイスのユーザーインターフェイスを作成することです。デバイスはWiFiホットスポットを実行しており、ユーザーはそれに接続できます。それから私はいくつかの空港で見ましたが、何をすべきかわからなかった「何か」をしたかったのです。
空港で無料Wi-Fiを使用する場合は、時々ホットスポットに接続した後、スマートフォンに自動的にWebページが開き、そのホットスポットを通じて提供されるインターネットを使用するために登録できます。
同じことができれば、ユーザーにとって良いでしょう。接続したら、デバイスを駆動するためにIPアドレス(またはDNSを実行している場合はWebサーバー名)を入力する必要はありません。ユースケースのシナリオは次のとおりです。ホットスポットに接続すると、正しいウェブサイトが自動的にデバイスに表示されます。
これを達成する方法を教えてもらえますか?
PSこのホットスポットはインターネット接続を提供せず、偽装もルーティングもしません。組み込みLinuxで動作します。
答え1
あなたが望むのはキャプティブポータルです。実際、インターネット接続を提供することは必須ではありません。
ただし、たとえば、iOS、Windows、Mac OS、およびAndroidのテストでは、すべてWi-Fiが正常に動作しているかどうかをテストするための共通URLがわかっています。可能クライアントでWi-Fiアイコンを正常に表示するように設定する必要があります。
あなたの要件は可能ですが、あまりにも多くのソフトウェアをインストールせずに純粋にLinuxで実行するには、いくつかのWebサーバー/サービスとDNSサーバー/サービスのなりすまし(+ DCHPとHostpad)が必要です。
自動Webページ/ログイン警告を受け取るには、ポートがデバイスを強制的にリダイレクトする最初のページにWISPrタグを配置する必要があります。この分野の経験がない人の主な注意点は、WISPrタグが同じページを指すことができないことです。なぜなら、そうすると反復的な要求が発生するからです。
これを行う方法に関するナビゲーションパスの手がかりについては、U&Lの次の質問をご覧ください。
wpa_supplicantを使用したキャプティブポータルログインページを介してWiFiネットワークに接続する
MacはWi-Fiホットスポットに接続できません。 - Googleスターバックス
1つを除くすべてのアドレスに対してdnsmasq削除/拒否/リダイレクトクエリを実行できますか?
関連:
答え2
アクセスポイントが必要です。すでに持っていると仮定するハードウェアに応じて、HostapdはおそらくAPを駆動するかなり標準的なソフトウェアです。
クライアントにIPを提供するには、標準設定のDHCPサーバーが必要です。
デバイスIPに対する要求を解決するには、DNSサーバーを構成する必要があります。https://serverfault.com/questions/351108/using-dnsmasq-to-resolve-all-hosts-to-the-same-address
クライアントが実際に要求するホストに関係なく、すべての要求に応答できるHTTPサーバーが必要です。 Apacheはデフォルトでこれを行います(仮想ホストは無効になっています)。
もちろん、クライアントデバイスでブラウザが自動的に開かれるわけではありません。ただし、ユーザーがブラウザを開くと、通常はデフォルトのホームページに移動しようとし、設定にデバイスページが表示されます。