我有一台连接到虚拟网络的虚拟机。虚拟网络有 2 个附加设备、虚拟网络网关和网络接口。
只有虚拟网络网关具有公共 IP 地址(显然用于点到站点可以访问它)。
虚拟网络有两个子网,一个网关子网(因此我可以通过 VPN 连接到它),另一个“内部子网”(用于在内部将 Azure 资源相互连接)。
因此,虚拟机的配置不显示公共 IP 地址,但它显示了它所连接的虚拟网络。
那么我的虚拟机为什么还能连接到外界呢?
如果我这样做ifconfig
它会显示:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.4 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::222:48ff:fe07:e7da prefixlen 64 scopeid 0x20<link>
ether 00:22:48:07:e7:da txqueuelen 1000 (Ethernet)
RX packets 47292 bytes 58161743 (58.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14277 bytes 2886277 (2.8 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
因此很明显,它显示它通过没有公共 IP 的网络接口连接到虚拟网络中的子网。
我想知道,当我设置网络安全组时,我允许端口 22,这样我就可以通过我的 VPN 进行 SSH,NSG 说这暴露给外界,是 NSG 仍然允许互联网进入吗?还是因为我在 NSG 上允许了端口 80。如果是这样,如果我通过虚拟网络网关连接,我是否还需要 NSG 来打开这些端口?
我如何仅将端口 22 公开给我的内部子网(即我的虚拟网络网关)而不向外界公开?
答案1
它使用 NAT 连接到外界,就像大多数家用 PC 一样。如果你看看你自己的 PC,你很可能会发现它也使用私有地址。基本上,路由器将连接转发到目的地,对于目标主机来说,连接似乎源自路由器。
这通常很有效,如果您想让外部主机连接到没有公共地址的主机,那么另一种方法就很困难了。