只在 SSH 服务器上定义的别名,只有在应用程序发送目标的名称时,才能通过它的动态 SOCKS 转发生效。如果客户端先在本地解析并发送数字地址,服务器的 hosts 映射就永远拿不到原始名称去解析。

普通的 OpenSSH 动态转发会把域名形式的目标带到服务器一侧,用于向外连接。OpenSSH 在那里使用系统的地址查询 API。在常见的 glibc Linux 主机上,NSS 控制 hosts 数据库和查询顺序,因此 hosts 文件中的条目可以参与解析。它不是复制到笔记本上的 DNS 记录。

把想要的名称(例如 preview.internal)保留在网站 URL 中,并选择客户端的远程主机名 SOCKS 模式。用 IP 替换 URL 中的主机名会同时改变 HTTP Host 和 TLS 身份;能连通并不代表证书对另一个名称有效。

如果别名仍然失败,请确认执行远程查询的环境。容器、chroot 或独立的服务实例可能并不使用你编辑的 hosts 文件。其他 SOCKS 实现可能使用自己的解析器,因此不应把这种系统查询行为当成所有代理服务器都具备。

相关文章