Microsoft 隧道在 Intune 的前置條件

在安裝 Microsoft Tunnel VPN 閘道器 Microsoft Intune 之前,先檢視並設定前置條件。 前置條件包括使用運行容器以承載隧道伺服器軟體的 Linux 伺服器。 同時也要規劃網路、防火牆和代理伺服器,以支援 Microsoft 隧道的通訊。

從高層次來看,Microsoft 隧道要求:

  • Azure 訂用帳戶。

  • 一個 Microsoft Intune 方案 1 訂閱。

    注意事項

    此前置條件適用於 Microsoft Tunnel,不包含 Microsoft Tunnel for Mobile Application Management,後者為 Intune 附加元件,需訂閱 Microsoft Intune Plan 2

  • 要完成 Microsoft 隧道的設定,你用來在 Microsoft Intune 註冊隧道閘道器的帳號,以及你的Intune租戶必須被分配為Intune管理員的Microsoft Entra ID角色,並被分配Intune授權。

  • 一台執行容器的 Linux 伺服器。 伺服器可設置於本地或雲端,並支援以下容器類型之一:

    • Podman 為 Red Hat Enterprise Linux (RHEL) 。 請參閱 Linux 伺服器需求。
    • 所有其他 Linux 發行版都使用 Docker
  • 傳輸層安全 (TLS) 憑證,用於Linux伺服器保護裝置與隧道閘道伺服器的連線。

  • 是運行 Android 或 iOS/iPadOS 的裝置。

設定完前置條件後,我們建議您執行 準備工具 ,以驗證您的環境是否已妥善配置,確保安裝順利。

以下章節將說明 Microsoft 隧道的前置條件,並提供使用準備工具的指引。

注意事項

隧道與全球安全存取 (GSA) 不能在同一裝置上同時使用。

政府雲端支援

Microsoft Tunnel 支援以下主權雲端環境:

  • 美國政府社群雲 (GCC) High

Microsoft Tunnel 不支援由 21Vianet 運營的 Microsoft Azure。

欲了解更多資訊,請參閱 Microsoft Intune 以了解美國政府 GCC 服務說明

Linux 伺服器

建立一台基於 Linux 的虛擬機器或實體伺服器來安裝 Microsoft 隧道閘道器。

注意事項

僅支援下表列出的作業系統與容器版本。 未列出的版本不支援。 只有在測試與可支援性驗證後,才會將新版本加入此清單。 也要隨時更新作業系統的安全更新。

  • 支援的 Linux 發行版 - 下表說明隧道伺服器支援哪些 Linux 版本,以及它們所需的容器:

    發行版本 容器需求 考量
    紅帽 (RHEL) 8.9 Podman 4.4.1 支援將於2025年11月結束。 此版本的 RHEL 不會自動將 ip_tables 模組載入 Linux 核心。 使用此版本時,請在安裝 Tunnel 前手動 載入ip_tables

    Podman v3 及更早版本建立的容器 無法在 Podman v4.2 及以後版本使用。 如果要升級和更換容器,建議先建立新的容器,然後卸載再重新安裝 Microsoft Tunnel。
    紅帽 (RHEL) 8.10 Podman 4.9.4-rhel (default) 此版本的 RHEL 不會自動將 ip_tables 模組載入 Linux 核心。 使用此版本時,請在安裝 Tunnel 前手動 載入ip_tables

    Podman v3 及更早版本建立的容器 無法在 Podman v4.2 及以後版本使用。 如果要升級和更換容器,建議先建立新的容器,然後卸載再重新安裝 Microsoft Tunnel。
    紅帽 (RHEL) 9.3 Podman 4.6.1。 (預設) 支援將於2025年11月結束。 此版本的 RHEL 不會自動將 ip_tables 模組載入 Linux 核心。 使用此版本時,請在安裝 Tunnel 前手動 載入ip_tables

    Podman v3 及更早版本建立的容器 無法在 Podman v4.2 及以後版本使用。 如果要升級和更換容器,建議先建立新的容器,然後卸載再重新安裝 Microsoft Tunnel。
    紅帽 (RHEL) 9.4 Podman 4.9.4-rhel (default) 支援將於2025年11月結束。 此版本的 RHEL 不會自動將 ip_tables 模組載入 Linux 核心。 使用此版本時,請在安裝 Tunnel 前手動 載入ip_tables

    Podman v3 及更早版本建立的容器 無法在 Podman v4.2 及以後版本使用。 如果要升級和更換容器,建議先建立新的容器,然後卸載再重新安裝 Microsoft Tunnel。
    紅帽 (RHEL) 9.5 Podman 5.2.2 (預設) 此版本的 RHEL 不會自動將 ip_tables 模組載入 Linux 核心。 使用此版本時,請在安裝 Tunnel 前手動 載入ip_tables

    Podman v3 及更早版本建立的容器 無法在 Podman v4.2 及以後版本使用。 如果要升級和更換容器,建議先建立新的容器,然後卸載再重新安裝 Microsoft Tunnel。
    紅帽 (RHEL) 9.6 Podman 5.4.0 (預設) 此版本的 RHEL 不會自動將 ip_tables 模組載入 Linux 核心。 使用此版本時,請在安裝 Tunnel 前手動 載入ip_tables

    Podman v3 及更早版本建立的容器 無法在 Podman v4.2 及以後版本使用。 如果要升級和更換容器,建議先建立新的容器,然後卸載再重新安裝 Microsoft Tunnel。
    紅帽 (RHEL) 10.0 Podman 5.4.0 (預設) 此版本的 RHEL 不會自動將 ip_tables 模組載入 Linux 核心。 使用此版本時,請在安裝 Tunnel 前手動 載入ip_tables

    Podman v3 及更早版本建立的容器 無法在 Podman v4.2 及以後版本使用。 如果要升級和更換容器,建議先建立新的容器,然後卸載再重新安裝 Microsoft Tunnel。
    Ubuntu 22.04 Docker CE
    Ubuntu 24.04 Docker CE

    重要事項

    2023 年 4 月,Ubuntu 將停止對 Ubuntu 18.04 的支援。 隨著 Ubuntu 支援結束,Intune 也將停止支援 Ubuntu 18.04 與 Microsoft Tunnel 的使用。 如需詳細資訊,請參閱 https://wiki.ubuntu.com/Releases

  • Linux伺服器規模:請依照以下指引達成預期用途:

    # 裝置 # 中央處理器 記憶體 GB # 伺服器 # 地點 磁碟空間 GB
    1,000 4 4 1 1 30
    2,000 4 4 1 1 30
    5,000 8 8 2 1 30
    10,000 8 8 3 1 30
    20,000 8 8 4 1 30
    40,000 8 8 8 1 30

    支撐是線性成長的。 雖然每個 Microsoft 隧道最多支援 64,000 個同時連線,但單一裝置可開啟多個連線。

  • CPU:64 位元 AMD/Intel 處理器。

  • 安裝 Docker CE 或 Podman:根據你用於隧道伺服器的 Linux 版本,請在伺服器上安裝以下其中之一:

    • Docker 版本為 19.03 CE 或更新版本。
    • Podman 版本為 3.0 或 4.0,視 RHEL 版本而定。

    Microsoft Tunnel 需要在 Linux 伺服器上使用 Docker 或 Podman 來支援容器。 容器提供一致的執行環境、健康監控與主動修復,以及乾淨的升級體驗。

    關於安裝與設定 Docker 或 Podman 的相關資訊,請參見:

    • 在 CentOS 或 Red Hat Enterprise Linux 7 上安裝 Docker Engine

      注意事項

      前一個連結會引導你到CentOS的下載與安裝說明。 用同樣的指示來做 RHEL 7.4。 RHEL 7.4 預設安裝的版本太舊,無法支援 Microsoft Tunnel Gateway。

    • 在 Ubuntu 上安裝 Docker Engine

    • 在 Red Hat Enterprise Linux 8.4 及更新版本安裝 Podman (往下滑到 RHEL8)

      這些 RHEL 版本不支援 Docker。 這些版本使用 Podman,而 podman 是稱為「container-tools」模組的一部分。 在此語境中,模組是一組代表元件的 RPM 套件,通常會一起安裝。 典型的模組包含包含應用程式的套件、包含特定應用程式相依函式庫的套件、包含應用程式文件的套件,以及帶有輔助工具的套件。 欲了解更多資訊,請參閱 Red Hat 文件中的 模組介紹

      注意事項

      無根 Podman:Microsoft Tunnel 支援使用無根 Podman 容器。

      使用 rootless Podman 需要 額外的前提 條件,且在啟動 Tunnel 安裝腳本時需使用修改過的命令列。 關於額外前置條件及安裝命令列的資訊,請參閱「配置 Microsoft 隧道 for Intune」文章中的「使用 rootless Podman 容器」。

  • TLS) 憑證 (傳輸層安全性:Linux伺服器需要受信任的 TLS 憑證來保護裝置與隧道閘道伺服器之間的連線。 在安裝隧道閘道器時,你會將 TLS 憑證和完整的受信任憑證鏈加入伺服器。

    • 你用來保護隧道閘道端點的 TLS 憑證的 SAN 代 (名 SAN) ,必須與隧道閘道伺服器的 IP 位址或 FQDN 相符。

    • 對於 iOS 裝置,公開的 TLS 憑證必須由根憑證卡(Root CA)核發,且最長有效期限為 398 天。 由使用者新增或管理員新增的根憑證憑證所發出的憑證,最長有效期限可達兩年 (730天) 。 欲了解更多關於這些 TLS 證書要求的資訊,請參閱 《關於 support.apple.com 可信憑證即將推出的限制 》。

    • 對於 Android 裝置,我們建議由根憑證卡(Root CA)發出的公開 TLS 憑證,最長有效期限為 398 天。

    • 萬用牌支援有限。 例如, *.contoso.com 支援,但 cont*.com 不支援。

    • 在安裝隧道閘道伺服器時,您必須將整個受信任憑證鏈複製到您的 Linux 伺服器。 安裝腳本會提供你複製憑證檔案的位置,並提示你複製。

    • 如果你使用的 TLS 憑證不是公開信任的,你必須將整個信任鏈推送到使用 Intune 受信任憑證設定檔的裝置。

    • TLS 證書可為 PEM 格式或 pfx 格式。

    • 為支援 TLS 憑證撤銷 健康檢查,請確保線上憑證狀態協定 (OCSP) 或憑證撤銷清單 (TLS 憑證定義的 CRL) 位址可從伺服器存取。

    • 將隧道用戶端的憑證設定為 2048 位元或更大的金鑰。 我們建議較大的金鑰,以協助部署持續支援未來及各種 SSL/TLS 函式庫解決方案不斷演變的 SSL/TLS 需求。

      提示

      定期檢視您所選 SSL/TLS 函式庫的需求,確保您的基礎設施與憑證持續支援並符合該函式庫的最新變更,並在必要時重新發行隧道用戶端憑證,以保持解決方案不斷演變的需求。

  • TLS 版本:預設情況下,Microsoft Tunnel 用戶端與伺服器之間的連線使用 TLS 1.3。 當 TLS 1.3 不可用時,連線可以退回使用 TLS 1.2。

預設橋接網路

Podman 和 Docker 容器都使用橋接網路來透過 Linux 主機轉發流量。 當容器橋接網路與企業網路衝突時,隧道閘道器無法成功將流量導向該企業網路。

預設的橋接網路包括:

  • Docker: 172.17.0.0/16
  • Podman: 10.88.0.0/16

為了避免衝突,你可以重新配置 Podman 和 Docker 使用你指定的橋接網路。

重要事項

必須先安裝隧道閘道伺服器,才能更改橋接網路設定。

更改 Docker 使用的預設橋接網路

Docker 使用 /etc/docker/daemon.json 這個檔案來設定新的預設橋接 IP 位址。 在檔案中,橋接 IP 位址必須以 CIDR (無類別域間路由) 表示法指定,這是一種簡潔的方式來表示 IP 位址及其相關的子網遮罩和路由前綴。

重要事項

以下步驟中使用的 IP 位址就是一個範例。 確保你使用的 IP 位址不會與你的企業網路衝突。

  1. 請使用以下指令停止 MS 隧道閘道容器: sudo mst-cli server stop ; sudo mst-cli agent stop

  2. 接著,執行以下指令移除現有的 Docker 橋接裝置: sudo ip link del docker0

  3. 如果你的伺服器上有 /etc/docker/daemon.json 檔案,可以用像 vinano 這類檔案編輯器來修改。 請以 root 或 sudo 權限執行檔案編輯器:

    • 當「 bip: 」條目帶有 IP 位址時,透過 CIDR 表示新增 IP 位址來修改該條目。
    • 當「 bip」 項目不存在時,你必須同時加上 「bip」: 值和新的 IP 位址,並以 CIDR 表示法。

    以下範例展示了一個更新為「bip」daemon.json 檔案結構:即使用修改後的 IP 位址「192.168.128.1/24」。

    daemon.json範例:

    {
    "bip": "192.168.128.1/24"
    }
    
  4. 如果 /etc/docker/daemon.json 檔案在你的伺服器上沒有,請執行類似以下範例的指令來建立檔案並定義你想使用的橋接 IP。

    範例:sudo echo '{ "bip":"192.168.128.1/24" }' > /etc/docker/daemon.json

  5. 請使用以下指令啟動 MS 隧道閘道容器: sudo mst-cli agent start ; sudo mst-cli server start

更多資訊請參閱 Docker 文件中的 「使用橋接網路 」。

更改 Podman 使用的預設橋接網路

Podman 使用 /etc/cni/net.d 檔案為 87-podman-bridge.conflist 來設定新的預設橋接 IP 位址。

  1. 請使用以下指令停止 MS 隧道閘道容器: sudo mst-cli server stop ; sudo mst-cli agent stop

  2. 接著,執行以下指令移除現有的 Podman 橋接裝置: sudo ip link del cni-podman0

  3. 利用根權限和像 vinano 這類檔案編輯器,將 /etc/cni/net.d 修改為 87-podman-bridge.conflist ,更新 「subnet:」「gateway:」 的預設值,方法是將 Podman 預設值替換成你想要的子網和閘道位址。 子 位址必須以 CIDR 表示法指定。

    Podman 預設值如下:

    • 子網:10.88.0.0/16
    • 閘道:10.88.0.1
  4. 請使用以下指令重新啟動 MS Tunnel Gateway 容器: sudo mst-cli agent start ; sudo mst-cli server start

更多資訊請參閱 Red Hat 文件中的 「使用 Podman 配置容器網路 」。

Linux 系統稽核

Linux 系統稽核能協助識別承載 Microsoft 隧道的 Linux 伺服器上的安全相關資訊或安全違規行為。 建議對 Microsoft 隧道進行 Linux 系統稽核,但並非必須。 要使用系統稽核,Linux 伺服器必須將被稽核的套件安裝於 /etc/audit/auditd.conf

每次執行 MST 準備工具時,工具可能會顯示警示,表示缺 失審核 。 為了啟用對隧道專屬目錄的稽核,務必在執行 mstunnel-setup 前安裝稽核套件。

如何實作稽核的細節取決於你使用的 Linux 平台:

  • Red Hat:Red 的版本預設安裝了 Enterprise Linux 7 及以後的審核套件。 不過,如果套件尚未安裝,你可以在 Linux 伺服器上使用以下命令列安裝:sudo dnf install audit audispd-plugins

    通常, 審核後 的套件可從每個 REHL 版本的預設儲存庫取得。

    欲了解更多關於在 RHEL 上使用系統稽核的資訊,請參閱 Red Hat 部落格的「使用 auditd 配置 Linux 系統稽核」。

  • Ubuntu:要在 Ubuntu 使用系統稽核,必須手動安裝 審核套件 。 要做到這一點,請在 Linux 伺服器上使用以下命令列:sudo apt install auditd audispd-plugins

    通常, 審核後 的套件可從每個 Ubuntu 版本的預設儲存庫取得。

    欲了解更多關於在 Ubuntu 上使用系統稽核的資訊,請參閱 《如何在 Ubuntu 上設定與安裝 Auditd》,該文章最初於 kubefront.com 年發表於 dev.to 網站。

網路

  • 啟用 IPv4 封包轉發:每台承載隧道伺服器軟體的 Linux 伺服器都必須啟用 IPv4 的 IP 轉發功能。 要檢查 IP 轉發狀態,可以在伺服器上執行以下其中一個通用指令,作為 rootsudo。 兩個指令都回傳 0 表示停用1 表示啟用

    • sysctl net.ipv4.ip_forward
    • cat /proc/sys/net/ipv4/ip_forward

    如果未啟用,你可以暫時啟用 IP 轉發,方法是在伺服器上以 rootsudo 身份執行以下通用指令之一。 這些指令可以改變 IP 轉發設定,直到伺服器重新啟動。 重啟後,伺服器會將 IP 轉發行為回復到先前狀態。 對這兩個指令,請使用值 1啟用 轉發。 值為 0 則會停用轉發。 以下指令範例使用值 1啟用 轉發:

    • sysctl -w net.ipv4.ip_forward=1
    • echo 1 > /proc/sys/net/ipv4/ip_forward

    要讓 IP 轉發成為永久性,請在每個 Linux 伺服器上編輯 /etc/sysctl.conf 檔案,並將首位標籤 (#) 從 #net.ipv4.ip_forward=1 移除,以啟用封包轉發。 編輯後,條目應該會顯示如下:

    # Uncomment the next line to enable packet forwarding for IPv4
    net.ipv4.ip_forward=1
    

    要讓此變更生效,您必須重新啟動伺服器或執行 sysctl -p

    如果 sysctl.conf 檔案中沒有預期的條目,請參考你所使用發行版的文件,了解如何啟用 IP 轉發。 通常你可以編輯 sysctl.conf ,在檔案末尾加上缺少的那行,永久啟用 IP 轉發。

  • 每台伺服器配置多個網卡 (可選) :我們建議每台Linux伺服器使用兩個網路介面控制器 () 網卡以提升效能,但使用兩個為可選。

    • NIC 1 - 這張網卡負責處理你受管理裝置的流量,應該在公共網路上,且有公共 IP 位址。  這個 IP 位址就是你在 站點設定中設定的位址。 此位址可代表單一伺服器或負載平衡器。

    • NIC 2 - 這張網卡負責處理你本地資源的流量,應該在你的私有內部網路上,且不會分段網路。

  • 確保雲端 Linux 虛擬機能存取您的本地網路:如果您將 Linux 作為雲端虛擬機運行,請確保伺服器能存取您的本地網路。 例如,對於 Azure 中的虛擬機,你可以使用 Azure ExpressRoute 或類似工具來提供存取權限。 當你在本地虛擬機中運行伺服器時,Azure ExpressRoute 並非必需。

  • 負載平衡器 (可選) :如果您選擇新增負載平衡器,請參閱廠商文件以了解設定細節。 請考慮 Intune 和 Microsoft 隧道特有的網路流量和防火牆埠口。

    隧道伺服器會以靜態頁面回應 GET 請求。 負載平衡器會用這個回應作為探測器,用來檢查隧道伺服器的存續狀態。 回覆內容靜態,且不含敏感資訊。

  • 每應用程式 VPN 與頂層網域支援 - Microsoft Tunnel 不支援本地頂層網域的內部應用 VPN 使用。

防火牆

預設情況下,Microsoft 隧道與伺服器使用以下埠口:

入港港口

  • TCP 443 – 由 Microsoft 隧道要求。
  • UDP 443 – Microsoft 隧道必備。
  • TCP 22 – 選用。 用於 SSH/SCP 傳輸至 Linux 伺服器。

出港港口

  • TCP 443 – 存取 Intune 服務所需。 Docker 或 Podman 必須用來拉映像檔。

在建立隧道伺服器設定時,你可以指定與預設 443 不同的埠。 如果你指定不同的埠,請設定防火牆來支援你的設定。

更多要求

若要存取安全令牌服務及 Azure 日誌儲存,請提供以下 FQDN 的存取權限:

  • 安全令牌服務: *.sts.windows.net
  • Azure storage for tunnel logs:*.blob.core.windows.net
  • 其他儲存端點網址: *.blob.storage.azure.net
  • Microsoft Intune:*.manage.microsoft.com
  • Microsoft 認證: login.microsoftonline.com
  • Microsoft Graph: graph.microsoft.com
  • 設定防火牆規則以支援 MAR) 用戶端防火牆規則設定中Microsoft 成品登錄 (詳細說明的配置。
  • 診斷終點: powerlift-frontdesk.acompli.net

Proxy

你可以用代理伺服器搭配 Microsoft Tunnel。

注意事項

確保你的 Android LOB 應用程式支援直接代理或代理自動設定 (PAC) ,無論是 MDM 還是 MAM。

注意事項

已知問題:嘗試使用個人或企業帳號登入 Edge 的使用者,在設定代理自動設定 (PAC) 時可能會遇到問題。 在此情況下,登入程序可能失敗,導致使用者無法存取內部資源。

解決方法:為了解決這個問題,Microsoft Tunnel 提供了分割隧道作為選項。 分割隧道允許使用者只包含需要代理的路由,並排除登入伺服器與認證路徑,避免透過隧道路由。 此變通方法確保登入過程不受 PAC 設定影響,允許使用者存取內部資源並瀏覽網際網路。

直接代理也是一個選項,不用分割隧道,就能用企業帳號登入 Edge 工作。 這涉及將 Microsoft Tunnel 設定為直接代理而非 PAC URL。

若 Edge 不需要使用者登入,則支援 PAC 進行一般瀏覽及存取內部資源。

以下考量可協助你配置 Linux 伺服器及環境,確保成功:

為 Docker 設定一個外發代理

  • 如果你使用內部代理,可能需要透過環境變數設定 Linux 主機使用代理伺服器。 要使用變數,請在 Linux 伺服器編輯 /etc/environment 檔案,並新增以下行,將每行的位址替換為你的代理 IP 位址:port

    http_proxy=address
    https_proxy=address

  • 不支援認證代理伺服器。

  • 代理伺服器無法執行破壞與檢查,因為 Linux 伺服器在連接 Intune 時使用 TLS 互認證。

  • 設定 Docker 讓它使用代理來拉取映像檔。 為此,請在 Linux 伺服器上編輯 /etc/systemd/system/docker.service.d/http-proxy.conf 檔案,並新增以下行數:

    [Service]
    Environment="HTTP_PROXY=http://your.proxy:8080/"
    Environment="HTTPS_PROXY=https://your.proxy:8080/"
    Environment="NO_PROXY=127.0.0.1,localhost"
    

    注意事項

    Microsoft Tunnel 不支援 Microsoft Entra 應用程式代理或類似的代理解決方案。

為 Podman 設定一個外撥代理

以下細節可以幫助你在使用 Podman 時設定內部代理:

  • 不支援認證代理伺服器。

  • 代理伺服器無法執行破壞與檢查,因為 Linux 伺服器在連接 Intune 時使用 TLS 互認證。

  • Podman 讀取儲存在 /etc/profile.d/http_proxy.sh 中的 HTTP 代理資訊。如果你的伺服器上沒有這個檔案,就建立它。 編輯 http_proxy.sh 補充以下兩行。 以下行中, 10.10.1:3128 是一個範例 address:port entry。 當你加入這些線時,請將 10.10.10.1:3128 替換成你的代理 IP 位址:port

    export HTTP_PROXY=http://10.10.10.1:3128
    export HTTPS_PROXY=http://10.10.10.1:3128

    如果你能使用 Red Hat Customer Portal,可以查看與此解決方案相關的知識庫文章。 請參閱 Set Up Setup HTTP Proxy variables for Podman - Red Hat Customer Portal

  • 當你在安裝 Tunnel Gateway 前,透過執行 mstunnel-setup,先加上這兩行 Microsoft 到 http_proxy.sh ,腳本會自動在 /etc/mstunnel/env.sh 中配置 Tunnel Gateway 代理的環境變數。

    在 Microsoft 隧道閘道器設定完成後,要設定代理,請執行以下操作:

    1. 修改或建立檔案 /etc/profile.d/http_proxy.sh ,並加上前一項目符號中的兩行。

    2. 編輯 /etc/mstunnel/env.sh ,並在檔案末尾加上以下兩行。 如前幾行,將範例 address:port10.10.10.1:3128 替換成你的代理 IP 位址:port

      HTTP_PROXY=http://10.10.10.1:3128
      HTTPS_PROXY=http://10.10.10.1:3128

    3. 重啟隧道閘道伺服器:執行 mst-cli server restart

    請注意,RHEL 使用 SELinux。 因為代理伺服器如果無法在 SELinux 埠口執行,可能需要額外設定 http_port_t 所以可以檢查 SELinux 管理埠口的使用 HTTP 版本。 要查看配置,請執行以下指令: sudo semanage port -l | grep "http_port_t"

    端口檢查指令結果範例。 在這個例子中,代理使用了 3128,且未被列出:

    顯示埠口檢查結果的截圖。

    • 如果你的代理伺服器在 SELinux 的某個埠口上執行, http_port_t,那你就可以繼續隧道閘道器的安裝流程。

    • 如果你的代理檔無法像前面例子那樣在 SELinux 埠 http_port_t 執行,你必須額外設定。

      如果你的代理埠沒有被列在http_port_t,請檢查該代理埠是否被其他服務使用。 先用 semanage 指令檢查代理使用的埠口,必要時再更改。 要檢查代理伺服器使用的埠,請執行: sudo semanage port -l | grep "your proxy port"

      檢查可能使用該埠的服務結果範例:

      顯示服務檢查結果的截圖。

      • 在這個例子中,我們預期 (3128) 埠口是由 squid 使用,而 squid 恰巧是 OSS 代理服務。 Squid proxy SELinux 政策是許多常見發行版的一部分。 由於 squid 在範例埠) 使用 3128 埠 (,我們必須修改 http_port_t 埠,並新增 3128 埠,才能透過 SELinux 允許作為 Tunnel 代理。 要修改埠的使用方式,請執行以下指令: sudo semanage port -m -t http_port_t -p tcp "your proxy port"

        修改埠口的指令範例:

        截圖顯示埠修改指令的範例。

        執行變更埠的指令後,執行以下指令檢查該埠是否被其他服務使用: sudo semanage port -l | grep "your proxy port"

        修改埠後檢查埠口指令的範例:

        修改後檢查埠口的截圖。

        在此範例中,埠 3128 現在同時關聯 http_port-tsquid_port_t。 這樣的結果是意料之中的。 如果執行 sudo semanage port -l | grep “your_proxy_port” 指令時,你的代理埠沒有被列出,那就再次執行修改埠的指令,但 semanage 指令中的 -m-asudo semanage port -a -t http_port_t -p tcp "your proxy port"

設定 Podman 使用代理伺服器下載映像更新

你可以設定 Podman 使用代理伺服器下載 (拉取更新) Podman 的映像檔。 此配置對未來升級非常重要。 因為必須在安裝隧道閘道器後設定,我們在此提及,但在《配置 Microsoft 隧道》文章中新增了設定 Podman 使用代理檔下載映像更新的設定指引,作為安裝隧道閘道器伺服器後完成的任務。

平台

裝置必須註冊至 Intune 才能支援 Microsoft Tunnel。 僅支援以下裝置平台:

  • iOS/iPadOS

  • Android 企業版:

    • 完全管理
    • Corporate-Owned 工作概況
    • Personally-Owned 工作簡介

    注意事項

    Android 企業專用 裝置不被 Microsoft Tunnel 支援。

    重要事項

    Microsoft Tunnel 對 Android 10 的支援於 2026 年 3 月 31 日結束。 運行 Android 10 的裝置必須升級至 Android 11 或更新版本,才能繼續使用 Microsoft Tunnel。

所有平台都支援以下功能:

  • Microsoft Entra 透過使用者名稱和密碼驗證隧道。
  • Active Directory 同盟服務 (AD FS) 透過使用者名稱和密碼驗證隧道。
  • 按應用程式支援。
  • 透過隧道應用程式手動進行全裝置隧道,使用者啟動 VPN 並選擇 連接
  • 分割隧道。 不過在 iOS 上,當你的 VPN 設定檔使用 每個應用程式的 VPN 時,分割隧道規則會被忽略。

代理伺服器的支援僅限以下平台:

  • Android 11 及以後版本
  • iOS/iPadOS

權限

要管理 Microsoft 隧道,使用者必須擁有包含在 Intune 中 Microsoft 隧道閘道權限群組中的權限。 預設情況下,Intune 管理員和 Microsoft Entra 管理員擁有這些權限。 你也可以把它們加入你為 Intune 租戶建立的自訂角色中。

在設定角色時,在 權限 頁面展開 Microsoft Tunnel Gateway ,然後選擇你想授予的權限。

Microsoft Intune 管理中心隧道閘道權限的截圖。

Microsoft 隧道閘道權限群組授予以下權限:

  • 建立 - 配置 Microsoft 隧道閘道 器伺服器站點。 伺服器設定包括 IP 位址範圍、DNS 伺服器、埠口及分割隧道規則。 站點是多台支援 Microsoft 隧道的伺服器邏輯群組。

  • 更新 (修改) - 更新Microsoft隧道閘道器伺服器的配置與站點。 伺服器設定包括 IP 位址範圍、DNS 伺服器、埠口及分割隧道規則。 站點是多台支援 Microsoft 隧道的伺服器邏輯群組。

  • 刪除 - 刪除 Microsoft 隧道閘道器伺服器的設定與站點。 伺服器設定包括 IP 位址範圍、DNS 伺服器、埠口及分割隧道規則。 站點是多台支援 Microsoft 隧道的伺服器邏輯群組。

  • 閱讀 - 查看 Microsoft 隧道閘道器伺服器配置與站點。 伺服器設定包括 IP 位址範圍、DNS 伺服器、埠口及分割隧道規則。 站點是多台支援 Microsoft 隧道的伺服器邏輯群組。

執行準備工具

在開始伺服器安裝前,我們建議您先下載並執行最新版本的 MST 準備 工具。 這個工具是一個在你的 Linux 伺服器上執行的腳本,執行以下動作:

  • 驗證你用來安裝 Microsoft Tunnel 的 Microsoft Entra 帳號是否具備完成註冊所需的角色。

  • 確認你的網路設定允許 Microsoft Tunnel 存取所需的 Microsoft 端點。

  • 檢查Linux伺服器上是否有ip_tables模組。 此檢查於 2022 年 2 月 11 日加入腳本,當時支援 RHEL 8.5。 RHEL 8.5 後期預設不會載入 ip_tables 模組。 如果Linux伺服器安裝後還沒見到,你必須手動載入ip_tables模組

重要事項

準備工具不會驗證入站埠口,這是常見的錯誤配置。 準備工具執行後,檢視 防火牆的前置條件 ,並手動驗證防火牆是否通過了入站流量。

MST 準備工具依賴命令列 JSON 處理器 jq。 在執行準備工具之前,請確認 jq 已安裝。 關於如何取得和安裝 jq,請參閱你所使用的 Linux 版本文件。

使用準備工具:

  1. 可透過以下方法之一取得最新版本的準備工具:

    • 可直接使用網頁瀏覽器下載此工具。 前往 https://aka.ms/microsofttunnelready 下載一個名為 mst-readiness 的檔案。

    • 登入 Microsoft Intune 管理>中心租戶管理>Microsoft 隧道閘道,選擇伺服器標籤,選擇建立以開啟建立伺服器窗格,然後選擇下載準備工具

    • 用 Linux 指令直接取得準備工具。 例如,你可以用 wgetcurl 來開啟連結 https://aka.ms/microsofttunnelready

      例如,要使用 wget 並記錄下載時的 mst 準備狀態 ,執行 wget --output-document=mst-readiness https://aka.ms/microsofttunnelready

    這個腳本可以從你計劃安裝的伺服器所在網路上的任何 Linux 伺服器執行,讓網路管理員能獨立使用腳本排除網路問題。

  2. 要驗證你的網路和 Linux 設定,請執行以下指令。 這些指令會設定腳本的執行權限,驗證隧道是否能連接到正確的端點,然後檢查隧道是否使用了各種工具:

    • sudo ./mst-readiness

    • sudo ./mst-readiness network - 此指令執行以下操作,並回報成功或錯誤:

      • 嘗試連接隧道將使用的每個 Microsoft 端點。
      • 檢查防火牆中所需的埠是否已開啟。
    • sudo ./mst-readiness utils - 此指令用以驗證 Tunnel 使用的工具如 Docker 或 Podman 及 ip_tables 是否可用。

  3. 為了驗證你將用來安裝 Microsoft Tunnel 的帳號是否具備完成註冊所需的角色與權限,請用以下指令列執行腳本: ./mst-readiness account

    腳本會提示你使用另一台帶有網頁瀏覽器的機器,並用來驗證 Microsoft Entra ID 和 Intune。 工具會回報成功或錯誤。

欲了解更多關於此工具的資訊,請參閱 Microsoft 隧道參考文章中的 mst-cli 參考文 獻。

手動安裝 auditd 以進行 Linux 系統稽核

準備工具會檢查是否有被審核的 Linux 系統稽核套件。 由於 審核 是可選且非必需,當未偵測到此套件時,準備腳本會回傳警告。

Auditd 預設由 RHEL 7 及更新版本安裝,但 Ubuntu 發行版可能不會預設安裝。 不在時,你可以手動安裝到 Linux 伺服器上。

關於如何在安裝 Tunnel server 前手動安裝此系統,請參閱本文前方的 Linux 系統稽核

若要在安裝 Microsoft Tunnel 後安裝審核,請參閱配置 Micrfosoft 隧道中的「安裝 Linux 系統審核後安裝隧道伺服器」。

手動載入ip_tables

雖然大多數Linux發行版會自動載入ip_tables模組,但有些發行版可能不會。 例如,RHEL 8.5 預設不會載入 ip_tables。

要檢查是否有此模組,請在 Linux 伺服器上執行最新版本的 mst-readiness 工具。 ip_tables檢查於2022年2月11日加入準備工具腳本。

如果模組不存在,工具會在ip_tables模組檢查時停止。 在這種情況下,你可以執行以下指令手動載入模組。

手動載入ip_tables模組

在 sudo 的情境下,請在你的 Linux 伺服器上執行以下指令:

  1. 驗證伺服器上是否有ip_tables: lsmod |grep ip_tables

  2. 如果沒有ip_tables,請執行以下操作,立即將模組載入核心,無需重啟: /sbin/modprobe ip_tables

  3. 重新執行驗證以確認資料表已載入: lsmod |grep ip_tables

重要事項

在更新隧道伺服器時,手動載入的ip_tables模組可能無法持續存在。 這可能需要你在更新完成後重新載入模組。 伺服器更新完成後,請檢查伺服器是否有ip_tables模組。

如果資料表不存在,就用前面的步驟重新載入模組,然後在模組載入後再多一步重新啟動伺服器。

設定 Linux 在開機時載入 ip_tables

在 sudo 的情境下,請在你的 Linux 伺服器上執行以下指令,建立一個設定檔,在開機時將ip_tables載入核心:echo ip_tables > /etc/modules-load.d/mstunnel_iptables.conf

手動裝載 tun 模組

Microsoft Tunnel 需要 tun 模組,但部分 Linux 發行版預設不會載入 tun 模組。

要驗證 tun 模組在伺服器上的存在,請執行: lsmod |grep tun

  1. 如果 tun 不存在,請執行以下操作,立即將模組載入核心,無需重啟: /sbin/modprobe tun

  2. 重新執行驗證以確認 tun 模組已載入: lsmod |grep tun

重要事項

在更新隧道伺服器時,手動載入 的 tun 模組可能無法持續存在。 這可能需要你在更新完成後重新載入模組。 伺服器更新完成後,檢查伺服器是否有 tun 模組。

若不存在,則依照前述步驟重新載入模組,並在模組載入後再多一步重新啟動伺服器。

設定 Linux 在開機時載入

在 sudo 的情境下,請在你的 Linux 伺服器上執行以下指令,建立一個設定檔,在開機時將 tun 載入核心:echo tun > /etc/modules-load.d/mstunnel_tun.conf

後續步驟

設定 Microsoft Tunnel