redirectiptables

我已经使用Hostapd设置了个人热点。 但是这个热点没有连接到互联网,但我确实已经安装了Apache。 我想要实现的是将所有客户端(连接到我的热点)redirect到我的apache页面,当他们访问另一个网站。 所以基本上所有的stream量redirect到我的Apache页面。

我所尝试的是:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.150.1:80 

但是,这个iptable的客户端不会被redirect到我的Apache网页。 但是,当我打开互联网共享与热点,然后它的工作。 但我希望它能够工作,而不必共享一个互联网连接。

redirect规则对我来说看起来很好。 我认为,当你不允许无线访问你的互联网连接时,唯一的区别就是DNS突然开始工作。

我怀疑问题是,无法parsing主机名,您的无线用户:

  1. 在他们的浏览器中键入www.google.com
  2. 他们的机器上的parsing器在无法联系作为其DHCP租约的一部分接收的DNS服务器之后放弃,因为它(很可能)是NAT的外部,它不会将客户端的数据包转发给它。
  3. 如果他们没有发送HTTP请求的IP地址,他们将不会发出它
  4. 没有redirect发生,因为没有redirect。

这看起来像是在发生什么? 如果是这样,你可以用很多方法解决这个问题:

  1. 即使您不分享您的互联网连接,也只允许将客户的请求转发给您提供给他们的DNS。 没有其他的。 缺点是你打开你的决心被隧道IPstream量通过封装在DNS请求(例如使用碘 )被滥用,
  2. 将DNSparsing器移到NAT前面(可由用户直接访问)。 Byt,我的意思是分配一个IP地址,您的用户可以访问,而无需通过NAT。 不会带来太多的东西,你仍然会打开隧道问题的解决scheme。
  3. 设置一个伪造的parsing器,其地址将作为DHCP租约的一部分给出,并将其configuration为仅发布Web服务器的IP地址。 这是邪恶的,在做这件事之前你应该三思。 优点是你不需要iptables规则,你不需要将任何用户的数据包转发到Internet来完成这个工作。

让我知道这是否适合你。