【问题标题】:DNS requests over ICS (Internet Connection Sharing)ICS 上的 DNS 请求(Internet 连接共享)
【发布时间】:2015-07-02 11:09:53
【问题描述】:

最近我在 python 中实现了我的小型强制门户。我将用户从 dns 请求重定向到登录页面。一切正常,直到我意识到当我将客户端系统上的 dns 服务器手动更改为公共 dns 时,它完全绕过了强制门户。我的问题是,即使更改了 dns 服务器,如何重定向用户,或者如何阻止所有未使用默认 dns 的传出 dns 请求。

我在想在端口 53 上侦听会捕获所有使用扭曲的请求。 这是我如何做的一个非常简单的例子:

from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor`

class UDP(DatagramProtocol):
    def datagramReceived(self, datagram, addr):
        print datagram, addr

port = 53
max_byte = 512

reactor.listenUDP(port, UDP(), '', max_byte)
reactor.run()

我做错了吗?

我还尝试在提供 Internet 连接的主机上阻止来自防火墙的远程端口 53,但它也不起作用。

【问题讨论】:

  • DNS 是强制门户中的一个大问题。一般来说,即使用户没有登录,您也需要让它工作。例如,如果用户想要连接到stackoverflow.com,它必须在第一次尝试时获得正确的 IP 地址。如果他不这样做,浏览器将不会显示强制门户或稍后重定向到页面时遇到问题。工作 DNS 的这一要求允许多种技术突破强制门户。但是将它们全部列出以及如何抵消将远远超出 SO 的范围。
  • @Klaus 我已经处理了那部分并且工作正常。但我只是不知道如何处理windows中的dns。在 linux 中,使用 iproute table 一切都很简单

标签: python dns twisted


【解决方案1】:

如果用户通过更改 DNS 绕过您的强制门户,问题是他们可以在门户周围路由 DNS 请求,因此您无能为力门户网站。您需要创建路由规则,将您网络上的所有端口 53 流量重定向到您的 DNS 服务器,无论他们试图将其发送到哪里。

坏消息是,Twisted 无法做到这一点。您需要在路由器的操作系统中使用 iptables 之类的工具来执行此操作。

【讨论】:

  • 谢谢@Glyph,我也猜到了同样的事情。但是如何在 windows 中重现类似 iptable 的规则呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
相关资源
最近更新 更多