LINUX.ORG.RU

VirtualBox доступ из локальной сети во вне через виртуальный шлюз

 


1

1

Здравствуйте. Расклад такой. В Virtualbox есть 2 виртуальной машины, соединённых в одну локальную сеть, причём одна из машин(шлюз) имеет условно прямой доступ в интернет, а вторая вынуждена выходить в интернет через первый шлюз. Так что все пакеты будут идти через шлюз.

Рыскал по просторам интернета, везде либо просто соединяют в одну локалку без намёка на внешний доступ, либо одну единственную гостевую ось выводят в интернет без связи с чем-либо ещё. Видимо я не умею гуглить.

Пробовал на первую машину ставить 2 интерфейса, первый «сетевой мост», второй «внутренняя сеть»; на вторую машину только один интерфейс «внутренняя сеть». Пробовал комбинировать с заменой интерфейса «сетевого моста» на «NAT», или/и «внутренняя сеть» на «виртуальный адаптер». Всем интерфейсам присвоил правильные айпишники и выходные шлюзы, например внутри локалки обе машины пингуют друг на друга отлично, у шлюза также есть доступ в интернет, а вот внутренняя машина как не имела доступ во вне через шлюз, так и не имеет. Что делать? Как сконфигурировать сеть?

WAN <- x.x.x.x Физ роутер 192.168.0.1 <-> 192.168.0.4 Физ комп ?.?.?.? <-> 192.168.0.7 Вирт.Шлюз 192.168.2.1 <-> 192.168.2.2 Вирт.внутр Топология условная

Не предлагайте пожалуйста сделать шлюз физическим. Мне нужны 2 гостевые оси, чтобы на шлюз фаервол поставить, вайршарк итд.

Может быть мне стоит настроить что-то внутри шлюза ещё, может быть блокируются проходящие пакеты, хотя я iptables не правил.

На ВМ1 включаешь маршрутизацию и делаешь две сетевых карты - Nat Network (192.168.56.3) + Host-Only network (192.168.100.2) и включаешь MASQUERADE для src 192.168.100.0/24

На ВМ2 одна сетевая карта - Host-Only network (192.168.100.3) и объявляешь default gateway 192.168.100.2

Nastishka ★★★★★ ()
Последнее исправление: Nastishka (всего исправлений: 1)

например внутри локалки обе машины пингуют друг на друга отлично, у шлюза также есть доступ в интернет, а вот внутренняя машина как не имела доступ во вне через шлюз, так и не имеет. Что делать? Как сконфигурировать сеть?

Это значит что вся нужная связность на уровне пакетов есть. Теперь поставь везде tcpdump и смотри куда идут (или не идут) те пакеты, которые должны идти транзитом сквозь шлюз. Например, на обоих виртуалках и на их хосте запусти `tcpdump -i any -n icmp` и на второй виртуалке запусти ещё пинг какого-нить узла из инета (по ip-адресу, без домена). Если окажется что пинг идёт - следующий шаг, tcpdump для udp и пробуй `nslookup ya.ru`. Каждый пакет, вышедший с запертой виртуалки, должен быть виден: 1) в tcpdump запертой виртуалки 2) в tcpdump шлюза как входящий на внутреннюю сетевуху 3) в tcpdump шлюза (второй раз) уже как исходящий с внешней сетевухи

А ну и да, может оказаться что транзитные пакеты на шлюзе у тебя запрещены и надо разрешить (как это в линуксе делается не знаю). Тогда пакеты 1 2 будут а 3 нет.

firkax ()
Последнее исправление: firkax (всего исправлений: 1)

Всем спасибо за помощь. Оказалось, что в файле sysctl надо было установить net.ipv4.ip_forward=1, а также включить masquerade на выходной порт - в моём случае это были 2 необходимых, но не факт, что достаточных условий.

atmosphere ()