具有MITM的强制门户页面

时间:2015-06-01 14:36:11

标签: android apache dns

我有一台微型计算机,用于在客户登录Wi-Fi网络时向客户显示门户页面。

问题在于,由于某些原因,他们没有通过手机/电脑获得通常的弹出窗口,就像我使用路由器时一样。

我正在通过将所有dns请求转移到本地网络(即10.0.0.2)来完成整个过程。

当访问浏览器时,他们会获得门户网站页面,但缺少行为。 (连接到Wi-Fi然后会出现一个自动弹出窗口,说明您需要登录网络)。

在本地apache上我有一个简单的index.php文件,状态代码为401(未经授权)。

微型计算机通过以太网端口连接到路由器,我完全控制了路由器,但我希望从微型计算机本身管理强制网络门户,这就是为什么我不使用基于路由器的俘虏门户网站。

塔尔。

2 个答案:

答案 0 :(得分:1)

我的问题不是很清楚。

您是在手机/电脑或应用程序上使用浏览器吗?你能提供预期行为的截图吗?

我会尝试从我的想法中回答这个问题: 对于浏览器,您可以使用DNS或ICMP将客户端重定向到强制门户。 ICMP是第3层协议,某些平台(如Android)可能会自动触发用户的本机通知,例如“嘿,您需要登录”。但DNS重定向不会触发此操作,它需要用户在连接到网络后与浏览器进行交互。他们将打开一个浏览器,尝试进入堆栈overflow.com并重定向到你的强制门户网站。

此外,对于Android上的应用程序,您必须检查URL连接。以下是AOSP的一个例子:

private static final String mWalledGardenUrl = "http://clients3.google.com/generate_204";
private static final int WALLED_GARDEN_SOCKET_TIMEOUT_MS = 10000;

private boolean isWalledGardenConnection() {
    HttpURLConnection urlConnection = null;
    try {
        URL url = new URL(mWalledGardenUrl); // "http://clients3.google.com/generate_204"
        urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setInstanceFollowRedirects(false);
        urlConnection.setConnectTimeout(WALLED_GARDEN_SOCKET_TIMEOUT_MS);
        urlConnection.setReadTimeout(WALLED_GARDEN_SOCKET_TIMEOUT_MS);
        urlConnection.setUseCaches(false);
        urlConnection.getInputStream();
        // We got a valid response, but not from the real google
        return urlConnection.getResponseCode() != 204;
    } catch (IOException e) {
        if (DBG) {
            log("Walled garden check - probably not a portal: exception "
                    + e);
        }
        return false;
    } finally {
        if (urlConnection != null) {
            urlConnection.disconnect();
        }
    }
}

答案 1 :(得分:0)

解决方案:

可能性1:

你需要在你的路由器上有一个非常具体的配置,因为他是你的微型计算机的中继,再加上因为我猜你的微型计算机是通过路由器上网的,你还需要考虑到这一点< / p>

  
      
  • 在路由器上禁用DNS服务
  •   
  • 将路由器上的DNS设置为10.0.0.2
  •   
  • 在路由器上禁用Internet连接或将其设置为10.0.0.2
  •   
  • 在您的微型计算机上手动设置所有真实服务器/网关,在这种情况下路由也非常重要。
  •   

可能性2:

不要忘记有些设备手动设置DNS或使用特定的网络配置,或者使用特定的防火墙来监视不常见的DNS服务器/请求,然后您必须考虑到这一点,最好的解决方案是避免运行网关ip上的DNS服务器意味着您的DHCP服务器需要在迷你计算机上或使用迷你计算机上的网关或使用可能性3 ...这意味着检查您正在使用的网关我猜它&# 39;是路由器网关。

此外,您可能在路由器作业和微电脑作业之间发生冲突,并且在某些情况下,客户端和微型计算机之间的通信会发生IP冲突,然后检查您的IP配置。

可能性3:

如果你的路由器是开源的,你可以使用DDWRTOpenWRT管理你的热点,只需点击几下就可以有很多可配置的热点,你可以将它们链接到您的微型计算机服务器用于用户数据库或dns或代理或dhcp或将请求重定向到您的微型计算机或其他任何。

可能性4:

看看这个MITM Guide并检查你是否遗漏了某些东西

注意:

如果我的回答没有帮助,请提供更多技术调试信息,因为除了我们不太了解的配置描述之外......我很乐意帮助:)...提供网络的完整配置,似乎是网络问题。