У меня есть удаленный сервер (ubuntu) с 1 публичным IP.
Я установил безголовый VirtualBox и развернул машину. На данный момент я могу получить к нему доступ через сервер VRDE VirtualBox, работающий на сервере, но мне нужно иметь доступ к виртуальной машине напрямую ... так как я могу настроить сеть? AFAIK Virtual Box не позволяет получить доступ к NAT извне, поэтому он оставляет мне вариант моста, но у меня есть только один внешний IP-адрес. Какие у меня варианты?
Если вы настроите интерфейс «только для хоста», VirtualBox будет использовать виртуальный интерфейс на хосте. Вы можете определить переадресацию на этот интерфейс.
Чтобы использовать интерфейс только для хоста, запустите VirtualBox и в меню «Файл» выберите «Настройки». В появившемся окне выберите «Сеть» и нажмите кнопку «Добавить». После добавления сети нажимаем кнопку «настройки» справа. Здесь вы можете редактировать настройки виртуальной сети. «IP-адрес» будет IP-адресом хоста в этой виртуальной сети.
Убедитесь, что опция DHCP-сервера выключена.
Если вы закончили, нажмите кнопку «ОК». После этого вы можете выбрать «только хост» в сетевых настройках гостевого компьютера. По умолчанию он будет использовать тот интерфейс, который вы создали в описанных выше шагах.
Запустите виртуальную машину. Дайте ему фиксированный IP-адрес и настройте шлюз. Вы должны иметь возможность пинговать IP-адрес гостевого компьютера с хоста и наоборот.
В операционной системе хоста появится новый адаптер с именем «vboxnet0». Благодаря этому гостевой компьютер будет доступен, но только с главного компьютера (конечно). Вы можете настроить переадресацию портов на главном компьютере как обычно, и с этим вы можете получить доступ к своему гостю напрямую.
Использовать Hostonly сети. Вы добавляете интерфейс в свою сетевую конфигурацию для своего виртуального бокса, который действует как коммутатор. По умолчанию он должен добавить vboxnet0
.
На вашем компьютере вам нужно включить переадресацию ip4 в ядре:
sysctl -w net.ipv4.ip_forward=1
Этого должно быть достаточно, чтобы разрешить доступ в Интернет для виртуальной машины. Вы можете фильтровать трафик с помощью iptables и цепочки FORWARD, если вы добавляете интерфейс для каждой виртуальной машины, вы даже можете фильтровать по интерфейсу и ограничивать трафик между виртуальными машинами. Это наиболее гибкий способ сделать это. И вы можете избежать перемычки.
Используя iptables, вы можете перенаправить порт на локальную виртуальную машину:
iptables -t nat -A PREROUTING -i eth+ -p tcp --dport 2222 -j DNAT --to 10.10.10.100:22
куда 10.10.10.100
это IP-адрес вашей виртуальной машины на интерфейсе vboxnet0
к которому можно добраться извне через порт 2222
. Вы можете настроить IP вручную или использовать dnsmasq
на хосте, чтобы действовать как DHCP-сервер.
Поместите файл в /etc/dnsmasq.d/virtualbox
для вашей виртуальной машины:
dhcp-range=interface:vboxnet0,10.10.10.100,10.10.10.100,255.255.255.0,24h
Это позволяет назначить виртуальной машине IP-адрес и информацию о шлюзе + DNS. Вы также можете настроить его вручную, в этом случае DNS и адрес шлюза будут 10.10.100.1
. Если вы знакомы с конфигурацией сети Linux, вы сможете в этом разобраться.