【发布时间】: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 一切都很简单