如何在 Linux / Ubuntu 18.04 上利用 Windows 10 连接共享访问受 ZScaler 保护的网站

如何在 Linux / Ubuntu 18.04 上利用 Windows 10 连接共享访问受 ZScaler 保护的网站

在没有专用 Ubuntu 客户端的情况下,如何使用 ZScaler 通过 Ubuntu 访问受保护的网站?

答案1

我的公司决定放弃 ZScaler 的 VPN,并且作为公司中唯一运行 Linux 的人,我被抛在后面,因为 ZScaler 没有本机 Linux 客户端。

首先我要说的是,这个解决方法非常有效迷宫般的并且同样地脆弱的。它需要两台完整的计算机,这使得它既昂贵又不可能在旅途中完成,因此这不是笔记本电脑和远程/旅行员工的解决方案。对于第二台电脑,我建议在 eBay 上挑选一台旧的二手电脑作为专用的 Windows 10 机器。否则,您几乎可以重新利用周围所有旧笔记本电脑。任何带有 WiFi 和以太网端口的设备都可以使用。

此外,我希望 ZScaler 的产品团队能够看到这种解决方法的脆弱性(实际上是一种黑客攻击),并受到启发,为我们这些顽固的 Linux 爱好者创建一个专用的 Linux 客户端,因为一旦我们切换到 macOS,就无法再回到 macOS。

以下是此解决方法所需的内容:

  • Windows 10 笔记本电脑完全更新为 WiFi以太网功能
  • 适用于 Windows 10 的 ZScaler 客户端
  • 用于连接 Linux 和 Windows 10 计算机的短以太网电缆
  • 用于将 Linux 机器连接到互联网的长以太网电缆
  • USB->以太网适配器,为您的 Linux 桌面提供第二个以太网连接

步骤 1:在 Windows 10 上连接到 ZScaler

安装适用于 Windows 10 的 ZScaler 客户端。使用您的凭据登录并验证您是否可以访问内部和/或 ZScaler 保护的网站以及外部网站和更广泛的 Internet。

连接并验证 ZScaler 在 Windows 10 上是否正常工作

步骤 2:验证 Windows 10 中的所有必要连接

为了使其正常工作,您的 Windows 10 计算机需要访问外部互联网(本例中为 WiFi)、ZScaler 适配器以及用于共享 ZScaler 的本地以太网连接。下图显示了这一切。

验证 Windows 10 连接

步骤 3:准备本地以太网连接

此解决方法的神奇之处在于通过以太网将 Windows 10 计算机直接连接到 Linux 计算机,并在两者之间创建专用网络。为此,您需要输入本地以太网连接适配器的属性并调整 IPV4 设置以设置静态 IP 地址(非常重要)和子网掩码。我分别选择了192.168.137.1255.255.255.0,效果很好。理论上,任何有效的内部 IP 地址和子网掩码组合都应该可以正常工作。

配置本地以太网连接

步骤 4:共享 ZScaler 连接

这是这个难题的关键部分之一。您的 Linux 计算机将通过 Windows 10 连接共享访问 ZScaler。连接后右键单击 ZScaler 连接并转到“属性”。

打开 ZScaler 属性

步骤 5:将您的 ZScaler 适配器共享到您的 Linux 计算机

为此,请确保您的两台计算机通过直接连接以太网到以太网。它应该是 Linux <- 以太网 -> Windows 10。然后,转到 ZScaler 适配器属性的共享选项卡,并将 ZScaler 适配器与将 Linux 计算机桥接到 Windows 10 计算机的以太网适配器共享。

将 ZScaler 共享到您的以太网适配器

步骤 6:验证 Linux 上的 ZScaler 访问权限

到目前为止,您的 Linux 计算机应该直接连接到您的 Windows 10 计算机,并且您应该能够在 Linux 计算机上解析您的内部网站,并且没有其他的。您应该无法访问互联网。如果这样做,请拔下为您提供互联网连接的适配器。这是一极其重要的一步。验证您只能访问内部 ZScaler 特定目标。如果您在执行此步骤时仍然遇到问题,请尝试重新启动所有内容并重新开始。另外,请仔细检查 Windows 10 计算机上的静态 IP 配置,因为这在重新启动之间不会持续存在。

验证 Linux 上的 ZScaler 连接

第 7 步:获取互联网访问权限

为了访问互联网,您现在需要使用 USB->以太网适配器并将其插入您的 Linux 机器。一旦您的第二个以太网连接解析并连接,您应该会看到诸如 Slack 自动登录之类的服务。

步骤 8:恢复对受 ZScaler 保护的网站的访问

由于插入新的互联网连接会更改 Linux 适配器级别的 DNS 和互联网设置配置,因此您需要通过 Linux 中的 IP 表恢复对受 ZScaler 保护的资产的访问。为此,您需要知道受保护资产的 IP 地址范围、Windows 10 计算机的静态 IP 以及 Linux 和 Windows 10 之间的内部专用连接的设备名称本身。对于我自己和我的公司,命令是:

  • sudo ip route add 100.64.0.0/10 via 192.168.137.1 dev eno1
  • sudo ip route add 172.16.0.0/12 via 192.168.137.1 dev eno1

其中eno1是直接将 Windows 10 连接到 Linux 的网络适配器的名称,192.168.137.1是您在 Windows 10 中配置的静态 IP 地址,100.64.0.0/10172.16.0.0/12ZScaler 受保护资产的 CIDR 范围。您可以通过在 Linux 计算机上使用来找到用于路由 ZScaler 流量的正确适配器的名称,ifconfig并将 替换为您的设备硬件名称eno1

第 9 步:启用对未来受 ZScaler 保护的网站的访问

现在,在插入互联网连接之前,您只能访问您已从 ZScaler 请求的网站。这是一个 DNS 问题。为了解决此问题,您需要将 Windows 10 计算机设置为默认 DNS 服务器,以便当您请求按名称访问内部网站时,internal.mycompany.com可以使用 ZScaler 解析这些主机名。解析主机名并且 IP 地址显示您之前通过 IPTables 配置的有效内部范围后,流量应路由到eno1或等效适配器,然后路由到 ZScaler 进行加载。完成后,您现在应该在 Linux 中看到两个有线连接。

双线连接设置

继续编辑“PCI 以太网连接”连接,因为这是我们通过 USB->以太网适配器获取互联网的连接。

现在,我们需要在 Linux <-> Windows 10 之间存在的专用网络上为 Windows 10 计算机选择的静态 IP 地址。这就是设置静态 IP 地址很重要的原因。我们想要将此 IP 地址硬编码为我们的 DNS 服务器。

更新您的 DNS 服务器

就是这样!这就是它的工作原理。由于配置网络适配器时的 DNS 条目,所有 DNS 请求都会发送到 ZScaler。返回公共 IP 后,您的常规 USB 以太网连接将成功解析它。当返回私有 IP 时,IPTables 将请求转发到您执行时指定的适配器sudo ip route add...。这允许 Windows 10 / ZScaler 计算机加载网站内容并通过 Windows 10 连接共享将其发送回给您。

这本质上是一个拆分连接,其中全部DNS 请求由 ZScaler 处理(因为它是唯一可以解析和加载内部主机名的请求),但公共内容通过 Linux USB 以太网适配器加载,私有内容通过以太网<->以太网共享连接加载到 Windows 10。

是什么打破了这个“解决方法”?

  • 重新启动 Windows 10 计算机
  • 停电。往上看。
  • Windows 10 端网络拓扑的变化导致新的网络/互联网连接
  • DHCP 租约时间/续订的变化

此解决方法的次优之处是什么?

  • 所有 DNS 请求都会通过 ZScaler 机器,因此您曾经超快的有线连接现在至少与 DNS 请求的 WiFi 一样慢。
  • 您永远无法再次关闭 W10 计算机,否则您必须每次都执行此操作,以使内部和外部主机的互联网再次正常工作。
  • 需要大量练习才能使此设置在日常工作中可靠地工作。我花了大约两个月的时间来掌握工作流程并在出现问题时快速解决问题。

最后我要说的是,这绝对是最后的手段,任何希望从 VPN 解决方案切换到 ZScaler 的公司都应该考虑缺乏专用 Linux 客户端,以及这可能会或可能不会影响他们的工程师获得服务的能力。完工。

答案2

非常好的解决方法,谢谢!

只是为了让您知道该解决方案也适用于 Windows VM(我正在使用 libvirt/kvmhttps://libvirt.org/drvqemu.html)。另外,我相信你别无选择,192.168.137.1/24是默认共享IP(至少在Windows 10上)。

将第二个虚拟网络适配器添加到您的 VM (不配置网关):

  • 网络地址转换
  • 192.168.137.1/24

然后在 Linux 主机上,添加本地 IP 别名以与虚拟机通信(将“virbr0”与您的虚拟 NIC 适配器适配,如果您使用的是 virtualbox 等其他虚拟化解决方案,则可能会有所不同):

sudo ip a add 192.168.137.2/24 dev virbr0

验证您是否能够从 Linux 主机 ping 192.168.137.1 上的 Windows 虚拟机(您可能必须在 Windows 10 防火墙上接受 ICMPhttps://www.howtogeek.com/howto/windows-vista/allow-pings-icmp-echo-r​​equest-through-your-windows-vista-firewall/

ping 192.168.137.1

最后,添加通过虚拟机到达远程公司网络的路由(适应您的需求):

sudo ip r add 100.64.0.0/24 via 192.168.137.1
sudo ip r add 100.64.1.0/24 via 192.168.137.1

如果您知道公司 DNS,您还可以配置本地解析器(例如未绑定)以将此 DNS 用于某些特定域或子域。

答案3

我在 Ubuntu 上使用 Zscaler 访问私人公司网站时也遇到了问题。幸运的是,我还有一台装有 Windows 10 的私人笔记本。所以我在这台私人 Windows 10 笔记本上安装了 Zscaler。然后我通过以太网将Win-10笔记本连接到互联网。之后我创建了一个移动热点。之后,我允许网络中的其他用户使用以太网连接,并且将家庭网络连接设置为移动热点连接。之后,我能够通过移动热点连接 Ubuntu,并且我可以访问私人公司网络站点。愿这对某人有帮助。

相关内容