Archive:Сетевой мост в VirtualBox
Эта статья актуальна для версии '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
Кратко :
- Выключите интерфейс 'eth0'.
- Установите IP адрес интерфейса 0.0.0.0 и режим 'promisc'.
- Создайте интерфейс моста 'br0' и установите IP адрес и маску для 'br0' в значения IP адреса и маски 'eth0' до того как мы установили 0.0.0.0.
- Создайте виртуальную сетевую карту 'tap0' при помощи VBoxAddIF и добавьте 'tap0' к интерфейсу моста 'br0'.
- Не забудьте также установить 'tap0' в 'promisc' режим.
- Добавьте 'eth0' к 'br0'.
- Включите все интерфейсы.
Детально,
- Выключите интерфейс '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"). Оставьте их пустыми!
Запустите вашу виртуальную машину, установите сетевой адрес и вуаля! ;) у вас две машины имеющие выход в интернет.