2015-06-01 90 views
6

我有一台微型计算机,用于向用户显示登录Wi-Fi网络时的入口页面。MITM的圈养门户页面

问题是,由于某些原因,他们没有从手机/ PC那里得到通常的弹出窗口,因为当我对我的路由器做同样的工作时。

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

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

对当地阿帕奇

我有401(未授权)状态代码一个简单的index.php文件。


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

Tal。

+1

您需要通过DHCP/DNS将您的WiFi接入点连接到另一台计算机。设置它更像是一个服务器配置问题(与编程相比),并且在其他地方会更好。 –

+0

我正在做它编程这就是为什么问这里。我有一个python dns代理,它将所有请求都指向我的计算机的apache服务器,它显示热点登录页面,但是没有任何设备被触发。 (没有“你需要登录”的消息,即使dns代理完美工作)。 – Jentel

回答

0

解决方案:

可能性1:

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

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

可能性2:

不要忘了,有些设备有自己的DNS手动或使用特定的网络配置或具有观赏罕见的DNS服务器/请求,那么你一个具体的防火墙设置必须考虑到这一点,最好的解决方案是避免在网关ip上运行DNS服务器,这意味着您的DHCP服务器需要位于小型计算机上或使用小型计算机上的网关或使用可能性3 ..这意味着检查你正在使用的网关,我猜它是路由器网关。

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

可能性3:

如果你的路由器开源鸥开源敞篷可以使用DDWRTOpenWRT来管理您的热点也有大量的配置热点,在短短的点击和你可以将它们链接到您的微型计算机服务器,以获取用户数据库或dns或代理或dhcp或将请求重定向到您的微型计算机或其他任何设备。

可能性4:

看一看这个MITM Guide和检查,如果你失去了一些东西

注:

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

+0

我可以在stakoverflow之外与你联系吗?我有一个具体的问题,我不想在这里问。谢谢。 – Jentel

0

你的问题对我来说不是很清楚。

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

我会尝试从我认为你问的问题中回答它: 对于浏览器,可以使用DNS或ICMP将客户端重定向到Captive门户。 ICMP是第3层协议,某些平台(如Android)可能会自动触发用户的本地通知,如“您需要登录”。但DNS重定向不会触发此操作,它需要用户在连接到网络后与浏览器进行交互。他们会打开浏览器,尝试访问stack.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(); 
     } 
    } 
} 
+0

感谢您的回复,相信我完美地理解了这个话题。当从路由器(通过DNS触发的强制门户)执行此操作时,连接到热点时会自动将通知推送到设备。当使用MITM应用程序时,它不会。我正在用一台电脑做这件事,用以太网电缆连接到路由器。 – Jentel

+0

看到代码触发事件的位置会很有帮助。我会怀疑你的脚本或防火墙出现了问题。 – Cookster

+0

我检查了它,进入MITM,ping到所有的网站,所有的网站都返回例如192.168.2.100(这是我的本地apache)。进入浏览器我得到正确的结果(我的本地apache) - 但没有什么是触发“你需要登录才能连接到互联网” – Jentel