Linux 在登录到Wi-Fi热点的客户端上显示弹出窗口

Linux 在登录到Wi-Fi热点的客户端上显示弹出窗口,linux,networking,server,iptables,dnsmasq,Linux,Networking,Server,Iptables,Dnsmasq,我已经设置了一个树莓Pi作为Wi-Fi接入点。一切正常,包括捕获门户。每个客户端上的web浏览器都会重定向到登录页面,该页面功能正常。我希望修改iptables和/或dnsmasq的配置,以使客户端自动在捕获门户上打开web浏览器。星巴克、麦当劳等都能做到;我在想怎么做 ,和是如何实现它的部分解释,但我希望理解它-不仅仅是按照别人的指示-这样我就可以自己做。我想就这个主题写一篇HOWTO,部分原因是它还不存在(或者如果它存在,那么我就找不到它) 有像Wifidog和Coovachilli这样的第

我已经设置了一个树莓Pi作为Wi-Fi接入点。一切正常,包括捕获门户。每个客户端上的web浏览器都会重定向到登录页面,该页面功能正常。我希望修改iptables和/或dnsmasq的配置,以使客户端自动在捕获门户上打开web浏览器。星巴克、麦当劳等都能做到;我在想怎么做

,和是如何实现它的部分解释,但我希望理解它-不仅仅是按照别人的指示-这样我就可以自己做。我想就这个主题写一篇HOWTO,部分原因是它还不存在(或者如果它存在,那么我就找不到它)

有像Wifidog和Coovachilli这样的第三方应用程序,它们似乎可以完成这项工作,但我无法理解它们是如何做到的。我相信这可以通过修改dnsmasq和iptables的配置来实现,但这只是我所能做到的。它应该这样做:-

1) 调整数据包,使客户端的web浏览器意识到有一个捕获的门户;这将导致客户端的web浏览器打开一个窗口,并将其指向捕获门户

2) 处理捕获门户;允许登录;修改iptables的设置,方便登录;等等

3) 登录后透明重定向所有流量


第2项和第3项不是问题。我被第一项难住了。感谢所有建议,包括重定向到现有文档。谢谢。

我不知道WifiDog和CoovaChilli是怎么做的,但ChilliSpot(CoovaChilli最初的基础)做了如下工作:

  • 打开绑定到内部接口的原始套接字
  • 捕获绑定到该接口的所有流量
  • 如果已授权(如登录),则处理NAT并在退出时转发
  • 如果未经授权,阻止交通

    除非

  • 如果它未被授权HTTP,请使用一些自定义代码以
    301重定向来答复HTTP GET请求,以指向门户页面本身,然后允许登录

  • 这是它的一个非常简化的版本,但我希望大多数其他捕获门户将使用非常类似的方法(特别是
    301重定向
    )。找到答案的最佳方法是阅读大量代码:)


    祝你好运

    我也遇到了同样的问题。你能公布你的进展吗?您解决了什么问题?解决方案是让中间包停止尝试发现它是否位于捕获门户中,而只是转发数据。客户端(Mac、PC等)将尝试访问相关页面(apple.com/…或其他任何页面),并将被重定向到其他地方(例如,星巴克的登录页面)。这一切都是自动发生的。解决办法是停止干涉