远程访问

把这台工作站的仪表画面开放给网络上的其他设备,愿意的话再走 HTTPS,谁可以使用它们,以及每一次改动要付的那次重启。

以 Markdown 查看

远程访问是设置页面上常规分组的最后一行。关着的时候,工作站的 Web 宿主只在本地回环地址上答复它自己那台机器,桌面窗口本身就是这样把界面画出来的,网络上没有任何东西在监听。打开之后,工作站的每一个网络地址也都被绑上,同一局域网上的平板电脑或者另一台 PC 就能在浏览器里打开同一个界面。这个页面需要更改设置权限,而这里的三项设置会重启那台正在绘制你眼前这块屏幕的 Web 服务器,所以每一项都先问一句。

三项设置

字段 它是什么 取值 / 默认 效果
在其他设备上打开仪表画面 “默认关闭。打开它,就可以从同一网络上的平板电脑或另一台 PC 打开本工作站的仪表画面。” 开或关。默认关闭。 开:Web 宿主在本地回环地址之外,把工作站的每一个局域网地址也绑上,应用添加一条名叫“Ganter Lab Dashboard”的 Windows 防火墙规则(端口上的入站 TCP,专用和域配置文件,只限本地子网),并装上一份放行名单,拒绝私有地址段以外的任何来源。关:只绑本地回环,规则被删除。
通过 HTTPS 提供服务(自签名证书) 只在上面那个开关打开时画出来。用工作站给自己做的一份证书加密局域网上的流量。 开或关。默认关闭。 开:局域网地址提供 HTTPS;本地回环地址仍然是普通 HTTP,所以桌面窗口从不受影响。每台设备第一次都会要求你接受本工作站的证书。
端口 “本工作站监听的网络端口。更改它会重启 Web 服务器:此画面会自行重新加载,而在别处打开的仪表画面必须用新地址重新打开。” 1 到 65535。默认 18760。 本地回环和局域网共用的那个端口。这个字段在你离开它或者按下回车时提交,从不逐键提交;不是端口的文字、超出范围的数字,或者本来就在用的那个端口,都会不声不响地退回到正在生效的值。

开关打开着的时候,卡片先说明谁可以连上来(见下),然后显示三样东西之一。

  • 在另一台设备上打开:一个二维码和要输入的地址,http://<address>:<port>/(或者 https://),其中的地址是宿主启动时绑上的第一个局域网地址。在同一网络的浏览器里扫码或者输入它。
  • “本工作站还没有接入网络。把它接入厂区网络,才能得到一个可以分享的地址。”:开关是开着的,但宿主启动时工作站没有局域网地址,所以只绑了本地回环,也没有创建防火墙规则。这项设置保持打开,出现地址时宿主会重新绑定。
  • 远程访问不可用,一条警示提示条:请求了 HTTPS,而证书没能加载也没能创建。提示条带着原因:“远程访问没有启动,因为它的 HTTPS 证书没能加载也没能创建。本地回环访问仍然可用;请查看事件,然后改动远程访问设置以重试。”工作站绝不会自己退回到普通 HTTP,宿主启动时那条“远程仪表画面不可用”的通知说的也是同一件事。

应用一次改动:那次重启

拨动任何一个开关,或者提交一个新端口,都会打开要重启 Web 服务器吗?这个窗口。它那一段说明代价,末尾是“此画面就是由那个服务器绘制的,因此它会停顿几秒钟,然后自行恢复。”:

  • 打开开关:“在其他设备上打开仪表画面会重启 Web 服务器。”;
  • 关掉开关:“关闭在其他设备上打开仪表画面会重启 Web 服务器,通过网络读取本工作站的设备也将无法再连上它。”;
  • 打开 HTTPS:“改用 HTTPS 提供服务会重启 Web 服务器,而且每台设备第一次都会要求你接受本工作站自己的证书。”;关掉 HTTPS:“重新改用普通 HTTP 提供服务会重启 Web 服务器。”;
  • 换一个端口:“把本工作站移到端口 N 会重启 Web 服务器。”

取消把开关和端口字段放回工作站实际在听的那一套。应用并重新加载保存设置;应用随后删掉旧的防火墙规则、停下宿主、用新选项启动它,再把规则重新建起来。这期间,一张标题为正在重启 Web 服务器的罩子盖在应用上面:桌面窗口上写“工作站一恢复响应,画面就会自行回来。”,浏览器里写“新地址一响应,画面就会自行回来。”,两边都写“采集、记录和 OPC UA 服务器全程继续运行。”浏览器每半秒探一次新地址,最多探三十秒,一有响应就过去;超时还没有响应,罩子就让开,由那块寻常的重连画面接手,上面有重试和重新加载。桌面窗口把它自己那个视图重新指过去。提出改动的那一位就是等着的那一位;其余每一台设备只是断开连接然后重连。一个把远程访问关掉的浏览器,按它自己的选择,已经没有什么可以回来的了。

运行时停止期间这个页面根本不画出来(见设置),所以在运行时回来之前,这三项一个都够不着。

HTTPS 和它的证书

这份证书是自签名的,签发给“Ganter Lab Dashboard”,有效期五年,里面列着 localhost127.0.0.1 以及制作它时工作站拥有的每一个局域网地址。它作为 dashboard-cert.pfx 存在工作站的数据根目录下,在它丢失、读不出来、离到期不足一天,或者已经不覆盖工作站的某个地址时重新制作。浏览器不会自己信任它:每台设备各自显示一次自己的警告,你在那里接受工作站的证书。不走 HTTPS 的话,登录 PIN 是明文过网络的,工作站通过网络显示的其他任何内容也一样,包括配置上的 OPC UA 服务器用户名;在那里敲进去的密码进来时一样是明文,不过存下来的那个从不发给浏览器。

防火墙规则和地址守望

“Ganter Lab Dashboard”这条规则,是应用在落实这项设置时用 netsh 创建和删除的。创建规则需要提权,而应用并不假定自己有:失败会记进诊断日志并被咽下去,因为绑定和私有地址段的放行名单本来就把宿主圈住了,Windows 那时会改为显示它自己的“允许访问”提示。规则在每一次改动时都被丢掉再重建,所以不会留下一条指着旧端口的过时规则。

工作站的地址可能在宿主运行期间挪动(换了一份 DHCP 租约、从 Wi-Fi 换到网线、插上扩展坞)。应用守着它们,并在远程访问开着的时候,按当前地址重新绑定宿主,证书不再覆盖它们时也一并续签;地址卡片跟着走。

谁可以打开一幅仪表画面

第一个问题不是谁在问,而是这条请求写的是什么地址。工作站在自己的机器上以 127.0.0.1 应答;远程访问打开时,还在它绑定的每一个局域网地址和这台机器的网络名上应答。写着别的主机名的请求,或者以别的站点的页面作为来源的请求,在任何画面、文件或连接被送出之前,就以 403 和一行“本工作站只在自己公布的地址上响应。”被拒绝。这就是让你恰好访问到的某个网站没法借你的浏览器操纵这台工作站的东西:那样的页面可以把自己的域名指向这台机器,却决定不了浏览器替它写进请求里的地址,而且这次尝试会记进 Events。代理访问的接入点用的是同一条规则,来拒绝它自己的调用方。

Web 宿主提供的是整个界面,不只是仪表画面,而每一个浏览器都是它自己的一条连接,带着它自己登录的用户。一个身份到底能不能从网络上进来,看的是用户页面上它那个角色的远程访问(局域网)权限:身份没有这一项的浏览器看不到任何页面,只看到那块登录面板,直到有持有这一位的人在上面登录。未登录角色默认是关着这一项的,所以打开远程访问并不会共享任何东西,直到有用户登录,除非你为一台自助终端或者平板有意把这一位给了那个角色。工作站自己机器上的浏览器从不受它把关。从那里往后,其余的一切都由登录的角色决定,和在工作站窗口上完全一样;见登录

远程浏览器做不了什么

有几个动作只存在于工作站自己的桌面上,在浏览器里保持变灰,写着“仅在工作站本机的桌面应用中可用。”:打开备份文件夹、重启以接受更新,以及从警告计数打开拆出去的事件窗口。桌面缩放那一行根本不画出来。客户端访问现场设备访问上的信任、阻止、撤销和导入证书,以及 OPC UA 的防火墙按钮,在浏览器里被拒绝:“客户端访问只能在工作站本机的桌面应用中更改。”其余的一切,包括这些远程访问设置本身,都听登录的那个角色。

这一节不做什么

工作站从不暴露到互联网上,也不建立任何隧道:绑定是局域网绑定,防火墙规则限定在本地子网,而放行名单即使这两样都配错了也仍然拒绝公网地址。这里没有已连接浏览器的列表,没有按设备的允许或拒绝,没有单独一道用于查看的口令(身份就是本地用户),而代理端点的端口是在代理页面上设的,不在这里。