Подключение коммутатора к сети только для хоста виртуальной машины

387
Matt Hall

У меня есть MacBook под управлением Mac OS High Sierra. Он является хостом для трех виртуальных машин под управлением Ubuntu 16.04. Все виртуальные машины имеют два адаптера; NAT и Host-Only. Mac подключен к другому хосту через коммутатор. Виртуальные машины координируют и предоставляют услугу, которую я хотел бы сделать доступной для хоста на другом конце коммутатора, подключенного к моему ноутбуку.

 en8  192.168.57.0 192.168.57.200 192.168.57.100 /---|VM1| 192.168.56.3 |------------| /--------------\ |--------------| / | Host1 |--| switch |--| Host2 |------|VM2| 192.168.56.4 |------------| \--------------/ |--------------| \ 192.168.56.1 \---|VM3| 192.168.56.5 vboxnet0 

Хосты находятся в подсети 192.168.57.0\24. Ноутбук подключен к коммутатору через интерфейс en8с IP-адресом 192.168.57.100. Ноутбук и коммутатор могут пинговать друг друга.

Mac OS подключена к виртуальным машинам через 192.168.56.1интерфейсный интерфейс vboxnet0. Виртуальные машины могут пинговать друг друга и их хост. Хост может общаться с каждой виртуальной машиной.

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

Я попробовал следовать примеру Джеффа Уоррена здесь: Virtualbox: подключение сетей только для хоста на отдельных хостах, но в моем случае это не работает.

В частности, я пытался ...

sudo route -n add -net 192.168.56.0/24 192.168.57.100 

но это не сработало. Я получил сообщение о том, что файл уже существует.

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

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

0

1 ответ на вопрос

1
Carlos Mendioroz

Предполагая, что интерфейсы 192.168.56.0/24 на виртуальных машинах предназначены только для хоста (то есть не для NAT).

Вам не нужны маршруты на вашем MAC (host2), потому что это единственный путь с прямым подключением к обоим / 24. Вам нужно, чтобы ваши виртуальные машины прошли этот путь, чтобы добраться до коммутатора, и коммутатор, чтобы пройти этот путь, чтобы перейти к виртуальным машинам.

На виртуальных машинах "ip route add 192.168.57.0/24 через 192.168.56.1" должен помочь.

На коммутаторе ... какой бы синтаксис ни был необходим, возможно, чтобы host2 стал шлюзом по умолчанию (@ 192.168.57.100)

Спасибо, я добавил правило ip route на свою виртуальную машину, но я получаю пункт назначения, недоступный при пинге 192.168.57.100. Я попытался изменить правило для маршрутизации на .57 через 192.168.56.1, думая, что мои виртуальные машины могут достигать хоста по этому адресу, но когда я делаю это, я получаю `RTNETLINK ответы: сеть недоступна`. Я изменил шлюз коммутатора на 192.168.57.100, хотя. Matt Hall 6 лет назад 0
Извините, да, моя опечатка. Это должно было быть "через 192.168.56.1". Что показывает «ip route ls» на виртуальных машинах? Carlos Mendioroz 6 лет назад 0
Ваш MAC (host2) также должен быть готов к пересылке трафика (т. Е. Маршрута). Этого может быть достаточно для «echo 1> / proc / sys / net / ipv4 / ip_forward» или может потребоваться настройка правил брандмауэра, если они у вас есть. Carlos Mendioroz 6 лет назад 0
я удалил плохое правило, `ip route ls` теперь ...` по умолчанию через 10.0.3.2 dev enp0s8 proto static metric 100 NEWLINE 10.0.3.0/24 dev enp0s8 proto область действия ядра ссылка src 10.0.3.15 metric 100 NEWLINE 169.254.0.0 / 16 dev enp0s8 Метрика ссылки на область видимости 1000 NEWLINE 192.168.57.0/24 dev enp0s3 Протокольная ссылка на ядро ​​протока src 192.168.57.3 Метрика 100` Я попытался немного почистить форматирование для комментариев, но я не уверен, что это очень помогло Matt Hall 6 лет назад 0
На Mac включена пересылка с `sysctl -w net.inet.ip.forwarding = 1` Matt Hall 6 лет назад 0
Хм, "192.168.57.0/24 dev enp0s3 ссылка ядра области действия протока src 192.168.57.3" звучит так, как будто эта ВМ имеет IP 192.168.57.3, а не 192.168.56.3? Carlos Mendioroz 6 лет назад 0
Вы абсолютно правы. У меня были виртуальные машины не в той сети. Я изменил их все обратно на 192.168.56.0/24, и теперь все, что вы сказали делать, сработало! Спасибо. Matt Hall 6 лет назад 0