Как-то в моей маленькой домашней локальной лаборатории потребовалось изолированной сети, в которой присутствуют только виртуальные машины только с адаптерами внутреней сети, дать доступ в Интернет, не добавляя адаптеров типа NAT. Сказано - сделано.
Все действия я провожу с машинами в VirtualBox. Мне потребуется создать еще 1 машину - роутер, которая будет являться шлюзом для других VM и будет предоставлять доступ в Интернет.
В качестве роутера будет выступать виртуальная машинка на борту у которой минимальный Debian.
Создаем новую виртуальку, для которой назначаем 2 сетевых интерфейса первый тип подключения NAT, а второй с типом подключения внутренняя сеть.
Следующим этопом, на котором я не буду останавливаться - установка Debian. А дальше переходим к настройка сети.
Выполним команду:
Мы увидим все имеющиеся сетевые интерфейсы, у меня это enp0s3 и enp0s8. Первый это моя сеть с интернетом, а второй является внутренней сетью. Дальше переходим к настройке сетевых интерфейсов. отредактировав файл interfaces выполним команду:
и выполним настроку второго интерфейса, дописав к файлу его конфигурацию
Далее можно поднять второй интерфейс и попинговать адрес 172.30.0.1 c другой машины в этой сети.
Следующим этапом нужно разрешить маршрутизацию и настроить правила iptables. Разрешаем маршрутизацию отредактировав файл sysclt.conf выполнив команду:
раскоментируем строку net.ipv4.ip_forward = 1.
Далее настроим iptables для пересылки пакетов:
Если указать в качестве шлюза на других виртуальных машинах ip адрес второго интерфейса этого маршрутизатора, а в качестве DNS ip Google DNS 8.8.8.8, то можно убедиться что на клиентах уже интернет появился.
Осталось зафиксировать в автозагрузке правила iptables (подробно описано в статье Debian: автозагрузка iptables и ip6tables) и можно пожимать свои плоды.
Собственно это все что я хотел рассказать.