2

我想在 Ubuntu 机器上构建一个 Captive 门户和一个接入点,并将每个传入流量重定向到 localhost。我首先将每个端口上的所有传入 tcp 流量重定向到通过 Apache Web 服务器在本地提供的简单登录页面。然后我丢弃了所有转发的数据包。这一切都通过 iptables 实现,如下所示。

$IPTABLES -t nat -A PREROUTING -p tcp --dport 0:65535 -j DNAT --to-destination 192.168.6.1:80
$IPTABLES -t filter -A FORWARD -p tcp --dport 0:65535 -j DROP
$IPTABLES -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

当 iPhone 等客户端连接到接入点,打开 safari 浏览器并输入任何 URL 时,它会成功重定向到登录页面(但不是地址栏中的任何 google 搜索)

我感到震惊的地方是当它连接到我的接入点时,它会强制从 iOS 设备弹出一个自动浏览器。我知道它会尝试 ping apple.com 和其他一些人,例如www.apple.com/library/test/success.html连接成功响应,如果没有所需的响应,它会打开一个微型弹出式浏览器。但是我已经阻止了所有流量并重定向到登录页面(强制门户)。

我认为我出错的地方可能是我不应该阻止所有的 tcp 端口,只有 80 和 443 之类的端口,也许我应该阻止一些 UDP 流量。我的登录页面中是否还有一些我应该更改的内容。我在某处读到,iOS 仅在从重定向的 URL 获得 wispr XML 响应时才会弹出浏览器。

在这方面的任何帮助都是有益的。我保证一旦完成,我会写一篇详细的博客文章。

4

0 回答 0