У меня есть виртуальная машина, которая подключена к виртуальной сети. Виртуальная сеть имеет 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, чтобы я мог SSH через свой VPN, NSG говорит, что это открыто для внешнего мира, это NSG все еще разрешает интернет? или тот факт, что я разрешил порт 80 в NSG. Если так, мне вообще нужен NSG, чтобы открыть эти порты, если я подключаюсь через шлюз Virtual Networt?
Как сделать порт 22 доступным только для моих внутренних подсетей (т. е. моего виртуального сетевого шлюза), а не для внешнего мира?
решение1
Он использует NAT для подключения к внешнему миру, как и большинство домашних ПК. Если вы посмотрите на свой ПК, вы, скорее всего, обнаружите, что он также использует частный адрес. По сути, маршрутизатор перенаправляет соединение к месту назначения, для целевого хоста соединение, по-видимому, исходит от маршрутизатора.
Обычно это работает хорошо, но сложность возникает, если вы хотите, чтобы внешние хосты подключались к хосту, у которого нет публичного адреса.