如何利用 Windows 10 連接共享在 Linux / Ubuntu 18.04 上訪問受 ZScaler 保護的網站
在沒有專用 Ubuntu 客戶端的情況下,如何使用 ZScaler 通過 Ubuntu 訪問受保護的網站?
我的公司決定為 ZScaler 放棄我們的 VPN,作為我公司唯一執行 Linux 的人,我被拋在了後面,因為 ZScaler 沒有本機 Linux 客戶端。
首先讓我說這種解決方法非常複雜且同樣脆弱。它需要兩台完整的電腦,這使得它既昂貴又不可能在旅途中進行,因此這不是筆記型電腦和遠端/出差員工的解決方案。對於第二台電腦,我建議在 eBay 上購買一台舊電腦,用作專用的 Windows 10 電腦。否則,您幾乎可以重新利用任何舊筆記型電腦。任何帶有 WiFi 和乙太網埠的東西都可以使用。
此外,我希望 ZScaler 的產品團隊看到這種解決方法的脆弱性(真的是一個 hack),並受到啟發為我們這些死忠的 Linux 傢伙創建一個專用的 Linux 客戶端,這些人一旦切換就無法回到 macOS。
這是此解決方法所需的內容:
- Windows 10 筆記型電腦完全更新,具有 WiFi和乙太網功能
- 適用於 Windows 10 的 ZScaler 客戶端
- 用於連接 Linux 和 Windows 10 機器的短乙太網電纜
- 用於將 Linux 機器連接到 Internet 的長乙太網電纜
- 一個 USB-> 乙太網適配器,用於為您的 Linux 桌面提供第二個乙太網連接
第 1 步:在 Windows 10 上連接到 ZScaler
安裝適用於 Windows 10 的 ZScaler 客戶端。使用您的憑據登錄並驗證您可以訪問內部和/或 ZScaler 保護的網站以及外部網站和更廣泛的 Internet。
步驟 2:驗證 Windows 10 中的所有必要連接
為了使其正常工作,您的 Windows 10 電腦將需要訪問外部網際網路(本例中為 WiFi)、ZScaler 適配器和本地乙太網連接以共享 ZScaler。下圖顯示了所有這些。
第 3 步:準備本地乙太網連接
此解決方法的部分魔力在於通過乙太網將您的 Windows 10 機器直接連接到您的 Linux 機器,並在兩者之間創建一個專用網路。為此,您需要輸入本地乙太網連接適配器的屬性並調整 IPV4 設置以設置靜態 IP 地址(非常重要)和子網遮罩。我分別選擇了
192.168.137.1
和255.255.255.0
,效果很好。理論上,任何有效的內部 IP 地址和子網遮罩組合都應該可以正常工作。第 4 步:共享 ZScaler 連接
這是拼圖的關鍵部分之一。您的 Linux 機器將通過 Windows 10 連接共享訪問 ZScaler。連接後右鍵點擊 ZScaler 連接,然後轉到“屬性”。
第 5 步:將您的 ZScaler 適配器共享到您的 Linux 機器
為此,請確保您的兩台電腦通過乙太網直接連接到乙太網。它應該是 Linux <- 乙太網 -> Windows 10。然後,轉到 ZScaler 適配器屬性的共享選項卡,並與將 Linux 機器橋接到 Windows 10 機器的乙太網適配器共享 ZScaler 適配器。
第 6 步:驗證 Linux 上的 ZScaler 訪問權限
到目前為止,您的 Linux 電腦應該直接連接到您的 Windows 10 機器,並且您應該能夠在您的 Linux 機器上解析您的內部網站,而不是其他任何東西。您應該沒有網際網路訪問權限。如果這樣做,請拔下為您提供 Internet 連接的適配器。這是極其重要的一步。驗證您只能訪問內部 ZScaler 特定的目標。如果您在此步驟中仍然遇到問題,請嘗試重新啟動所有內容並重新開始。此外,請仔細檢查 Windows 10 機器上的靜態 IP 配置,因為這不會在重新啟動之間保持不變。
第 7 步:獲取網際網路訪問權限
為了獲得 Internet 訪問權限,您現在需要使用 USB-> 乙太網適配器並將其插入您的 Linux 機器。一旦您的第二個乙太網連接解析並連接,您應該會看到 Slack 自動登錄等服務。
第 8 步:恢復對受 ZScaler 保護的網站的訪問權限
因為插入新的 Internet 連接會在 Linux 適配器級別更改您的 DNS 和 Internet 設置配置,您需要通過 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/10
並且172.16.0.0/12
是受 ZScaler 保護的資產的 CIDR 範圍。您可以在 Linux 機器上找到用於路由 ZScaler 流量的正確適配器的名稱,ifconfig
並在您的設備硬體名稱中替換eno1
.第 9 步:啟用對未來受 ZScaler 保護的網站的訪問
現在,您只能在插入 Internet 連接之前訪問您已經從 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 請求都會發送到 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 客戶端,以及這可能會或可能不會影響他們的工程師獲得完成工作。