我正在建立一个本地调查系统。linux 笔记本电脑将运行limesurvey(在典型的 LAMP 堆栈上),并且可以通过分发给会议参与者的 5 台平板电脑访问。平板电脑没有问题,因为它们会预先配置加载调查。但是,我也想允许参会者通过他们的手机访问调查链接。我打算做的是:
笔记本电脑用作接入点。DNSMASQ 在加入 AP 后会提供 IP。我会给他们一个简单的本地地址(例如http://lime)来访问调查界面,这应该是可能的,因为 DNSMASQ 将充当他们的 DNS 服务器 - 所以它会知道如何解决石灰。
我想快速处理客户端错误 - 例如,他们在加入 AP 后意外输入了不同的地址(或者只是想上网,例如访问 google.com) - 我希望 DNSMASQ立即返回错误,最好重定向到自定义错误页面,为他们提供正确的链接。
编辑:我调查了这个;可能我将不得不制作一个强制门户类型的解决方案。我仍然想要显示启动页面的最简单方法 - 列出调查并将所有其他请求删除/重定向到启动页面。我不需要身份验证,因为不会通过此连接提供互联网;在这种情况下,身份验证只是额外的点击,但我希望人们可以轻松访问调查。
这可能吗?有没有更好的方法来执行这个计划?
当然!使用以下命令将所有名称解析重定向到一个地址:
这是
/etc/dnsmasq.conf
文件中所需的条目。我建议使用它,因为如果服务器因任何原因重新启动,它将强制执行此类配置。在命令行上,该选项被调用:
dnsmasq 手册的副本
address=
如下。-i vlan
但是,即使设置(预期使用的接口)和-a 10.6.66.1
(预期 dnsmasq 将侦听 DNS 解析的地址)似乎是合理的。不要那样做!。允许 dnsmasq 以通配符模式绑定到端口 53 上的任何和所有服务器地址。这样,对服务器的任何关于 DNS 解析的请求都将由 dnsmasq 响应。
使用端口 53(默认情况下外部客户端会期望):
关闭(并禁止)两者
avahi-dns
和systemd.resolved
确保没有其他程序/服务正在侦听端口 53 或 5353。
还设置此选项以强制
mylocaldomain
dnsmasq DNS 解析器以错误 (NXDOMAIN) 解析(无点)之类的名称,并且(某些)名称解析不会转发到任何其他服务器:确保
/etc/resolv.conf
未使用任何服务器设置:以上所有将配置 dnsmasq 的 DNS 端以将所有域解析为一个简单的地址。仍然可以通过将其包含在
/etc/hosts
文件中来添加任何其他名称来解析其他需要的地址,例如最后一个地址应该是调查的网络服务器的地址。
上面的初始地址 (10.0.0.101) 应该是错误页面,解释了如何访问调查页面。
但这还不是全部。您还需要配置 DHCP 服务器以提供带有 dnsmasq DNS 解析器地址的名称服务器选项(不使用选项编号 5,它已过时(并且应该已经过时了 20 多年)):
加上 dnsmasq 的 DHCP 部分所需的所有其他配置。
这将允许计算机(平板电脑或手机)通过定义的 DNS 服务器获取 DHCP 给定地址。所有符合协议的计算机都将遵循此类配置选项,并且无法解析任何其他地址。
但是,设备也有可能尝试直接访问 IP 号码(不请求 DNS 解析)。必须在为本地网络服务的路由器上使用 IPFilter 配置来避免这种情况。
来自
man dnsmasq
:另请阅读:
添加伪造的DNS条目
绑定配置以将所有查询仅解析到一个地址
首先,我将专注于与客户端正常工作的解决方案,将简单的名称 URL 编写为http://lime以使调试更容易。
由于您可能不需要提供 Internet 访问权限,因此您可能不需要完全实现强制门户,因为您最终将使用 dnsmasq 回答您给出的任何DNS 答案将指向您的页面。
因此,最简单的方法是在您的 Web 服务器中创建预期的虚拟主机,并使用默认侦听套接字 (*) 将任何请求重定向到该虚拟主机。
然而,这是一个很大的问题,Android 和 iOS 设备对于访问某些 URL 以认为它们是连接的有点固执。尽管如此,我会将这些 URL 放在您的网站上,然后就可以完成了。