2

Мне нужно установить демонстрационное приложение, созданное в Ubuntu, на виртуальной машине, работающей из Windows 10, на ноутбуке, чтобы представить ее потенциальным клиентам в разных местах в одной стране, но это приложение в виртуальной среде следует рассматривать как внешне точный IP. Причина этого в том, что у нас есть публичный IP (скажем, 11.22.33.44, гипотетический), предоставленный провайдером, и доступ должен быть публичным; на самом деле, один из способов проверки удаленного доступа - по IP-адресу этого приложения. Фактически, в этом виртуальном устройстве будет запущена служба клиента (через браузер) через локальную сеть клиента (например, 192.168.ab), как в случае ниже (фиктивные значения),

> ------------------ +
>                    [---------------]                   [------------]
> Guest (Ubuntu)     [ Host (W10)    ]                   [ Web Server ]
> Static IP          [ Static IP     ]--- Internet --- >>[ Static IP  ]
> 11.22.33.44        [ 192.168.0.100 ]                   [ 11.22.33.x ]
>                    [---------------]                   [------------]
> ------------------ +

Но все, что я пробовал, не сработало; Я не могу даже выполнить PING для любого публичного IP-адреса успешно. В VirtualBox я пробовал несколько комбинаций, например:

Settings >> Network >> NAT >> (virtuo-net) >> Port Fowarding
--TCP: HostIP = blank || HostPort = 6789 || GuestIP = blank || GuestPort = 80
--UDP: HostIP = blank || HostPort = 4567 || GuestIP = blank || GuestPort = 53

В гостевой (Ubuntu) я установил следующую конфигурацию для сети через интерфейс GUI, а также через /etc/network/interfaces (хотя здесь уже упоминалось, что конфигурация GUI имеет приоритет над ручной настройкой)

auto 
iface lo inet loopback

auto enp0s3
iface inet enp0s3 static
address 11.22.33.44
netmask 255.255.255.0
network 11.22.33.0
broadcast 11.22.33.254
gateway 11.22.33.1
dns-nameservers 8.8.8.8 8.8.4.4

Может ли кто-нибудь дать понять, если я что-то упустил?

1 ответ1

1

Не уверен, почему вы пытаетесь использовать переадресацию портов - это даже близко не к тому, что вы пытаетесь сделать.

Вместо этого вашей клиентской виртуальной машине требуется VPN-подключение к сети, где физически было бы расположено 11.22.33.44.

Почему не работает переадресация портов

  1. Вы пытаетесь добавить правила "переадресации портов" для перевода TCP и UDP. Пинг не является ни; это ICMP.

  2. Вы пытаетесь установить исходящие соединения от виртуальной машины, но цель "переадресации портов" состоит в преобразовании входящих соединений (т. Е. DNAT с IP-адреса хоста на гостевую). SNAT будет более подходящим (если вообще). Если вы выбираете сеть "NAT" в VirtualBox, она автоматически выполняет SNAT, но ...

  3. Конечной целью как DNAT ("переадресация портов"), так и SNAT является перевод адреса. Поскольку вы настроили 11.22.33.44 на сетевом интерфейсе виртуальной машины и хотите, чтобы 11.22.33.44 были видны из внешнего Интернета, может показаться, что перевод - это именно то, что вам не нужно.

Почему не работает эта работа?

Допустим, у вас есть только базовая конфигурация IP: ваша гостевая ОС настроена с 11.22.33.44/24 в качестве своего IP-адреса и с 11.22.33.1 в качестве шлюза.

Проблема №2. В вашем примере IP-адрес сервера находится в той же подсети 11.22.33.0/24, что и у виртуальной машины клиента. Если это действительно так, то ваша виртуальная машина будет предполагать, что сервер находится в той же "виртуальной локальной сети", что и сама виртуальная машина, - она никогда не будет пытаться связаться с ней через интернет-шлюз вообще.

(Кстати, широковещательный адрес для 11.22.33.0/24 - 11.22.33. 255, а не 254. Вы могли бы избежать этой ошибки, вообще не пытаясь вручную указать широковещательный адрес: ОС может прекрасно рассчитать его самостоятельно.)

Но допустим, что IP-адрес сервера находится в другой подсети (или, возможно, вы пытаетесь пропинговать Google). Тогда, да, клиентская виртуальная машина попытается отправить пакеты через свой шлюз в Интернет. Но вот что будет:

  • Если виртуальная машина сконфигурирована для работы в сети "NAT", то VirtualBox будет выполнять SNAT все исходящие пакеты, чтобы они выглядели так, как будто они отправлены с собственного IP-адреса хоста (в данном случае 192.168.0.100). Это не то, что вы хотите.

    После того, как эти переведенные пакеты покидают хост-компьютер и достигают локального маршрутизатора клиента, он снова SNAT эти пакеты, чтобы они выглядели так, как будто они отправлены с публичного IP-адреса клиента. И это не то, что вы хотите, либо.

  • Если виртуальная машина сконфигурирована для работы по сети "Bridged", гостевая ОС будет пытаться найти свой шлюз в локальной сети клиента, который, конечно, не имеет 11.22.33.1.

Если виртуальная машина сконфигурирована для работы в сети «только для хоста» и соответствующий интерфейс виртуальной локальной сети в хост-системе настроен как 11.22.33.1/24, и если в хост-системе включена IP-маршрутизация / переадресация (в Windows это немного хлопотно), тогда у пакета фактически есть шанс оставить главный компьютер без изменений. Но это не пойдет намного дальше:

  • Весьма вероятно, что маршрутизатор локальной сети клиента в любом случае будет SNAT-пакет, указав в качестве источника открытый IP-адрес клиента, а не ваш.

  • Если маршрутизатор не выполнил SNAT и не отправил пакет без изменений, он, вероятно, будет отклонен провайдером. (Многие интернет-провайдеры блокируют пакеты с "поддельными" IP-адресами источника, по понятным причинам безопасности.)

  • Если пакет ускользнул и от SNAT-маршрутизатора, и от антиспуфинговых фильтров интернет-провайдера и успешно достиг целевого сервера ... ответы вместо этого отправлялись бы в сеть вашей компании, поскольку именно там действительно находится IP-адрес. Другими словами, случайные серверы в Интернете действительно не знают, что ваш ноутбук "заимствует" этот IP-адрес.

Как заставить это работать

Таким образом, даже если вы можете связаться с сервером, сервер не может связаться с вами - либо его ответы остаются в той же подсети, либо они передаются через Интернет, но в любом случае все пакеты, предназначенные для 11.22.33.44, будут доставлены к вам домой. «Интернет-провайдер, а затем в сети вашей компании.

Поэтому вам нужен какой-то способ сообщить сети вашей компании, как связаться с виртуальной машиной внутри вашего ноутбука, чтобы виртуальная машина могла принимать пакеты, предназначенные для 11.22.33.44. Обычно это делается путем настройки туннеля или VPN. (То же самое на самом деле.)

Вам придется:

  1. настроить VPN-сервер в сети вашей компании (если его еще нет);
  2. заставить виртуальную машину клиента подключаться к VPN;
  3. настроить VPN- сервер на владение IP-адресом 11.22.33.44 (один из нескольких возможных подходов, но, возможно, самый простой).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .