如何在Windows 7中创建wifi热点+重定向到本地网页?

如何在Windows 7中创建wifi热点+重定向到本地网页?

在深入探讨这个问题之前,先简单介绍一下背景信息:
我构建了一个小型实验,它与一台运行 Windows 7 的计算机协同工作。在这台计算机上,有一个小型网络服务器,它提供网页,不断更新来自实验的状态信息。现在,这个实验将在某些活动中展示(想象一下 MakerFaire,...),如果人们可以使用他们的智能手机(或笔记本电脑)直接显示这个网页,并且尽可能少地进行配置,我会很高兴。

基本上我想要实现的是:

  1. 创建 Wifi 接入点使用电脑内置的 wifi 适配器人们可以连接到哪些网站(开放或受密码保护)

  2. 拦截并重定向 DNS 和/或 HTTP 请求,以便在打开浏览器时显示实验网页(如强制门户)

到目前为止,我已经能够使用 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 服务器具有两组功能。它们可以充当“权威名称服务器”或“递归/缓存名称服务器”。

权威域名服务器指定域名的 IP 地址。递归域名服务器存储来自权威域名服务器的信息,并以递归方式传递查询。

我们将在 MaraDNS 中配置权威功能和递归功能。

2.1 权威配置

我们将配置服务器以提供 LAN 域名的权威名称。选择任何域名,我选择了“local.com”(但请注意,如果您选择现有域名,您将无法访问实际的“local.com”网站)。

向“mararc”添加配置行,如下所示:

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

其中 local.com 是您选择的域名,db.lan.txt 是我们接下来要创建的第二个配置文件的名称(如果要命名第二个配置文件,请更改它)。

在与 MaraDNS 相同的目录中创建一个名为“db.lan.txt”的新文件。

对于您要解析名称的每台计算机,在“db.lan.txt”中添加一行。例如,对于两台计算机,一台是“dev.local.com”,另一台是“blog.local.com”,添加以下几行:

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 服务器地址正确吗?);如果第二次查询出现错误,则说明您搞乱了权威设置。

  1. 更改 MaraDNS 以回复来自 LAN 的查询

关闭 MaraDNS 窗口,并将“mararc”的前两行更改为如下内容:

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 计算机。

来源

相关内容