这是我的高级目标:
我在一个小型设备上运行 Linux,充当无线客户端的 Wifi 热点。它还运行一个 Web 服务器(nginx)进行配置,我想将来自 Wifi 客户端的所有 html 请求重定向到该本地 Web 服务器,直到配置正确,一旦配置正确,它应该停止重定向并返回到仅路由交通。
我对 iptables、ip Route 等比较陌生,所以不确定我的方法是否正确:
ATM 我只是在“配置模式”下使用 iptables 将 http 流量重定向到本地网络服务器(并在回到正常模式时清除这些规则):
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.42.1
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 192.168.42.1
iptables -t nat -A PREROUTING -p tcp --dport 5000 -j DNAT --to-destination 192.168.42.1
(我需要端口 5000,因为我的配置软件为配置网页运行 websockets 服务器)
只要客户端可以解析 DNS 请求(或使用硬编码的 IP 地址),这种方法就可以正常工作。我的 dhcp 服务器将默认 8.8.8.8/8.8.4.4 设置为 wifi 客户端上的 DNS 服务器,但如果无法访问 8.8.8.8(设备配置不正确时可能会出现这种情况),客户端将不会访问我的配置 Web页面,因为 wifi 客户端无法首先解析 IP 地址。
所以我的想法是在我的设备上设置一个 DNS 服务器,在“正常模式”下仅转发 DNS 请求,但在“配置模式”下它会将所有请求解析到我的本地 Web 服务器 IP。
我的问题是:我将使用什么软件(dnsmasq?)以及如何设置它,以便我可以使其在仅转发 DNS 请求和解析请求到本地服务器之间切换(在运行时)?
或者方法是否错误,我应该使用某种代理或其他方式进行重定向?我发现 DNS 服务器临时解析对我的本地 IP 的请求的一个缺点是客户端可能会缓存结果,因此即使配置完成,它们仍然会访问我的本地 Web 服务器。