azure - 按名称在 Azure VM 之间进行连接
问题描述
我在同一个 Vnet 上有两个 Azure Windows VM。
第二个是从第一个的备份还原的克隆,我更改了它的计算机名称,假设我将它们命名为 vmOriginal (10.0.0.4) 和 vmClone (10.0.0.5)。
作为最简单的情况,我正在测试它们之间的通信,使用 telnet 到另一个开放端口。
使用它们的本地 IP 地址在两个方向上都是成功的。
vmOriginal 也可以通过名称远程登录到 vmClone。
但是 vmClone 无法通过名称远程登录到 vmOriginal(无法打开与主机的连接,连接失败)。
我该如何解决这个问题?
解决方案
好吧,这几乎令人难以置信。原来问题是计算机名称太长(我上面使用的名称只是为了清楚起见)。
对于 Azure VM,计算机名称实际上必须最多为 12 个字符(即使 Windows 在控制面板中设置时允许 15 个字符)。
Azure 对此没有任何警告。
对于 vNet DNS,Azure 为计算机名称添加了一个 51 个字符长的域,我猜它代表本地 vNet。它看起来像:
rifmvhdprmqxsebj4n0m6vnd2d.qx.internal.cloudapp.net
加上分隔点,计算机名只能有 12 个备用字符。
再长的话,总表达式将超过 DNS 条目的 64 个字符限制,这意味着计算机将无法在 DNS 中找到,并且无法在网络上通过名称引用。
这里有一个反馈提交,它解释了这个确切的情况,这是我经过数小时搜索后发现的唯一让我走上正轨的东西。
我不明白为什么这个问题没有更广为人知。或者更好的是,在 Azure 门户中发出警报。
或者最重要的是,正如上面的响应者所指出的那样,根本不应该允许它发生。
推荐阅读
- python - 有条件地删除 Pandas 中的重复条目
- regex - 正则表达式日期问题
- docker - Docker build 抱怨找不到 nuget 后备包文件夹
- reactjs - 缺少区域设置的区域设置数据:“未定义”。使用默认语言环境:“en”作为后备
- npm - PptxGenJS - 文件的 NPM 声明问题
- java - 如何在 Spring Boot (application.yml) 中指定自定义健康检查注册表
- php - 使用 PHP/phpmyadmin 将整数插入 SQL
- ubuntu - DNSMasq 的问题(端口 53 错误,Ubuntu 18)
- c++ - CreateDC() 方法,而在某些打印机以及某些 Windows 环境中设置打印机失败
- python - 从 Tensorflow DeepLab v3 Demo 中提取图像分割图