![将未注册的用户重定向到本地计算机上的站点](https://linux22.com/image/1330953/%E5%B0%86%E6%9C%AA%E6%B3%A8%E5%86%8C%E7%9A%84%E7%94%A8%E6%88%B7%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E6%9C%AC%E5%9C%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8A%E7%9A%84%E7%AB%99%E7%82%B9.png)
- 我有一台服务器 192.168.0.3 (服务器)。运行 Ubuntu Server + DHCP 服务器 + Apache;
- 路由器 192.168.0.1 (ROUTER)(我无法访问它);
- 我在服务器上有一个 Web 应用程序,用于通过为网络注册用户(在 DHCP 服务器中)来注册用户;
- 用户在子网192.168.0.0/16内;
我可以配置 DHCP 服务器,让未注册的机器将我的服务器作为默认网关。
那么我该如何重定向所有来自未注册机器的 http 请求到我的本地网络应用程序192.168.0.3 ?
答案1
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A PREROUTING -p tcp -dport 80 -j DNAT –to-destination 1.2.3.4:80 iptables -t nat -A POSTROUTING -j MASQUERADE
答案2
您必须设置一个特殊的 DNS 服务器,该服务器使用您服务器的 IP 来响应所有 DNS 查询,并设置 Apache 的虚拟服务器来接受任何主机的请求(即 *:80 + *:443)。
诀窍在于,登录后,DNS 服务器必须开始提供正确的 DNS 结果,而不是虚假的结果。您不能简单地再次更改 DHCP 中的设置,因为默认租约时间会太长,并且/或者用户必须断开连接才能获取新设置。
许多Wi-Fi登录系统都采用这种架构,因此您也许能够找到一个开源解决方案。
答案3
我找到了另一种方法。
- 将未注册的机器 SERVER 作为默认网关。
- 重定向端口 80到网络服务器使用iptables
但我不知道具体该怎么做:)