为 MATLAB 作业调度器配置 SOCKS5 代理
MATLAB® Parallel Server™ 支持使用 SOCKS5 代理,将 MATLAB 客户端与您的 MATLAB 作业调度器集群之间的所有 Parallel Computing Toolbox™ 流量进行转发。此功能可让您:
为您的集群提供单一访问点,从而减少对多个开放端口、复杂的防火墙或网络配置的需求。
简化集群虚拟网络外部客户端的连接,特别是在云或混合环境中。
对所有客户端连接进行集中式身份验证和加密。
MATLAB Parallel Server 中 SOCKS 代理服务器的概述
SOCKS5 代理服务器允许位于集群虚拟网络之外的 MATLAB 客户端通过单一端点连接到您的 MATLAB 作业调度器集群。
代理服务器:
接受来自 MATLAB 客户端的传入连接。
将流量转发至集群调度器和工作单元,具体视情况而定。
使用相互 TLS(mTLS) 通过经过认证的集群配置文件对 MATLAB 客户端进行身份验证。
对 MATLAB 客户端与代理之间的所有通信进行加密。
访问 parallelserverproxy 安装
要在集群的虚拟网络中启动一个 SOCKS5 代理服务器,您需要安装 parallelserverproxy。您可以在运行作业管理器的集群节点上,或在集群虚拟网络内的任何其他节点上安装并运行 parallelserverproxy 工具。
您还需要使用 mjssetup 工具来生成 mTLS 身份验证和加密的要求:共享密钥、签名证书和集群配置文件。
您可以按照这些 GitHub® 软件仓库中的说明,下载并安装 parallelserverproxy 和 mjssetup 工具:
parallelserverproxy- 为 MATLAB Parallel Server 部署 SOCKS5 代理mjssetup- MATLAB 作业调度器的设置工具
启动支持双向 TLS 身份验证和加密的 SOCKS5 代理服务器
请按照以下说明启动 SOCKS5 代理服务器,并为客户端创建一个经过认证的集群配置文件,以便其连接到该集群。
在默认设置下,parallelserverproxy 工具会启动一个采用 mTLS 身份验证和加密的 SOCKS5 代理服务器。要设置和使用代理服务器,您需要 SOCKS5 代理的已签名证书文件以及 MATLAB 客户端的集群配置文件。请根据您的集群配置,参考此表来决定从哪一步开始。
| 集群配置 | 解决方案 | 起始步骤 |
|---|---|---|
您的集群正在以安全级别 3 运行,或者要求加密通信( | 使用您现有的共享密钥来创建签名证书。 您可以在集群节点上的以下默认位置之一找到集群共享密钥:
| |
您的集群还有其他集群配置吗? | 创建一个新的共享密钥。 |
步骤 1:创建共享密钥
如果您的集群尚未拥有共享密钥,请从这里开始。
使用 mjssetup 工具创建一个共享密钥文件。指定 create-shared-secret 命令以及共享密钥文件的名称。
例如,创建一个名为 "secret.json" 的共享密钥文件。
mjssetup create-shared-secret -outfile "secret.json"步骤 2:启动 SOCKS5 代理服务器
启动 SOCKS5 代理服务器。
如果您已有现有的集群共享密钥,或者拥有步骤 1 中生成的共享密钥,请使用
mjssetup工具基于该共享密钥生成签名证书。请指定generate-certificate命令、共享密钥文件的路径以及证书的名称。例如,从共享密钥文件
"secret.json"生成一个名为"proxyCert"的签名证书。您的共享密钥文件可能没有扩展名。mjssetup generate-certificate -secretfile "path_to_shared_secret_file/secret.json" -outfile "proxyCert"使用默认设置启动一个 SOCKS5s 代理服务器。要使用 mTLS,必须使用
-certificate参量指定已签名证书文件的路径。例如,使用一个名为
"proxyCert.json"的已签名证书文件,启动一个 SOCKS5 代理服务器。生成的代理服务器会在运行该代理服务器的计算机上所有可用的网络接口上监听传入流量,并使用默认端口号 1080。代理服务器启动时,parallelserverproxy会显示该代理服务器的 URL 模板。parallelserverproxy -certificate "proxyCert.json"SOCKS5 proxy ready to accept connections at: socks5s://*:1080
使用 URL 模板,通过添加集群头节点和运行代理服务器的计算机的可解析主机名或 IP 地址,来创建用于客户端连接的代理服务器 URL。
例如,如果集群头节点的主机名为
clusterHostname,而代理服务器运行在主机名为proxyHostname的计算机上,则代理 URL 为:clusterHostname?proxy=socks5s://proxyHostname:1080
步骤 3:创建集群配置文件
任何希望连接到代理服务器的客户端,都必须拥有一个使用集群密钥文件签名的相应客户端证书文件,以便进行身份验证。您可以创建一个包含已签名的客户端证书文件和代理 URL 的受认证集群配置文件,以便客户端能够连接到该集群。
使用
mjssetup工具,根据步骤 2 中使用的集群共享密钥,为集群配置文件创建一个证书文件。请指定generate-certificate命令、共享密钥文件的路径以及证书的名称。例如,从共享密钥文件
"secret.json"生成一个名为"profileCert"的签名证书。您的共享密钥文件可能没有扩展名。mjssetup generate-certificate -secretfile "path_to_shared_secret_file/secret.json" -outfile "profileCert"使用
mjssetup工具创建经过认证的集群配置文件。指定create-profile命令,将集群作业管理器的名称作为集群名称,将代理 URL 作为集群主机名,并指定配置文件的证书文件路径。例如,为作业管理器名称为
"jobManagerMJS"的集群创建一个集群配置文件,使用代理服务器 URL"clusterHostname?proxy=socks5s://proxyHostname:1080"和证书文件"profileCert.json"。该命令创建一个扩展名为jobManagerMJS的集群配置文件.json。mjssetup create-profile -name jobManagerMJS -host clusterHostname?proxy=socks5s://proxyHostname:1080 -certificate profileCert.json
共享密钥、已签名的证书以及相关的经过认证的集群配置文件共同控制哪些用户可以连接到作业管理器。您必须安全地存储这些数据,并通过安全渠道向用户分发经过认证的集群配置文件。
您可以使用集群配置文件管理器将配置文件导入 MATLAB 客户端。有关详细信息,请参阅发现集群并使用集群配置文件 (Parallel Computing Toolbox)。
在不使用双向 TLS 的情况下测试 SOCKS5 代理服务器
请按照以下说明,在封闭网络中为 MATLAB 客户端和 MATLAB 作业调度器集群启动并测试 SOCKS5 代理服务器。
如果您拥有一个无需客户端验证的 MATLAB 作业调度器集群,可以通过启动一个禁用了 mTLS 的 SOCKS5 代理服务器来简化测试工作流。
注意
安全注意事项:禁用双向 TLS(mTLS) 将取消客户端身份验证,并且不会对客户端到代理的流量或公开的服务进行加密。请勿在生产环境或开放网络中使用此配置。仅可在封闭、隔离的环境中,与可信客户端进行临时测试时使用。
以禁用 mTLS 的方式启动 SOCKS5 代理服务器,并将所有其他值保留为默认值。要禁用 mTLS,请指定 disableMutualTLS 参量。
parallelserverproxy -disableMutualTLSWarning: Client verification disabled with -disableMutualTLS SOCKS5 proxy ready to accept connections at: socks5://*:1080
请使用显示的 URL 模板,通过添加集群头节点和运行代理服务器的计算机的可解析主机名或 IP 地址,来创建用于客户端连接的代理服务器 URL。
例如,如果集群头节点的主机名为 clusterHostname,而代理服务器运行在主机名为 proxyHostname 的计算机上,则代理 URL 为:
clusterHostname?proxy=socks5://proxyHostname:1080
使用 mjssetup 工具创建一个集群配置文件。指定 create-profile 命令,将集群作业管理器的名称作为集群名称,并将代理 URL 作为集群主机名。
例如,为作业管理器名称为 jobManagerMJS、代理服务器 URL 为 clusterHostname?proxy=socks5://proxyHostname:1080 的集群创建一个集群配置文件。create-profile 命令会创建一个扩展名为 .json 的集群配置文件 jobManagerMJS。
mjssetup create-profile -name jobManagerMJS -host clusterHostname?proxy=socks5://proxyHostname:1080