我有一台 ubuntu 22.04 服务器,一份本地网络上用户的 IP 地址列表,我想将 http/https 流量从该列表重定向到本地信息 html 页面。类似于热点。我尝试过 apache2、squid、wpad (252 dhcp)、iptables,但都没有成功。https 不会重定向。
我该怎么做?
答案1
iptables 无法将 ip:443 重定向到另一个 ip:port(其中我已使用信息阻止页面发布了 apache2 虚拟主机)
您可以重定向 TCP/IP 流,但浏览器将显示安全警告,因为您无法提供有效的证书。
squid-cache 仅当 http 页面带有“错误页面”时才会在浏览器中显示信息(HTTPS 不显示自定义错误页面)(更多信息请查看此处)
正如您注意到的,浏览器不会显示 TLS 的错误页面;当收到除 200 代码以外的任何代码时,它们都会显示自己的错误消息。
几乎全部今天的流量是 TLS 加密的,您无法查看或修改它。也就是说:您不能声称自己是example.com
,也不能重定向example.com
到其他任何地方。
除非您完全控制客户端并可以安装新的根证书,否则您不能声称自己是example.com
。
PS:如果有某种方法可以阻止并显示允许 https 流量(tcp 443)进入此页面的阻止页面,我将非常感激提供带有具体示例的详细解释。
没有这种方法适用于现代浏览器,这不是错误;这是一个设计tls 的功能。它旨在阻止中间人攻击 - 这实际上是您尝试执行的操作。
所以,没有办法实现你想要实现的目标。如果有,那将是一个重大的安全问题。
答案2
您不能既阻止用户又向他们提供内容。
如果我想让人们知道他们已被屏蔽,我可能会在我的反向代理/负载均衡器中设置一个访问控制列表,并将被禁止 IP 地址的客户端引导到内部或内容传送网络托管的静态页面。