Archive:Сетевой мост в VirtualBox

Перейти к: навигация, поиск
Icon-obsolete.png Эта статья актуальна для версии '10.3', которая теперь является устаревшей!
Пожалуйста, обратитесь к странице обсуждения этой статьи для получения подробной информации.

Version: VirtualBox 4.0+ Для последних версий VirtualBox в настройках сетевой карты виртуальной машины, можно установить режим bridge(мост), никаких других действий в ОС не требуется.

Создание подключения типа мост в VirtualBox

Протестировано на:

  • OpenSuSE 10.3 + VirtualBox-1.6.2_31466_openSUSE103-1
  • OpenSuSE 11 + VirtualBox 2

Необходимое программное обеспечение

  • bridge utilities (пакет: bridge-utils)
  • user mode linux utilities (пакет: uml-utilities)

Вы можете найти необходимые пакеты здесь http://packages.opensuse-community.org/

Основы подключения моста в OpenSuSE 10.3

See Bridging for more background.

Файервол OpenSuSE может мешать созданию моста. Убедитесь что файервол не мешает вашему подключению моста. Если вы не уверены, попытайтесь отключить файервол до создания подключения типа мост. Если подключение установлено и связь основной и гостевой машин установлена, попытайтесь включить файервол снова и вновь понаблюдайте за соединением.

Чтобы выключить фаерволл выполните:

 # /sbin/rcSuSEfirewall2 stop

и чтобы снова включить выполните:

 # /sbin/rcSuSEfirewall2 start

Информация по каждому из ifcfg-*** файлу описана в документации к SLED и задокументирована в файле шаблона, входящего в состав вашего дистрибутива OpenSuSE:

 /etc/sysconfig/network/ifcfg.template

Системный сценарий для примера

Сценарий 1: Создание моста с двумя сетевыми картами

Возьмем следующую систему в качестве примера:

  • DSL модем (в маршрутизаторе)
  • маршрутизатор LinkSys (как шлюз 192.168.1.1 с DHCP возможностями)
  • Настольная система/сервер под управлением OpenSuse 10.3 (статический IP 192.168.1.2)
  • eth0 (Marvell 88E8001 Asus встроенный сетевой интерфейс, назначенный в качестве "главного" соединение для основной ОС)
  • eth1 (3Com 3c905 сетевой интерфейс PCI - назначенный для создания моста

В режиме супер-пользователя отредактируйте/создайте файлы как описано ниже или сконфигурируйте их, основываясь на требованиях или топологии вашей сети, в этой иллюстрации конфигурация будет следующая:

### файл: /etc/sysconfig/network/ifcfg-eth0
BOOTPROTO='static'
IPADDR='192.168.1.2/24'
STARTMODE='auto'
NAME='1000 GBit Marvell 88E8001 (Asus)'
USERCONTROL='no'
### файл: /etc/sysconfig/network/ifcfg-eth1
BOOTPROTO='static'
IPADDR='0.0.0.0'
STARTMODE='auto'
NAME='100 MBit 3Com 3c905 [Boomerang]'
USERCONTROL='no'
NETMASK='255.255.255.0'
### файл: /etc/sysconfig/network/ifcfg-br0
STARTMODE='auto'
BOOTPROTO='dhcp'
USERCONTROL='no'
BRIDGE='yes'
BRIDGE_PORTS='eth0 eth1'
BRIDGE_AGEINGTIME='20'
BRIDGE_FORWARDDELAY='0'
BRIDGE_HELLOTIME='2'
BRIDGE_MAXAGE='20'
BRIDGE_PATHCOSTS='3'
BRIDGE_STP='on'

Затем запустите команду тестирования конфигурации:

 #ifup br0
 # /etc/rc.d/network restart

Проверьте новую конфигурацию сетевых устройсв:

 # /sbin/ip addr

Вы должны увидеть по крайней мере четыре сетевых интерфейса с выходными данными подобными следующим:

1: lo: [...]

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 [...]
    [...]
    inet 192.168.1.2/24 [...]

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 [...]
    [...]

4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 [...]
    [...]

Суть в том, чтобы убедиться, что все интерфейсы, необходимые для "поднятия" моста присутствуют

Теперь настройте вашу VirtualBox машину на использование eth1 в меню конфигурации "Network" >> "Host Interface Settings" >> "Interface Name".

После включения виртуальной машины, установите для гостевой машины IP адрес 192.168.1.3/24 и для шлюза 192.168.1.1.

Сценарий 2 : Создание моста при помощи одной сетевой карты и виртуальной сетевой карты

Результаты этого сценария следующие,

  • Основная и гостевая машины могут соединяться,
  • Гостевая машина может подключиться к другой машине в локальной сети и Интернет, и наоборот.

Возьмем следующую систему в качестве примера:

  • Имя пользователя основной машины : johndoe
  • Основная машина с 'eth0'  : 10.2.26.248/27
  • Шлюз  : 10.2.26.225
  • Прокси  : 10.1.10.17
  • IP адрес гостевой машины  : 10.2.26.249/27


Кратко :

  1. Выключите интерфейс 'eth0'.
  2. Установите IP адрес интерфейса 0.0.0.0 и режим 'promisc'.
  3. Создайте интерфейс моста 'br0' и установите IP адрес и маску для 'br0' в значения IP адреса и маски 'eth0' до того как мы установили 0.0.0.0.
  4. Создайте виртуальную сетевую карту 'tap0' при помощи VBoxAddIF и добавьте 'tap0' к интерфейсу моста 'br0'.
  5. Не забудьте также установить 'tap0' в 'promisc' режим.
  6. Добавьте 'eth0' к 'br0'.
  7. Включите все интерфейсы.

Детально,

  • Выключите интерфейс 'eth0'.
 # /sbin/ip link set eth0 down
  • Очистите IP адреса eth0 (Важно : мост автоматически выставит режим promisc)
 # /sbin/ip addr flush dev eth0
Чтобы изменить адрес интерфейса на бессрочный период, отредактируйте файл '/etc/sysconfig/network/ifcfg-eth0' и закомментируйте IPADDR
Пример конфигурации :
BOOTPROTO='static'
STARTMODE='ifplugd'
IFPLUGD_PRIORITY='1'
#IPADDR='10.2.26.248/27'
NAME='Hewlett-Packard Company Presario V6133CL'
USERCONTROL='no'
  • Создайте интерфейс моста 'br0' и установите ему IP адрес.
Для создания временного интерфейса моста (интерфейс исчезнет после перезагрузки компьютера):
 # /sbin/brctl addbr br0
 # /sbin/ip addr add 10.2.26.248/27 dev br0
Для создания постоянного интерфейса, создайте в '/etc/sysconfig/network' файл 'ifcfg-br0' со следующим содержимым:
BOOTPROTO='static'
STARTMODE='auto'
IPADDR='10.2.26.248/27'
NAME='bridge for vbox'
BRIDGE='yes'
BRIDGE_PORTS='eth0 tap0'
BRIDGE_FORWARDDELAY='0'
  • Создайте виртуальную сетевую карту 'tap0' при помощи VBoxAddIF и добавьте 'tap0' к мосту 'br0'.
Это создаст постоянную виртуальную сетевую карту,
 # /usr/bin/VBoxAddIF tap0 johndoe br0
  • Добавьте 'eth0' к 'br0'.
 # /sbin/brctl addif br0 eth0
  • Включите все интерфейсы.
 # /sbin/ip link set tap0 up
 # /sbin/ip link set eth0 up
 # /sbin/ip link set br0 up
  • Последняя проверка, запуск
 # /sbin/ip addr
и удостоверьтесь, что все интерфейсы включены (см. Сценарий 1)
Предупреждение

Проделав вышеизложенное, я не смог заставить это работать на openSUSE 11.0 и VirtualBox 2.0.4. Тогда я попытался вернуться к прежней установке и обнаружил что сетевая конфигурация была .... перезагрузки сети, переконфигурирование сети и т.д. не помогли. Было похоже, что демон dhcp клиента не вызывался после поднятия eth0. В конце концов я переустановил DHCP, DHCP-клиент + демон, Avahi и ipw-firmware пакеты. Затем я вернулся на линию. Тогда всё заработало. Выше означенный рецепт расходится с документацией к VirtualBox 2.0.4. Если я когда-либо получу рабочий вариант, то я разъясню то, что было сделано и опишу, как перезагрузить вашу установку.

В VirtualBox

Теперь настройте вашу VirtualBox машину на использование "Главного интерфейса" tap0 в меню настройки "Сеть" >> "Настройки главного интерфейса" >> "Имя интерфейса"("Network" >> "Host Interface Settings" >> "Interface Name"). В VirtualBox 2.0 имеются опции "Установить приложение" ("Setup Application") и "Завершить приложение" ("Terminate Application"). Оставьте их пустыми!

Запустите вашу виртуальную машину, установите сетевой адрес и вуаля! ;) у вас две машины имеющие выход в интернет.