最近我在python中实现了一个小型的强制网络门户。我将用户从dns请求重定向到登录页面。一切正常,直到我意识到当dns服务器我手动将客户端系统更改为公共DNS时,它完全绕过了强制网络门户。我的问题是,即使更改了dns服务器,如何重定向用户,或者如何阻止所有未使用默认dns的传出DNS请求。
我正在考虑在端口53上侦听将使用twisted捕获所有请求。 这是我如何做的一个非常简单的例子:
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()
我做错了吗?
我还试图阻止主机上的防火墙提供远程端口53,提供互联网连接,但它也不起作用。
答案 0 :(得分:0)
如果用户通过更改DNS绕过您的强制网络门户,问题是他们可以在门户网站上路由DNS请求,因此 中无法做任何事情门户。您需要创建路由规则,将网络上的所有端口53流量重定向到DNS服务器,无论他们在何处尝试发送它。
坏消息是,你不能用Twisted做到这一点。您需要在路由器的操作系统中使用类似iptables的方式执行此操作。