Когда создавал новую виртуальную машину в Virtualbox (Ubuntu 12.04 LTS) решил спрятать его за NAT в виртуальной сети, но таким образом чтобы иметь возможность достучаться до него напрямую через SSH.
Для этой цели поднял виртуальный сетевой интерфейс, настроил NAT, настроил раздачу айпи и обработку DNS-запросов создаваемой виртуальной сети:
- Устанавливаем пакет
uml-utilities
с утилитой для создания интерфейсаtap0
$ sudo apt-get install uml-utilities
В файл «/etc/network/interfaces
» добавляем описание нового интерфейса
auto tap0 iface tap0 inet static address 10.0.55.1 netmask 255.255.255.0 pre-up /usr/sbin/tunctl -t tap0 post-down /usr/sbin/tunctl -d tap0
Поднимаем новый интерфейс
$ sudo ifup tap0
- Теперь настраиваем NAT. Для этой цели используем идущее с системой средство настройки брандмауэра
ufw
. Редактируем файл «/etc/ufw/before.rules
» и добавляем в самом начале строки
*nat :POSTROUTING ACCEPT [0:0] -F POSTROUTING -A POSTROUTING -s 10.0.55.0/24 -j MASQUERADE COMMIT
Редактируем файл «/etc/default/ufw
» и меняем следующие параметрыDEFAULT_INPUT_POLICY="ACCEPT" DEFAULT_OUTPUT_POLICY="ACCEPT" DEFAULT_FORWARD_POLICY="ACCEPT"
Запускаемufw
$ sudo ufw enable
- Чтобы каждый раз вручную не прописывать айпишники днс-сервера вновь созданным виртуальным машинам устанавливаем
dnsmasq
$ sudo apt-get install dnsmasq
В файл конфигурации «/etc/dnsmasq.conf
» добавляем следующие строки# Слушаем порты только на указанном интерфейсе bind-interfaces # Слушаем на созданном нами интерфейсе interface=tap0 # Не слушаем на локальном интерфейсе. Там как правило слушает запущенный Netwok Manager процесс dnsmasq except-interface=lo # Диапазон раздаваемых по DHCP адресов виртуальным машинам. dhcp-range=10.0.55.10,10.0.55.200,72h # Домен создаваемой сети domain=virtual
Запускаемdnsmasq
с новыми настройками$ sudo service dnsmasq stop $ sudo service dnsmasq start