4

В одной строке: возможно ли следующее: AirPort <- мост Mac OS X -> только vbox-Host -> виртуальные машины

На Mac OS X у меня есть VirtualBox с виртуальной машиной. На данный момент я настроил 2 интерфейса для моей виртуальной машины. eth0 - нормальный мост для моей виртуальной машины для доступа в Интернет (когда AirPort подключен). eth1 установлен только для хоста, поэтому я могу получить доступ к своей виртуальной машине с хоста, когда Wi-Fi/AirPort не работает. Так что в основном это как адаптер 1, когда есть Wi-Fi, адаптер 2, когда его нет.

Я хотел бы иметь только одну конфигурацию, чтобы сделать ее проще. Я подумал, что могу просто сохранить конфигурацию "Только хост", и на хосте (Mac OS X) перейти в общий доступ к Интернету и выбрать "поделиться с AirPort" для vboxnet0 (виртуальный интерфейс vb). Только чтобы узнать, что vboxnet0 не отображается в списке интерфейсов в настройках Mac OS X.

Я знаю, что на хосте Linux вы можете установить что-то под названием bridge-utils и использовать это для соединения двух интерфейсов. Есть ли что-нибудь подобное для Mac?

1 ответ1

5

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

В то время как должна быть возможность использовать некоторую форму NAT для связи сети только с хостом с остальной частью сети, так называемый «двойной NAT» не одобряется. Двойной NAT - это когда преобразование сетевых адресов происходит дважды в сети, добавляя дополнительные издержки к пакетам, передаваемым по сети, и его следует по возможности избегать.

То, что вы пытаетесь достичь, может быть сделано очень хорошо без необходимости какого-либо NAT.

По сути, теория такова: вы создаете отдельную сеть, которая является сетью только для хоста, включаете пересылку IP на Mac и настраиваете статический маршрут в аэропорту.

Допустим, ваша обычная сеть - 192.168.1.0/24, аэропорт - 192.168.1.1, а ваш Mac - 192.168.1.200. Для этого вам понадобится статический IP-адрес на Mac. Для сети «Только хост» уже назначен диапазон IP-адресов, и в качестве аргумента, скажем, 10.0.0.0/24 с концом Mac на 10.0.0.1 и виртуальной машиной, работающей на 10.0.0.8.

Итак, мы хотим добиться:

Airport <--------------------> Mac <----------------------> VM
192.168.1.1       192.168.1.200 |10.0.0.1             10.0.0.8

Включение IP-пересылки на Mac достаточно просто. Если вы используете версию 10.5 или ниже, найдите файл /etc /hostconfig и найдите строку для IP-пересылки (я забыл, что это не так), и установите для нее значение YES. Во всех других версиях OS /X, а также в 10.5 или ниже, вы можете изменить /etc/sysctl.conf и добавить:

net.inet.ip.forwarding=1

После этого вы можете включить переадресацию без перезагрузки, набрав (от имени пользователя root):

sysctl -w net.inet.ip.forwarding=1

Итак, теперь сетевые пакеты могут попасть из основной сети в сеть только для хоста. Но как нам рассказать остальной сети об этой сети только для хоста? На данный момент об этом знает только Mac.

Ну, это опять-таки простое дело. Вам не нужно сообщать об этом всем хостам в сети, только одна общая точка вызова для всех устройств - шлюз по умолчанию - в данном случае это Аэропорт.

Я не пользовался аэропортом, поэтому не могу сказать вам, где искать настройки, которые нужно изменить, но средство будет где-то там.

Вы ищете настройки, где вы можете указать статические маршруты. Он может быть помечен как таковой или как таблица маршрутизации или что-то подобное. Когда вы найдете его, вам нужно настроить маршрут для сети Host Only через ваш Mac. Это где наличие статического адреса на вашем Mac имеет важное значение. Маршрут, который нужно настроить, будет использовать что-то вроде следующих настроек (из примера выше). Замените цифры фактическими IP-адресами и сетевыми масками):

Network: 10.0.0.0        Network address of the Host Only network
Netmask: 255.255.255.0   Netmask of the Host Only Network
Gateway: 192.168.1.200   IP address of your Mac.

Как только вы настроите этот маршрут, любой трафик, предназначенный для вашей сети Host Only, будет сначала направляться в аэропорт, который будет отвечать «На самом деле, вы не хотите говорить со мной, вы хотите говорить с 192.168.1.200» " и трафик будет перенаправлен на ваш Mac - который, в свою очередь, передаст его в сеть Host Only.

Единственное, в чем можно быть уверенным, это то, что гостевая операционная система, работающая на ВМ, имеет шлюз по умолчанию, установленный для ее работы в сети. Это должен быть конец Mac в сети Host Only (10.0.0.1 в приведенном выше примере).

Так как же это получить виртуальную машину в интернете? Что ж, довольно просто: в действительности ваша сеть расширяется до сети Host Only, а все остальное позаботится маршрутизатор (Airport). Он имеет дело с NAT и знает, какой трафик предназначен для основной сети, а какой - для сети только для хоста.

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