我不知道这是不是 Azure 特有的问题,或者为同一台服务器的接口分配与公共 IP 地址不同的 IP 地址是否正常。
我使用 Azure 门户上提到的公共 IP 地址通过 ssh 连接到我的计算机。但是,当我ip a
在计算机上执行此操作时,它会在名为 docker0 的第 3 个块中返回 inet,这与公共 IP 完全不同。我想访问在我的计算机上运行的 Jupyterhub,我尝试了这两个地址,但都不起作用。
答案1
这是很常见的事情。AWS 也是这么做的。您的服务器有一个来自私有地址块的永久分配的 IP 地址。您可以使用这些地址在服务器之间进行通信。
当您为服务器分配公共地址时,该地址实际上已被转换,服务器对此并不知情。您需要一个公共地址才能从外部连接到服务器。
如果您能够连接到服务器,但某些服务无法访问,则应检查以下几点:
- 服务是否在正确的接口上侦听,还是只侦听 127.0.0.1?使用 检查
netstat -lutpn
。它应该侦听分配给服务器的私有 IP 地址或所有地址 (0.0.0.0)。 - 您的防火墙是否阻止访问该服务?请使用 检查
iptables -L
。 - Azure 防火墙是否阻止对该服务的访问?请在您的 Azure 界面中检查,这里无法更具体,因为我不使用 Azure。