Как Vagrant создает частную сеть?

Что делает Vagrant за кулисами на хост и гостевой компьютер, когда он настраивает частную сеть с фиксированным IP (http://docs.vagrantup.com/v2/networking/private_network.html)?

Vagrant.configure("2") do |config|
  config.vm.network "private_network", ip: "192.168.50.4"
end

Ответ 1

На принимающей стороне Vagrant ничего не делает. Насколько я знаю, Vagrant никогда не касается конфигурации сети хоста.

На гостевой стороне текущий поставщик реализует логику конфигурации сети. Вот что делает провайдер VirtualBox:

https://github.com/mitchellh/vagrant/blob/master/plugins/providers/virtualbox/action/network.rb

В основном реализация состоит из двух последовательных шагов:

  1. Включите все необходимые сетевые адаптеры на виртуальной машине, используя команды гипервизора;
  2. Сконфигурируйте IP-адрес в гостевой ОС, используя гостевые возможности, в этом случае возможность configure_networks.

В качестве примера здесь является реализация для configure_networks возможности на Debian на базе Linux.

Ответ 2

В Vagrant 1.0.x он называется Сеть только для хостов, это функция VirtualBox, которая позволяет нескольким виртуальным машинам взаимодействовать друг с другом через сети через хост-машину. Сеть, созданная сетью только для хоста, является частной для задействованных виртуальных машин и главной машины. Внешний мир не может присоединиться к этой сети.

За сценой VirtualBox создает новый виртуальный интерфейс ( "loopback" ) на хосте, который появляется рядом с существующими сетевыми интерфейсами.

VirtualBox даже предоставляет встроенный DHCP-сервер для сети только для хоста (Private Networking), если статические IP-адреса не назначены. Его можно настроить в меню "Параметры файла - Сеть".

Смотрите еще at = >