Инструменты пользователя

Инструменты сайта


wiki:freebsd:virtualbox-cfg

Конфигурация VBox

Настройка сети

После установки VirtualBox и web-морды к нему выполняем настройки, чтобы обеспечить удобство использования этой связки. Первым делом создаем виртуальную сеть, в которой будут работать виртуальные машины. VBox из коробки предоставляет возможность создать сеть vboxnet и даже может выдавать в ней IP адреса. Первое нам пригодится, а вот второе мы будем выполнять за него самостоятельно, использую для этого dnsmasq

Для этого заходим в Файл-Настройки-Сеть-Виртуальные сети хоста и создаем новую сеть. У меня это vboxnet0

Нужно снять птичку с включить DHCP-сервер, выключить его.

Установка и настройка dnsmqsq

Устанавливаем dnsmasq

# устанавливаем dnsmasq
cd /usr/ports/dns/dnsmasq
make install clean
sysrc dnsmasq_enable="YES"
 
# 
echo 'conf-dir=/usr/local/etc/dnsmasq.d' >> /usr/local/etc/dnsmasq.conf
mkdir /usr/local/etc/dnsmasq.d

Создаем файл конфигурации dnsmasq

nano /usr/local/etc/dnsmasq.d/vbox.conf

vbox.conf
dhcp-range=set:vboxnet0, 192.168.56.2, 192.168.56.50, 255.255.255.0, 10m
dhcp-option=tag:vboxnet0, option:netmask, 255.255.255.0
dhcp-option=tag:vboxnet0, option:router, 192.168.56.1
dhcp-option=tag:vboxnet0, option:dns-server, 192.168.56.1
dhcp-option=tag:vboxnet0, option:ntp-server, 192.168.56.1
log-facility=/var/log/dnsmasq.log
interface=vboxnet0
 
# CloudFlare
server=1.1.1.1
server=1.0.0.1
# OpenDNS
server=208.67.222.222
server=208.67.220.220
# Google
server=8.8.8.8
server=8.8.4.4
 
# Настройки VM
dhcp-host=08:00:27:c0:12:1e, app, 192.168.56.10, 30d,set:vboxnet0
address=/app/192.168.56.10
address=/app.local/192.168.56.10

В данном конфиге нас интересуют только последние три строки. В первой мы указываем MAC виртуалки и IP, который хотим ей присвоить. После создания VM нужно вписать сюда по аналогии. Две другие строки - для задания hostname виртуалке, которое будет доступно в данной локальной сети. Например: mysql, app, redis и т.п.

Проверяем работу dnsmasq

lsof -i :67 -P
COMMAND  PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
dnsmasq 2115 nobody    4u  IPv4 0xfffff801036345d0      0t0  UDP *:67

Обращаю пристальное внимание на то, что по-умолчанию VBox создает виртуалки за NAT, который он организовывает сам. Поскольку у нас собственная локальная сеть на vboxnet0, то создавать свои виртуалки мы будем на ней и NAT нам нужно теперь организовать самостоятельно.

Использование FreeBSD в качестве шлюза с ipfw NAT

Начнем использовать ipfw kernel NAT, который нужно включить во FreeBSD. Действуем внимательно, так как при ошибках в конфиге можно легко потерять доступ к серверу по SSH

Включаем Русский язык во FreeBSD

# Включаем Русский язык
 
sysrc keymap="ru"
 
tee -a /boot/loader.conf << END
 
# RUS
kern.vty=vt
#--
END
 
tee -a /etc/profile << END
 
# RUS
LANG=ru_RU.UTF-8
export LANG
MM_CHARSET=UTF-8
export MM_CHARSET
export EDITOR=/usr/local/bin/nano
#--
END

Включаем ipfw + NAT + шлюз во FreeBSD

tee -a /boot/loader.conf << END
 
# IPFW
ipfw_load="YES"
ipfw_nat_load="YES"
firewall_logif="YES"
#--
END
 
# включаем FreeBSD, как шлюз - разрешаем ходить трафику между интерфейсами
sysrc gateway_enable="YES"

Настраиваем ipfw

/etc/ipfw.script
#!/bin/sh
 
cmd="/sbin/ipfw -q"
$cmd -f flush
 
$cmd enable one_pass
$cmd add allow all from any to any via lo0
$cmd add deny all from any to 127.0.0.0/8
$cmd add deny all from 127.0.0.0/8 to any
$cmd add deny all from any to any frag
 
$cmd add check-state
$cmd add allow tcp from any to any established
$cmd add allow all from any to any out keep-state
 
# ssh
$cmd table admin create missing
$cmd table admin add 46.160.0.0/19
$cmd add allow ip from "table(admin)" to me 22
 
# HTTP && HTTPS
$cmd add allow tcp from any to me 443 in limit src-addr 50
$cmd add allow tcp from any to me 80 in limit src-addr 20
 
# Mail
$cmd add allow tcp from me to any 25 out
$cmd add allow tcp from any 25 to me in
 
# Ping
$cmd add allow icmp from "table(admin)" to me in icmptype 8
$cmd add allow icmp from me to "table(admin)" out icmptype 0,8
 
$cmd add deny log all from any to any
sysrc firewall_script="/etc/ipfw.script"
sysrc firewall_enable="yes"
wiki/freebsd/virtualbox-cfg.txt · Последнее изменение: 2024/03/14 18:07 — Diman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki