我有一个 kindle paperwhite,它不支持在 WiFi 连接中添加代理服务器。我已经在我的 ubuntu 上通过 WiFi 创建了一个热点连接,并通过它连接了我的手机。我只有以太网连接来连接互联网。我必须在 Ubuntu 的“设置”中的“网络”选项卡下配置代理服务器。由于某种原因,当我从我的朋友连接到热点 SSID 时,我仍然需要在手机中添加代理服务器。我可以通过 WiFi 共享/路由互联网访问,以便像我的 kindle 这样的移动设备可以访问互联网,而无需处理代理服务器,只有我的电脑需要。
答案1
当您设置热点时,您的计算机将充当 NAT 路由器 - 它所做的就是重写数据包,使其看起来像是来自您的计算机,然后重写并转发响应。这通常只延伸到跟踪连接,除了一些可选的事情(例如 FTP),它不会对数据包内的数据执行任何操作,只对标头执行任何操作。这就是为什么如果您的电脑需要代理,那么其背后的设备也需要代理。
然而,你想做的事是有可能——但这并不容易。您需要设置一个透明代理(在您的计算机上运行),然后配置该代理以转发到实际代理。传统上,在 Linux 上,这是通过 Squid(以及 Google 来完成的)鱿鱼透明代理会找到一些指南)和 iptables TPROXY。
但有一个大问题:HTTPS 的透明代理并不容易。 Squid 可以做到这一点,但它需要能够为任意站点生成有效的证书。这意味着生成您自己的 CA,并将其安装在客户端上。我怀疑这在 Kindle 上很容易实现。当然,Kindle 想要访问的大多数(如果不是全部)亚马逊服务都是 HTTPS。
这样做时您将面临的下一个问题是 HTTP 私钥固定 (HPKP)。我不确定 Kindle Paperwhite 是否能做到这一点,但如果是的话,您将无法伪造亚马逊服务的证书。
理论上我认为应该可以使用 iptables TRPOXY 拦截 HTTPS 并通过上游代理发送它没有伪造证书,只要该代理允许 CONNECT。因为 CONNECT 只是为您建造一条隧道。但我找不到任何现有的软件可以做到这一点。
您是否考虑过建立通往不需要代理的网络的隧道?那会容易得多! (当然,假设您已获得网络所有者的许可)。
简而言之:你想做的事情应该是可能的,但看起来并不容易。我希望我已经提供了一些建议,以便您愿意花时间让它发挥作用。