Windows 7 で Wi-Fi ホットスポットを作成し、ローカル Web ページにリダイレクトするにはどうすればよいですか?

Windows 7 で Wi-Fi ホットスポットを作成し、ローカル Web ページにリダイレクトするにはどうすればよいですか?

質問に入る前に、背景情報を少し簡単に説明します。
私は、Windows 7 を実行しているコンピューターと連携して動作する小さな実験を構築しました。このコンピューターには、実験から取得したステータス情報で継続的に更新される Web ページを提供する小さな Web サーバーがあります。この実験は、いくつかのイベント (MakerFaire など) で公開される予定です。できるだけ設定を少なくして、スマートフォン (またはラップトップ) を使用してこの Web ページを直接表示できるようにしていただければ幸いです。

基本的に私が達成しようとしていることは次のとおりです。

  1. Wi-Fiアクセスポイントを作成するコンピュータの内蔵Wi-Fiアダプタを使用するユーザーが接続できるもの(オープンまたはパスワード保護)

  2. DNS および/または HTTP リクエストを傍受してリダイレクトし、ブラウザを開いたときに実験 Web ページが表示されるようにします (キャプティブ ポータルのように)

これまでのところ、Windows 7 のホスト ネットワーク機能を使用してポイント 1 を達成できました。この機能は、Wifi AP の部分では非常にうまく機能します。ただし、DHCP 応答を変更してカスタム DNS サーバーを提供し、すべてのトラフィックを Web サーバーに転送するというところで行き詰まっています。これを実行する方法はありますか?

私が抱えている制約がいくつかあります (そうでないと簡単すぎてしまいます ;-) ):

  • 私は Windows 7 で行き詰まっています (Linux ならこの問題はずっと前に解決されていたはずです!)
  • コンピューターはスタンドアロン マシンです。つまり、他のネットワークやインターネットにアクセスすることはできません。つまり、ルーターやその他の外部デバイスも不要になります。

ご協力やご提案をいただければ幸いです。

答え1

  1. MaraDNSを入手

MaraDNS は、Windows および Linux 用の無料かつ軽量で、比較的簡単に設定できる DNS サーバーです。ここからダウンロードして、任意のフォルダーに解凍してください。

  1. MaraDNS を設定する

「secret.txt」を開き、値を別の値(ランダムな文字)に変更します。

MaraDNS の設定は、同じディレクトリの「mararc」ファイルにあります。DNS サーバーには 2 セットの機能があります。これらは、「権威ネーム サーバー」または「再帰/キャッシュ ネーム サーバー」として機能します。

権威ネーム サーバーは、ドメイン名の IP アドレスを指定します。再帰ネーム サーバーは、権威ネーム サーバーからの情報を保存し、再帰的にクエリを渡します。

MaraDNS で権威機能と再帰機能の両方を構成します。

2.1 権限のある構成

LAN ドメイン名の権威ある名前を提供するようにサーバーを構成します。任意のドメインを選択します。私は「local.com」を選択しました (ただし、既存のドメイン名を選択した場合は、実際の「local.com」Web サイトにアクセスできないことに注意してください)。

次のような設定行を「mararc」に追加します。

csv2 = {}
csv2["local.com."] = "db.lan.txt"

ここで、local.com は選択したドメイン名、db.lan.txt は次に作成する 2 番目の構成ファイルの名前です (2 番目の構成ファイルに名前を付ける場合は変更してください)。

MaraDNSと同じディレクトリに「db.lan.txt」という名前の新しいファイルを作成します。

名前を解決する各コンピューターごとに、「db.lan.txt」に行を追加します。たとえば、1 台が「dev.local.com」、もう 1 台が「blog.local.com」の 2 台のコンピューターの場合は、次の行を追加します。

dev.%       192.168.1.4 ~
blog.%        192.168.1.6 ~

終わり!

2.2 再帰構成

他のすべてのドメインのデフォルトのネーム サーバーに問い合わせるように MaraDNS を設定し、他のすべてのドメイン名を正しい IP アドレスに解決できるようにします。

ISP の DNS サーバー アドレスを確認します。これらのアドレスは、ルーターのステータス ページに表示されるか、ネットワーク アダプターの詳細を確認することで確認できます。

次に、ISP の DNS サーバーを「mararc」のアップストリーム サーバーとして追加します。

upstream_servers = {}
upstream_servers["."] = "xxx.xxx.xxx.xxx, yyy.yyy.yyy.yyy"

ここで、xxx.xxx.xxx.xxx と yyy.yyy.yyy.yyy は ISP の DNS サーバーです。

終わり!

  1. MaraDNSを実行し、askmara.exeを使用してテストします。

「runmara.bat」をダブルクリックし、サーバーを実行したままにします。

コマンド プロンプトを開き、MaraDNS ディレクトリに移動して、次のコマンドを実行してみてください。

askmara.exe Agoogle.com.

そして

askmara.exe Ablog.local.com.

次のような返信が返ってくるはずです:

# Querying the server with the IP 127.0.0.1
# Question: Agoogle.com.
google.com. +300 a 74.125.67.100
google.com. +300 a 74.125.53.100
google.com. +300 a 74.125.45.100
# NS replies:
# AR replies:

そして:

# Querying the server with the IP 127.0.0.1
# Question: Ablog.local.com.
blog.local.com. +86400 a 192.168.1.6
# NS replies:
#local.com. +86400 ns synth-ip-7f000001.local.com.
# AR replies:
#synth-ip-7f000001.local.com. +86400 a 127.0.0.1

最初のクエリで問題が発生する場合は、再帰 DNS 設定が間違っています (ISP DNS サーバー アドレスは正しいですか?)。また、2 番目のクエリでエラーが発生する場合は、権限のある設定が間違っています。

  1. MaraDNS を変更して LAN からのクエリに応答する

MaraDNS ウィンドウをシャットダウンし、「mararc」の最初の 2 行を次のように変更します。

ipv4_bind_addresses = "192.168.1.2
recursive_acl = "192.168.1.0/24"

ここで、192.168.1.2 はサーバーが実行されるコンピューターの IP アドレスであり、recursive_acl の「192.168.1」の部分はネットワーク上のものと同じです (192.168.0.0/24 の場合もあります)。

MaraDNS を再度起動し、実行したままにします。

  1. 新しいDNSサーバーを配布するようにルーターを設定する

ルーターの Web インターフェイスを開き、DHCP サーバー設定を見つけます。DNS サーバーを設定するオプションがあるはずです。DNS サーバーを実行するコンピューターの IP アドレスを入力します。

各コンピューターで、ネットワークを切断します (たとえば、Windows ではネットワークを無効にしてから有効にするか、Linux では「ifconfig eth0 down」/「ifconfig eth0 up」を使用します)。

これで完了です。LAN コンピュータをドメイン名で参照できるようになります。

ソース

関連情報