Допустим, виртуальная машина подключена к сети через виртуальный адаптер, созданный хостом Virtualbox. Также вот IP-адреса:
192.168.1.1 шлюз
192.168.1.2 Хост-машина, на которой работает Virtualbox
192.168.1.3 Виртуальная машина внутри Virtualbox
192.168.1.3/VM отправляет пакет для начала рукопожатия (шаг 1) с какого-то удаленного веб-сервера в Интернете. Он должен пройти через физический адаптер хост-машины. (Шаг 2) Пакет с другого конца возвращается. Как шлюз узнает, что нужно отправить его на хост-машину, даже если у хост-машины другой IP-адрес? Как сетевая карта хост-машины узнает, что "перехватывает" пакет и отправляет его на гостевую виртуальную машину?
Это похоже на то, что вы хотите отправить сообщение Алисе (виртуальной машине), но Алиса "отстает" от Боба (хост-машина, на которой работает Virtualbox, "виртуализирует" Алису), поэтому вы отправляете его Бобу и доверяете ему, чтобы он отправил Алисе или что делать вы делаете (как шлюз)? Все, что достигает Алисы, должно пройти через Боба, верно?
Я предполагаю, что у маршрутизатора есть таблица маршрутизации, и он знает, что 192.168.1.2 и .3 находятся на одном интерфейсе (один и тот же физический порт на портах маршрутизатора, который я предполагаю), и он отправляет его туда. Оттуда плата NIC на хост-машине (которая работает на уровне 2, поэтому игнорирует IP-адрес) просматривает MAC-адреса пакета и просто знает, как отправить его на виртуальный хост.
Опять же, я надеюсь, что это имеет смысл! Извиняется, если это не так. Я проясню что-нибудь. Я признаю, что мои знания в области сети немного ржавые. Спасибо.