2

Мой хост - ноутбук с Windows 7, и у меня есть гостевой сервер Ubuntu 11.04, работающий в VMware. Я использую гостевой сервер для разработки Rails.

Мой ноутбук входит и выходит из сети - моя домашняя сеть, рабочая сеть, соединение 3G и т.д.

Я хотел бы настроить сервер Ubuntu так, чтобы:

  • Я могу получать к нему доступ (Samba, HTTPD и SSH) по одному и тому же IP-адресу постоянно, независимо от того, в какой сети находится мой ноутбук. Я только хочу получить доступ к серверу VM с ноутбука. Это сервер разработки. Также было бы достаточно стабильного имени хоста и динамического IP-адреса - до тех пор, пока я могу подключиться к нему через HTTP, SSH и Samba с ноутбука, независимо от того, подключен ноутбук к сети или нет, и независимо от сети.
  • Сервер сможет подключаться к Интернету (при условии, что мой ноутбук подключен), поэтому я могу apt-get .

Это возможно? Я попытался настроить статический IP-адрес в /etc/network/interfaces , но это работает только для моей домашней сети, и если я перехожу куда-либо еще, я не могу получить доступ к виртуальной машине, когда мой ноутбук не находится в моей домашней сети.

2 ответа2

3

Ваша основная проблема (наличие статического IP) не связана с виртуальной машиной. Вместо использования мостового сетевого интерфейса (т. Е. Гостевая система выполняет свою собственную сеть), вы теоретически можете использовать NAT и перенаправление портов и настроить хост-систему на статический IP-адрес.

К сожалению, невозможно настроить статический адрес IPv4. В сети IPv4 каждый узел имеет свою собственную таблицу маршрутизации. Как правило, большинство узлов отправляют трафик в свою локальную сеть (начиная с 192.168., 10. или 172.16-31. *) Напрямую на целевой ПК. К сожалению, используемые в сети адреса могут быть любыми из перечисленных выше, и ваш предпочтительный адрес уже может быть занят.

Это оставляет нам глобальный адрес IPv4. Маршрутизация для них настраивается в основном Интернете, и эта маршрутизация должна быть настроена Интернет-провайдером и локальным шлюзом. Это неосуществимо и не позволяет динамическую переадресацию.

Стандарт Mobile IP , который допускает такое изменение маршрута, не получил широкого применения. Мобильный IPv4 работает, когда система управляет вашим глобальным IPv4-адресом и перенаправляет его в ваше текущее местоположение.

Сегодня вы можете достичь чего-то подобного, используя VPN: настройте VPN-сервер со статическим IP-адресом где-нибудь в Интернете и подключите к нему виртуальную машину Ubuntu Server. Затем перенаправьте рассматриваемые порты с VPN-сервера на клиент.

Если достаточно постоянного имени, которое сопоставляется с текущим IP-адресом, вы можете использовать службу dyndns . Они дают вам доменное имя, которое вы можете обновить с помощью клиентской утилиты, работающей на вашей виртуальной машине. Таким образом, вы можете указать my-ubuntu-vm.dyndns-provider.net на текущий используемый локальный адрес.

Вместо регистрации глобального DNS-имени вы также можете использовать многоадресный DNS с avahi. После настройки ваша виртуальная машина будет доступна под именем my-ubuntu-vm.local . К сожалению, многоадресный DNS требует дополнительного программного обеспечения. Хотя многие системы Linux и Mac OS X поддерживают его «из коробки», системы Windows - нет. На этих системах вы можете установить Bonjour от Apple (также предлагается вместе с Apple Safari).

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

Если вы хотите получить доступ к ВМ только с самого хоста, вы можете просто использовать NAT и переадресацию портов (теперь доступно в графическом интерфейсе, через Devices -> Network Adapters). Перенаправьте порты (например, перенаправьте HTTP-сервер клиента с порта 80 гостевого компьютера на порт 2080 хоста), а затем используйте измененный порт. Шаг за шагом:

  1. Перейдите на вкладку сети. Если виртуальная машина работает, выберите Devices -> Network Adapters . Если это не так, щелкните правой кнопкой мыши, выберите «Настройки» (или нажмите кнопку «Настройки») и перейдите на вкладку «Сеть».
  2. Убедитесь, что есть только один адаптер и что он настроен на NAT. (Если вы что-то здесь измените, вам нужно перенастроить ВМ)
  3. Откройте вкладку « Advanced на вкладке «Сеть».
  4. Нажмите Port Forwarding .
  5. Добавьте правило. Установите порт хоста на высокий порт (например, 2080), а порт клиента - на порт, который вы хотите перенаправить (80 для HTTP, 22 для ssh).
  6. Введите http://localhost:2080 в браузере вашей хост-системы, чтобы получить доступ к клиентскому HTTP-серверу.

Если вам нужны службы для работы на тех же портах, вы также можете добавить дополнительный интерфейс (помимо NAT) и установить для него только хост. Это приведет к появлению нового интерфейса в вашей хост-системе, и вы сможете использовать частные IP-адреса, резервируемые VirtualBox для этой сети, для связи с гостем. Шаг за шагом:

  1. Выключите ВМ.
  2. Щелкните правой кнопкой мыши виртуальную машину в диспетчере и выберите « Settings .
  3. Перейдите на вкладку Network .
  4. Сконфигурируйте два интерфейса: один как NAT (чтобы разрешить вашей виртуальной машине доступ в Интернет), другой как только хост (чтобы ваш хост мог общаться с гостем).
  5. Загрузите виртуальную машину и введите /sbin/ifconfig чтобы узнать ее адрес. Вы хотите тот, который начинается с 192.168. ,
  6. Используйте этот адрес в хост-системе.
1

У вас не может быть статического IP-адреса, если вы перемещаете свой сервер по провайдерам. Каждый провайдер назначит вам любой адрес, который он хочет. Как уже упоминалось, вы можете использовать службу dyndns, чтобы указывать доменное имя независимо от того, какой ваш IP-адрес находится одновременно. Тем не менее, это не будет работать в целом, потому что может быть брандмауэр или NAT, блокирующий входящие соединения.

Надежной, но сложной альтернативой является использование существующего сервера, у которого уже есть статический IP-адрес (или обновленный домен dyndns). Если ничего другого, вы, вероятно, можете установить его дома (лучше Linux). Если у вас есть такой сервер, настройте виртуальную частную сеть (VPN) между статическим сервером и вашим роуминговым сервером Ubuntu. Это даст вашему статическому серверу и вашему роуминговому серверу частные IP-адреса, через которые они могут общаться, где бы вы ни находились. Другими словами, это будет выглядеть так, как если бы статический сервер и сервер роуминга были частью одной и той же локальной сети. Теперь вы можете настроить NAT и маршрутизацию на статическом сервере, чтобы позволить роуминговому серверу выходить в Интернет через VPN и статический сервер. Вы можете добавить правила переадресации портов на статическом сервере, чтобы перенаправить определенные порты со статического сервера на сервер роуминга через VPN. Это создаст впечатление, что эти службы расположены по IP-адресу статического сервера, в то время как они действительно будут проходить через VPN, на которую будет отвечать роуминг-сервер.

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