Назад | Перейти на главную страницу

VirtualBox - общедоступный статический IP-адрес для гостя Debian на выделенном сервере

Цель:
Я хочу запустить Debian-squeeze-Guest в VirtualBox и предоставить гостю собственный публичный статический IP-адрес. Я нашел множество тем по этой теме, но в целом я сейчас пытаюсь в течение 10 часов (читая руководство, форумы, пытаясь узнать о сетевых концепциях и командах), чтобы предоставить гостю его собственный общедоступный статический IP-адрес (чтобы Гость похож на vServer, который вы можете заказать у хостинговой компании), но не смог.

Поскольку я большой новичок в том, что касается сетевых технологий, я, вероятно, делаю что-то не так (пожалуйста, потерпите меня :-))

Ситуация:
VirtualBox 4.0.10 (headless no gui) работает на выделенном Debian-сервере, гостевой ОС также является Debian.

У сервера статический ip, и я заказал дополнительный ip для виртуальной машины.

Описание проблемы:
До сих пор я мог использовать NAT для доступа к виртуальной машине извне и для настройки внутренней сети между несколькими гостями, и все это работало очень хорошо.

При настройке сетевого адаптера 1 на мост и настройке общедоступного статического IP-адреса гостя гость не мог подключиться. (ни извне, ни с хоста) Я мог подключиться к гостю через внутреннюю сеть, правда, с другого vm. (VBoxManage controlvm VMGuest nic1 bridged eth0) (ниже приведена попытка настройки static-ip на гостевом компьютере / etc / network / interfaces)

Пожалуйста, дайте мне знать, что я делаю неправильно, или что я могу попытаться заставить это работать, или если вам нужна дополнительная информация.

Я думаю, что читал, что с текущей версией VirtualBox для мостовых сетей не требуется специальной конфигурации хоста, это точно, или может быть это проблема?


Дополнительная информация
Информация, которую я получил от хостинговой компании о дополнительном IP

  Please note that you can use the IP address only for this server.

  IP: 46.4.xx.xx
  Gateway: 46.4.xx.xx
  Mask: 255.255.255.248 

VBoxManage showvminfo VMGuest | меньше

 ...
NIC 1:           MAC: 080027D72F7B, Attachment: Bridged Interface 'eth0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0
NIC 2:           MAC: 080027B03B75, Attachment: Internal Network 'InternalNet1', Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
NIC 3:           disabled
(...rest is disabled) 

cat / etc / network / interfaces на хост-машине

 # Loopback device:
auto lo
iface lo inet loopback

# device: eth0
auto  eth0
iface eth0 inet static
  address   46.4.xx.xx
  broadcast 46.4.xx.xx
  netmask   255.255.255.224
  gateway   46.4.xx.xx
  post-up mii-tool -F 100baseTx-FD eth0

# default route to access subnet
up route add -net 46.4.xx.xx netmask 255.255.255.224 gw 46.4.xx.xx eth0 

cat / etc / network / interfaces на гостевой виртуальной машине

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
auto  eth0
iface eth0 inet static
  address 46.4.xx.xx
  netmask 255.255.255.248
  gateway 46.4.xx.xx

auto eth1
iface eth1 inet dhcp

ifconfig -a на гостевом компьютере показывает правильный статический IP-адрес для eth0, но гость недоступен "через eth0"

eth0      Link encap:Ethernet  HWaddr 08:00:27:d7:2f:7b
          inet addr:46.4.xx.xx  Bcast:46.4.xx.xx  Mask:255.255.255.248
          inet6 addr: fe80::a00:27ff:fed7:2f7b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21 errors:0 dropped:0 overruns:0 frame:0
          TX packets:69 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1260 (1.2 KiB)  TX bytes:3114 (3.0 KiB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:b0:3b:75
          inet addr:192.168.10.3  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:feb0:3b75/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:142 errors:0 dropped:0 overruns:0 frame:0
          TX packets:92 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:15962 (15.5 KiB)  TX bytes:14540 (14.1 KiB)
          Interrupt:16 Base address:0xd240

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:123 errors:0 dropped:0 overruns:0 frame:0
          TX packets:123 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:25156 (24.5 KiB)  TX bytes:25156 (24.5 KiB) 

Я всегда делал это, создавая на хосте интерфейс моста, чтобы он выглядел так:

brctl шоу

bridge name     bridge id               STP enabled     interfaces
br0             8000.0025b3bafc61       no              eth0

ifconfig eth0

eth0  Link encap:Ethernet  HWaddr 00:25:B3:BA:FC:61
      inet6 addr: fe80::225:b3ff:feba:fc61/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:12199478 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1121494 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:1101744530 (1.0 GiB)  TX bytes:396467719 (378.1 MiB)
      Interrupt:51

ifconfig br0

br0   Link encap:Ethernet  HWaddr 00:25:B3:BA:FC:61
      inet addr:10.16.21.55  Bcast:10.16.21.255  Mask:255.255.255.0
      inet6 addr: fe80::225:b3ff:feba:fc61/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:1280420 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1098325 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:334957389 (319.4 MiB)  TX bytes:394733263 (376.4 MiB)

Запуск "VBoxManage showvminfo | grep NIC" должен показать что-то вроде:

NIC 1:           MAC: 080027D96DFB, Attachment: Bridged Interface 'br0',
       Cable connected: on, Trace: off (file: none), Type: 82540EM,
       Reported speed: 0 Mbps, Boot priority: 0

Я не знаю, можете ли вы указать VirtualBox напрямую подключиться к eth0, без предварительной настройки br0. Вы, кажется, думаете, что это возможно, и это могло быть причиной ваших проблем. Также обратите внимание на Мостовой ключевое слово. Если вы ранее использовали NAT, это могло быть проблемой.

Спасибо всем, кто ответил!

В следующем уроке на немецком языке мы наконец нашли решение (сетевая часть). Мой Host-IP и дополнительный IP-адрес не находились в одной подсети:
http://www.kitesurfer1404.de/klartext/eq6_setup

0. Информация от моей хостинговой компании о дополнительном IP-адресе и Mac-адресе

Host-IP:       _hostIP_
Additional IP: _additionalIP_
Gateway:       _gatewayIP_
Maske:         255.255.255.248

Your IP _additionalIP_ has the following separate MAC-adress for virtualisation purposes:

Mac-address for the nic: _macaddress_

1. На хосте

iptables -P FORWARD ACCEPT
sysctl -w net.ipv4.ip_forward=1

# Add the Gateway as an IP-address on the host, in the following way (not the actual additional IP):
ip addr add _gatewayIP_/255.255.255.248 dev eth0

# Add a route for the 2nd additional ip in the following way
route add -host _additionalIP_ gw _additionalIP_


# make the changes persistent - this part is not tested!

emacs /etc/network/interfaces
# ----------------------------------------
# Loopback device:
auto lo
iface lo inet loopback

# device: eth0
auto  eth0
iface eth0 inet static
  address   _hostIP_
  broadcast _broadcast_
  netmask   255.255.255.224
  gateway   _gateway_
  post-up mii-tool -F 100baseTx-FD eth0

# default route to access subnet
up route add -net 46.4.xx.xx netmask 255.255.255.224 gw 46.4.xx.xx eth0

up ip addr add _gatewayIP_/255.255.255.248 dev eth0
up route add -host _additionalIP_ gw _additionalIP_
# ----------------------------------------

2. На хосте - изменить настройки гостя.

# set the mac-address of the guests nic to the virtual mac-address we got for our additional ip
# bridgeadapter1 is the network card from the Host that should be used for the bridge
VBoxManage modifyvm VMGuest  --nic1 bridged --bridgeadapter1 eth0      --nictype1 Am79C973   --macaddress1 _macaddress_
VBoxHeadless -startvm VMGuest 

3. В гостях

# connect via internal network and edit the network-configuration

emacs /etc/network/interfaces
# --------------------------------------------------
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
auto  eth0
iface eth0 inet static
  address _additionalIP_
  netmask 255.255.255.248
  gateway _gatewayIP_

allow-hotplug eth1
auto eth1
iface eth1 inet dhcp
# --------------------------------------------------


shutdown -r now

«Обратите внимание, что вы можете использовать IP-адрес только для этого сервера».

Это может быть признаком того, что хостинговая компания внедрила безопасность уровня 2 на уровне коммутации, поэтому, если MAC не совпадает, он не будет разрешен в коммутируемой сети.

Я использовал этот сценарий для создания виртуальной машины с Virtual Box без графического интерфейса:

#!/bin/bash

VMNAME="OpenBSD"

VBoxManage createvm --name $VMNAME --ostype OpenBSD --register
VBoxManage createhd --filename ~/"VirtualBox VMs"/$VMNAME/$VMNAME --size 100000
VBoxManage storagectl $VMNAME --name "IDE Controller" --add ide --controller PIIX4 --hostiocache on --bootable on
VBoxManage storageattach $VMNAME --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium ~/"VirtualBox VMs"/$VMNAME/$VMNAME.vdi
VBoxManage storageattach $VMNAME --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium ~/iso/install49.iso --passthrough off
VBoxManage modifyvm $VMNAME --memory 512 --vrde on --acpi on --rtcuseutc on
VBoxManage modifyvm $VMNAME --nic1 bridged --bridgeadapter1 eth0
VBoxManage modifyvm $VMNAME --nic2 bridged --bridgeadapter2 eth1
VBoxManage modifyvm $VMNAME --nic3 bridged --bridgeadapter3 eth2

И работает нормально. Один из виртуальных интерфейсов имеет публичный IP, другие интерфейсы имеют внутренний IP.