Microsoft隧道网关参考

此参考中提供了Microsoft Tunnel Gateway 的信息,以支持在环境中安装和维护隧道安装。

用于Microsoft隧道网关的 mst-cli 命令行工具

Mst-cli 是用于 Microsoft Tunnel Gateway 的命令行工具。 此工具在隧道安装完成后在 Linux 服务器上可用,可在 /usr/sbin/mst-cli 中找到。 可以使用此工具完成的一些任务包括:

  • 获取有关隧道服务器的信息。
  • 设置或更新隧道服务器的配置。
  • 重启隧道服务器。
  • 卸载隧道服务器。

以下是该工具的常见命令行用法。

命令行接口

  • mst-cli –help - 用法: mst-cli [command]

    命令:

    • agent - 对代理组件进行操作。
    • server - 在服务器组件上操作。
    • uninstall - 卸载Microsoft隧道。
    • eula - 显示 EULA。
    • import_cert - 导入或更新 TLS 证书。
  • mst-cli agent –help - 用法: mst-cli 代理 [command]

    命令:

    • logs - (-h 显示代理日志以获取) 的详细信息。
    • status - 显示代理状态。
    • start - 启动代理服务。
    • stop - 停止代理服务。
    • restart - 重启代理服务。
  • mst-cli agent logs help - 用法: mst-cli 代理日志 [flags]

    标志:

    • -f, --follow - 遵循日志输出。 默认值为 false。
    • --since string - 显示自 TIMESTAMP 以来的日志。
    • --tail uint - 在日志末尾输出指定数量的 LINES。 默认为零 (0) ,这将打印所有行。
    • -t, --timestamps - 输出日志中的时间戳。
  • mst-cli agent status - 以下返回结果是你可能会看到的结果示例:

    • 状态:正在运行
    • 运行状况:正常
  • mst-cli agent start - 如果代理已停止,则启动代理。

  • mst-cli agent stop - 停止代理。 必须在停止后手动启动。

  • mst-cli agent restart - 重启代理。

  • mst-cli server --help - 用法: mst-cli 服务器 [command]

    命令:

    • logs - 显示服务器日志。 有关详细信息 ,请使用 -h
    • status - 显示服务器状态。
    • start - 启动服务器服务。
    • stop - 停止服务器服务。
    • restart - 重启服务器服务。
    • show - 显示各种服务器统计信息。有关详细信息 ,请使用 -h
  • mst-cli server logs –help - 用法: mst-cli 服务器日志 [flags]

    标志:

    • -f, --follow - 遵循日志输出。 默认值为 false。
    • --since string - 显示自 TIMESTAMP 以来的日志
    • --tail uint - 在日志末尾输出指定数量的 LINES。 默认为零 (0) ,这将打印所有行。
    • -t, --timestamps - 输出日志中的时间戳。
  • mst-cli server status - 以下返回结果是你可能会看到的结果示例:

    • 状态:正在运行
    • 运行状况:正常
  • mst-cli server start - 如果服务器已停止,则启动服务器。

  • mst-cli server stop - 停止服务器。 必须在停止后手动启动。

  • mst-cli server restart - 重启服务器。

  • mst-cli server show

    • show status - 打印服务器的状态和统计信息。
    • show users - 打印连接的用户。
    • show ip bans - 打印禁止的 IP 地址。
    • show ip ban points - 打印具有点的所有已知 IP 地址。
    • show iroutes - 打印服务器用户提供的路由。
    • show sessions all - 打印所有会话 ID。
    • show sessions valid - 打印重新连接会话的所有有效值。
    • show session [SID] - 打印有关指定会话的信息。
    • show user [NAME] - 打印有关指定用户的信息。
    • show id [ID] - 打印指定 ID 上的信息。
    • show events - 提供有关连接用户的信息。
    • show cookies all - 显示会话全部的别名。
    • show cookies valid - 显示有效会话的别名。

环境变量

以下是在 Linux 服务器上安装 Microsoft Tunnel 网关软件时可能需要配置的环境变量。 这些变量位于环境文件 /etc/mstunnel/env.sh

  • http_proxy=[address] - 代理服务器的 HTTP 地址。
  • https_proxy=[address] - 代理服务器的 HTTPs 地址。

数据路径

路径/文件 说明 权限
/.../mstunnel 所有配置的根目录。 所有者根,组 mstunnel
/.../mstunnel/admin-settings.json 包含服务器安装的设置。  Intune管理此文件,不应手动编辑该文件
/.../mstunnel/certs 存储 TLS 证书的目录。  所有者根,组 mstunnel
/.../mstunnel/private 存储Intune代理证书和 TLS 私钥的目录。  所有者根,组 mstunnel

在服务器安装期间添加文件

/etc/mstunnel

  • admin-settings.json

    • 包含来自 Intune 的序列化服务器配置
    • 在服务器注册后创建。
  • agent-info.json

    • 注册完成后创建。
    • AgentId、IntuneTenantId、AADTenantId 和代理证书 RenewalDate。
    • 在代理证书续订时更新。
  • private/agent.p12

    • 用于代理身份验证的 PFX 证书Intune。
    • 自动续订。
  • version-info.json

    • 包含各种组件的版本信息。
    • ConfigVersion、DockerVersion、AgentImageHash、AgentCreateDate、ServerImageHash、ServerCreateDate。
  • ocserv.conf

    • 服务器配置
  • Images_configured

用于创建容器的 Docker 映像

  • agentImageDigest
  • serverImageDigest

admin-settings.json示例

{
"PolicyName": "Auto Generated Policy for rh7vm",
   "DisplayName": "rh7vm Policy",
   "Description": "This policy was auto generated for rh7vm",  
   "Network": "169.100.0.0/16",
   "DNSServers": ["168.63.129.16"],
   "DefaultDomainSuffix": "nmqjwlanybmubp4imht0k2b4qd.xx.internal.cloudapp.net",
   "RoutesInclude": ["default"],
   "RoutesExclude": [],
   "ListenPort": 443
}
管理员设置 说明
PolicyName 设置策略的名称。 可以选择名称。
DisplayName 简短的显示名称。 可以选择名称。
说明 策略说明。 可以选择说明。
网络 用于分配客户端虚拟地址的网络和掩码。 除非发生冲突,否则不需要更改。 此设置最多支持 64,000 个客户端。
DNSServers 客户端应使用的 DNS 服务器列表。 这些服务器可以解析内部资源的地址。
DefaultDomainSuffix 客户端在尝试解析资源时追加到主机名的域后缀。
RoutesInclude 通过 VPN 路由的路由列表。 默认值为所有路由。
RoutesExclude 应绕过 VPN 的路由列表。
ListenPort VPN 服务器接收流量的端口。

Docker 命令

下面是 Docker 的常见命令,如果必须调查隧道服务器上的问题,可以使用这些命令。

注意

大多数 Linux 分发版都使用 Docker。 但是,Red Hat Enterprise Linux (RHEL) 8.4 不支持 Docker。 相反,这些分发使用 Podman。 有关支持的分发版以及每个分发版的 Docker 或 Podman 要求的详细信息,请参阅 Linxu 服务器

为 Docker 编写的引用和命令行可以通过将 docker 替换为 podman 来与 Podman一起使用

命令行接口:

  • docker ps –a – 查看所有容器。

    • mstunnel-server – 此容器运行 ocserv 服务器组件,并使用入站端口 443 (默认) 或自定义端口配置。
    • mstunnel-agent - 此容器运行 Intune 连接器并使用出站端口 443。
  • 重启 Docker

    • systemctl restart docker
  • 若要在容器中运行某些内容,请执行以下操作:

    • docker exec –it mstunnel-server bash
    • docker exec –it mstunnel-agent bash

Podman 命令

下面是 Podman 的命令,如果必须调查隧道服务器上的问题,可以使用这些命令。 有关可用于 Podman 的更多命令,请参阅 Docker 命令

  • sudo podman images - 列出所有正在运行的容器。
  • sudo podman stats - 显示容器 CPU 使用率、MEM 使用情况、网络和块 IO。
  • sudo podman port mstunnel-server - 列出从隧道服务器到本地 Linux 主机的端口映射。

Linux 命令

以下是可用于隧道服务器的常见 Linux 命令。

  • sudo su - 使你在框上生根。 在运行以下命令之前和运行 mstunnel-setup 之前,请使用此命令。

  • ls – 列出目录的内容。

  • ls – l – 列出目录的内容,包括时间戳。

  • cd – 更改为另一个目录。 例如, cd /etc/test/stuff 将你从 目录更改为 etc 子文件夹 > ,更改为 测试 子文件夹 > ,然后更改为 stuff 文件夹。

  • cp <source> <destination> - 用于将证书复制到正确的位置。

  • ln –s <source> <target> - 创建软链接。

  • curl <URL> – 检查对网站的访问。 例如:curl https://microsoft.com

  • ./<filename> - 运行脚本。

手动加载 ip_tables

使用以下命令检查 Linux 服务器内核中的ip_tables,并在必要时手动加载。 使用 sudo 上下文:

  • 验证服务器上 ip_tables 状态:lsmod |grep ip_tables

  • 创建一个配置文件,用于在服务器启动时将ip_tables加载到内核中: echo ip_tables > /etc/modules-load.d/mstunnel_iptables.conf

  • 将ip_tables立即加载到内核中: /sbin/modprobe ip_tables