Я использую хост Debian с интерфейсами eth0 и wlan0 (я называю эти хосты:eth0 и host:wlan0 для ясности), оба настроены на DHCP как нормальный, и все работает отлично. То, что я пытаюсь здесь определить, - это лучший способ интеграции дополнительной виртуальной машины в качестве более приоритетного маршрута во внешний мир - я объясню, что я имею в виду.

То, что я хочу сделать, - это выбрать запустить мое гостевое устройство virtualbox, и когда оно будет активным, оно станет моим интернет-маршрутизатором с хоста на виртуальную машину, через внутреннюю маршрутизацию на виртуальной машине и из виртуальной машины на NAT-маршрут в Интернет.

Когда виртуальный гость не запущен, этот маршрут к виртуальному гостевому устройству отсутствует, поэтому маршрутизируйте трафик на обычное устройство / интерфейс ...

Немного углубляясь, у меня на гостевой виртуальной машине virtualbox работает 2 виртуальные сетевые карты eth0 и eth1 (я называю эти guest:eth0 и guest:eth1).

Первый из них, guest:eth0, настроен на использование сетевого интерфейса «NAT» виртуальной коробки - что фактически означает, что он получит маршрут от моего активного хоста:eth0 или host:wlan0 - в зависимости от того, что активно. Это работает очень хорошо - я могу подключиться к Интернету через гостя:eth0 через стиль NAT виртуальной сети.

Второй гостевой интерфейс, guest:eth1, определен как статический (не маршрутизируемый) адрес 10.152.152.10/18 с намерением, чтобы это позволило хосту установить маршрутизацию к известной конечной точке (то есть маршруту в виртуальное гостевое устройство, которое затем внутренне маршрутизирует из гостя:eth0 к Интернету).

Что касается гостя:eth1, я решил использовать опцию VirtualBox Host-Only-Networking, которая при настройке с адресом 10.152.152.11/18 добавляет новый интерфейс host:vboxnet0 к моему хосту и таким образом делает маршрут к моему доступен виртуальный гость (с учетом интерфейса host:vboxnet0 и интерфейса guest:eth1 находятся в одной теме 10.152.152.x/18.

Задержка дыхания, хотя я не уверен в правильной конфигурации маршрутизации или стиле конфигурации, я счастлив, что через различные перестановки маршрутизации:

  1. Мой хост может получить доступ к Интернету через DHCP на хосте eth0 и хосте wlan0
  2. Мой гость может получить доступ к гостю в интернете:eth1 через виртуальную коробку NAT
  3. Мой хост может подключиться к моему гостю через хост:vboxnet0

Итак, проблема.

Когда мой host:vboxnet0interface «жив» в результате того, что я запускаю свою виртуальную машину, я получаю 2 шлюза по умолчанию. Изучая это, я знаю, что мне могут понадобиться 2 iptables - и прописать 2 шлюза по умолчанию в разных таблицах маршрутизации с разными метриками .... но я пока не нашел единого стиля конфигурации маршрутизации, который помог бы мне предварительно Определите статические правила, которые обслуживают оба стиля маршрутизации:

  1. Когда виртуальный гость не запущен (и интерфейс vboxnet0 недоступен), то наступают счастливые дни, обычная работа на DHCP-хосте:eth0 и хосте:wlan1
  2. Когда моя виртуальная машина работает, а vboxnet0 активен, это единственный путь от моего хоста к Интернету.

Я доказал все ссылки - но просто нужно руководство по лучшему шаблону маршрутизации, чтобы теперь сосредоточиться, если это имеет смысл. Я надеялся, что перед тем, как вывести дампы iptables/ifconfig/ip, можно будет получить руководство от ниндзя по маршрутизации в Linux по шаблону, о котором мне нужно подумать?

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

Спасибо заранее.

1 ответ1

0

Маршрутизация не знает, достижимы ли адреса назначения, к которым он направляет, или нет, не с метриками и не с iptables . Поэтому вам нужно каким-то образом определить, доступен ли виртуальный гость или нет, найдя место, где можно подключиться к процессу запуска / завершения работы, или обернув процесс запуска / завершения работы в свои собственные сценарии и всегда используя их. Подключение к системным скриптам, которые выполняются, когда интерфейсы работают вверх или вниз, также является опцией, но это зависит от вашей системы (systemd , классический ifup / ifdown и т.д.).

Когда вы нашли подходящие перехватчики, просто отрегулируйте (одиночный) маршрут по умолчанию в соответствии с состоянием вашей системы в скриптах.

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