配置 Windows 登录前始终开启 VPN

Last published : Oct 14, 2026
本节详细说明了如何通过使用高级策略配置 Windows 登录前始终开启 VPN。

先决条件

  • NetScaler Gateway 和 VPN 插件必须是 13.0.41.20 或更高版本。
  • NetScaler Advanced Edition 及更高版本是此解决方案正常工作所必需的。
  • 您只能通过使用高级策略来配置此功能。
  • VPN 虚拟服务器必须已启动并正在运行。

主要配置步骤

Windows 登录前始终开启 VPN 配置涉及以下主要步骤:
  1. 设置机器级隧道
  2. 设置用户级隧道(可选)
  3. 启用用户身份验证
    1. 配置 VPN 虚拟服务器,安装 CA 证书,并将证书密钥绑定到虚拟服务器。
    2. 创建身份验证配置文件
    3. 创建身份验证虚拟服务器
    4. 创建身份验证策略
    5. 将策略绑定到身份验证配置文件

计算机级隧道

计算机级隧道使用设备证书作为身份建立到 NetScaler Gateway。设备证书必须安装在客户端计算机的计算机存储中。这仅适用于 Windows 登录前始终开启服务。
有关设备证书的更多详细信息,请参阅使用设备证书进行身份验证。
重要提示:
如果 NetScaler Gateway 设备上的 VPN 虚拟服务器配置在非标准端口(443 以外的端口)上,则计算机级隧道将无法按预期工作。

使用设备证书设置计算机级隧道

使用 GUI 进行基于设备证书的身份验证配置

  1. 在“配置”选项卡上,导航到“NetScaler Gateway > 虚拟服务器”。
  2. 在 NetScaler Gateway 虚拟服务器页面上,选择一个现有虚拟服务器,然后单击“编辑”。
  3. 在“证书”下,单击“CA 证书”。
  4. 在“CA 证书绑定”页面上,单击“选择 CA 证书”字段旁边的“添加”,更新所需信息,然后单击“安装”。
    安装 CA 证书
  5. 在“VPN 虚拟服务器”页面上,单击编辑图标。
  6. 在基本设置部分中,单击更多。
  7. 在设备证书的 CA 部分旁边单击添加,然后单击确定。
    添加设备证书的 CA
    注意: 不要选中启用设备证书复选框。
  8. 要将 CA 证书绑定到虚拟服务器,请在证书部分下单击CA 证书。在SSL 虚拟服务器 CA 证书绑定页面下单击添加绑定。
    注意:
    • 设备证书的主题公用名 (CN) 字段不能为空。如果设备尝试使用空的 CN 设备证书登录,则其 VPN 会话将以“anonymous”作为用户名创建。在 IIP 中,如果多个会话具有相同的用户名,则以前的会话将被断开连接。因此,当启用 IIP 时,您会注意到由于公用名为空而导致的功能影响。
    • 所有可能签署颁发给客户端的设备证书的 CA 证书(根证书和中间证书)都必须绑定在设备证书的 CA 部分以及步骤 4 和 5 中虚拟服务器的CA 证书绑定部分下。有关将 CA 证书与中间/从属证书链接的更多信息,请参阅安装、链接和更新证书。
    • 如果配置了多个设备证书,则会尝试使用有效期最长的证书进行 VPN 连接。如果此证书成功通过 EPA 扫描,则建立 VPN 连接。如果此证书在扫描过程中失败,则使用下一个证书。此过程将持续到所有证书都尝试完毕。
  9. 在CA 证书绑定页面上,选择证书。
  10. 单击绑定。
  11. 创建身份验证虚拟服务器。
    1. 在VPN 虚拟服务器页面上,导航到高级设置 > 身份验证配置文件,然后单击添加。
    2. 在创建身份验证配置文件页面上,为身份验证配置文件分配一个名称,然后单击创建。 创建身份验证配置文件
    3. 在身份验证虚拟服务器页面上,为身份验证虚拟服务器分配一个名称。将 IP 地址类型选择为不可寻址,然后单击确定。 选择不可寻址的 IP 类型
    注意:
    身份验证虚拟服务器始终处于 DOWN 状态。
  12. 创建身份验证策略。
    1. 在“Security > AAA-Application Traffic > Authentication Virtual Servers”页面的“Advanced Authentication Policies”部分中,选择身份验证策略,然后单击“Add Binding”。
    2. 在“Policy Binding”页面上,单击“Select Policy”字段旁边的“Add”。
    3. 在“创建身份验证策略”页面上;
      1. 为高级身份验证策略分配一个名称。
      2. 从“Action Type”列表中选择“EPA”。
      3. 单击“Action”旁边的“Add”。 选择 EPA 操作类型
    4. 在“创建身份验证 EPA 操作”页面上;
      1. 为 EPA 操作分配一个名称。
      2. 在“Expression”字段中输入 sys.client_expr("device-cert_0_0")。
      3. 单击“Create”。
        创建表达式
  13. 在“创建认证策略”页面上;
    1. 为身份验证策略分配一个名称。
    2. 在“表达式”字段中输入 is_aoservice。
    3. 单击“创建”。
      创建表达式2
  14. 在“策略绑定”页面上,在“优先级”中输入 100,然后单击“绑定”。

使用 CLI 进行基于设备证书的身份验证配置

  1. 在 VPN 虚拟服务器上安装 CA 证书。
    add ssl certkey ckp -cert t_CA.cer
  2. 将 CA 证书绑定到 VPN 虚拟服务器。
    bind ssl vserver <vServerName> -certkeyName <string> -ocspCheck ( Mandatory | Optional )
    示例
    bind ssl vserver TestClient -CertkeyName ag51.xm.nsi.test.com -CA -ocspCheck Mandatory
  3. 将服务器证书及其对应的私钥设置为 VPN 虚拟服务器。
    set vpn vserver <vServerName> -certkeyNames <string>
    示例
    set vpn vserver TestClient -certkeyNames ag51.xm.nsi.test.com
  4. 添加身份验证虚拟服务器。
    add authentication authnProfile <name>  {-authnVsName <string>}
    示例
    add authentication authnProfile always_on -authnVsName always_on_auth_server
  5. 创建身份验证 EPA 操作。
    add authentication epaAction <name> -csecexpr <expression>
    示例
    add authentication epaAction epa-act -csecexpr      `sys.client_expr("device-cert_0_0")`
  6. 创建身份验证策略
    add authentication Policy <name> -rule <expression> -action <string>
    示例:
    add authentication Policy always_on_epa_auth -rule is_aoservice -action epa_auth
重要提示:
  • 机器级隧道配置现已完成。要在 Windows 登录后设置用户级隧道,请参阅“用户级隧道”部分。
  • 在客户端计算机上,设备证书采用 .pfx 格式。.pfx 证书安装在 Windows 计算机上,因为 Windows 能够识别 .pfx 格式。此文件包含证书和密钥文件。此证书必须与绑定到虚拟服务器的域相同。可以使用客户端证书向导生成 .pfx 和服务器证书以及密钥。这些证书可与证书颁发机构一起使用,以生成带有服务器证书和域的相应 .pfx。.pfx 证书安装在计算机帐户的个人文件夹中。show aaa session 命令在 NetScaler 设备上显示设备隧道。

用户级隧道

使用 GUI 将机器级隧道替换为用户级隧道

注意: 表达式 is_aoservice.not 适用于 NetScaler Gateway 13.0.41.20 及更高版本。
  1. 配置用户身份验证策略。
    1. 导航到 NetScaler Gateway > 虚拟服务器,然后选择一个虚拟服务器。
    2. 在高级设置中,单击身份验证配置文件。
    3. 配置身份验证配置文件。
    4. 在 Configuration > Security > AAA-Application Traffic > Authentication Virtual Servers 页面上,选择身份验证策略。
    5. 在选择操作中,单击编辑绑定并将已绑定策略的转到表达式更改为 NEXT 而不是 END。
      绑定策略
      绑定策略(/en-us/netscaler-gateway/media/always-on-goto-next.png)
    6. 点击 绑定,然后在 身份验证策略 页面中,选择身份验证策略并点击 添加绑定。
      绑定策略2(/en-us/netscaler-gateway/media/alwayson-edit-binding.png)
    7. 在策略绑定页面上,点击 选择策略 旁边的 添加。
      在创建身份验证策略页面上;
      1. 输入要创建的“无身份验证”策略的名称。
      2. 选择操作类型为 No_AUTHN。
      3. 在 表达式 字段中输入 is_aoservice.not。
      4. 点击 创建。 No-auth-policy
  2. 在 选择操作 中,点击 编辑绑定。
    编辑绑定用户隧道(/en-us/netscaler-gateway/media/aoswup-7cc.png)
  3. 在策略绑定页面上,在 优先级 中输入 110。点击 选择下一个因素 旁边的 添加。
    1. 在身份验证策略标签页面上,为策略标签输入一个描述性名称,选择登录方案,然后点击 继续。
    2. 在 选择策略 中,点击 添加 并创建 LDAP 身份验证策略。
    3. 点击 创建,然后点击 绑定。
    4. 点击“完成”,然后点击“绑定”。
    在“身份验证策略”页面中,“下一个因素”列显示已配置的下一个因素策略。
    Alwayson-complete-configuration
  4. 您可以将 LDAP 策略配置为身份验证策略的下一个因素。
    1. 在“创建身份验证策略”页面上,输入 LDAP 策略的名称。
    2. 将“操作类型”选择为“LDAP”。
    3. 将“操作”输入为已配置的 LDAP 操作。
    注意:

使用 CLI 将计算机级隧道替换为用户级隧道

  1. 将策略绑定到身份验证虚拟服务器
    bind authentication vserver <name> -policy <name> -priority  <positive_integer> -gotoPriorityExpression <expression>
    示例
    bind authentication vserver alwayson-auth-vserver -policy alwayson-auth-pol -priority 100 -gotoPriorityExpression NEXT
  2. 添加一个身份验证策略,其操作为 NO_AUTH,表达式为 is_aoservice.not,,并将其绑定到该策略。
    add authentication Policy <name> -rule <expression> -action <string>

    bind authentication vserver <name> -policy <name> -priority <positive_integer> -gotoPriorityExpression <expression>
    示例
    add authentication Policy alwayson-usertunnel-pol -rule is_aoservice.not -action NO_AUTHN

    bind authentication vserver alwayson-auth-vserver -policy alwayson-usertunnel-pol -priority 110
  3. 添加下一个因子并将策略标签绑定到下一个因子。
    add authentication policylabel <labelName> -loginSchema <string>

    bind authentication  policylabel <string>  -policyName <string>  -priority <positive_integer> -gotoPriorityExpression <expression> -nextFactor <string>
    示例
    add authentication policylabel user-tunnel-auth-label -loginSchema singleauth_alwayson

    bind authentication policylabel user -policyName alwayson-usertunnel-pol -priority 100
  4. 配置 LDAP 策略并将其绑定到用户隧道策略标签。

    add authentication policy <name>  -rule <expression>  -action <string>

    bind authentication vserver <vserver_name> -policy <string>  -priorit < positive integer>  gotoPriorityExpression <string>
    示例
    add authentication Policy LDAP_new -rule true -action LDAP_new

    bind authentication policylabel user-tunnel-auth-label -policyName LDAP_new -priority 100 -gotoPriorityExpression NEXT

客户端配置

如果需要位置检测功能,AlwaysOn, locationDetection, and suffixList registries 是可选的。
要访问注册表项,请导航到以下路径:Computer>HKEY_LOCAL_MACHINE>SOFTWARE>Citrix®>Secure Access Client
注册表项 注册表类型 值和描述
AlwaysOnService REG_DWORD 1 => 建立机器级隧道,但不建立用户级隧道;2 => 建立机器级隧道和用户级隧道
AlwaysOnURL REG SZ 用户希望连接的 NetScaler Gateway 虚拟服务器的 URL。示例: https://xyz.companyDomain.com 重要提示: 只有一个 URL 负责机器级隧道和用户级隧道。AlwaysOnURL 注册表有助于服务和用户级组件协同工作,并根据设计连接单独的隧道,即机器级隧道和用户级隧道。
AlwaysOn REG_DWORD 1 => VPN 故障时允许网络访问;2 => VPN 故障时阻止网络访问
AlwaysOnAllowlist REG_SZ 在机器以严格模式运行时必须列入白名单的 IP 地址或 FQDN 的分号分隔列表。示例: 8.8.8.8;linkedin.com
UserCertCAList REG_SZ 根 CA 名称的逗号或分号分隔列表,即证书的颁发者名称。在 Always On 服务的上下文中,客户可以指定 CA 列表以从中选择客户端证书。示例:example.net;xyz.gov.in
locationDetection REG_DWORD 1 => 启用位置检测;0 => 禁用位置检测
suffixList REG SZ 分号分隔的域列表,负责在启用位置检测时,随时检查机器是否在内网中。示例: citrite.net,example.net
有关这些注册表项的更多信息,请参阅 Always On。
注意:
  • 配置 Always On 服务时,在客户端上,NetScaler Gateway 虚拟服务器或 NetScaler 上配置的 Always On 配置文件将被忽略。因此,在配置 Always On 服务时,请确保同时启用 locationDetection 和 AlwaysOn VPN 注册表。
  • ClientControl 注册表配置仅在 Always On 模式下受支持,而在 Always On 服务模式下不受支持。因此,当启用 Always On 服务模式时,不支持注销选项。