Моделирование сетевой инфраструктуры с помощью VirtualBox
MoNeTec-2022, 24 октября в 10:30 - 13:45
Intro
О проведении мастер-класса
Цель:
VirtualBox как инструмент
- Методика преподавания (теория → практика)!
Принципы:
- Принцип следования (всё делать)
Точки сбора (догонять)
- Прямое участие (не остановил — отстал, возможно, навсегда)
- Принцип достаточного знания (TCP/IP и немного командной строки, иначе завязнем)
Задача:
- дойти как можно дальше как можно более общим составом за фиксированное время.
VirtualBox
VirtualBox
- Импорт образа
- Свойства образа:
- Четыре сетевых интерфейса
COM->TCP Выключить
- Клонирование образа
Связанный клон (не полный)
Перегенерация MAC-адресов
- Запуск образа
Консоль и пароль root
Типы подключения сетевых интерфейсов в VB
ip l, понятие сетевого интерфейса
Тип NAT
Оперативная настройка сети с помощью dhcp-клиента dhcpcd eth0
ip addr и ip route
- Проверка работоспособности
ip a
/etc/resolv.conf
# netcat ya.ru 80 GET / HTTP/1.0 Host: ya.ru
Тип внутренней сети
- Останавливаем клон
- Делаем второй клон
Подсоединяем eth1 на обоих к сети intnet, втыкаем кабель
- Запускаем оба
Настраиваем ip на eth1
ip link set dev устройство up
ip addr add dev устройство адрес/маска
Что там в ip route?
Проверка: ping друг друга
sethostname, чтобы не запутаться
Статическая маршрутизация
Базовая лекция Выключим всё
Добавим третий клон, router подключённый к двум внутренним сетям
- Переподключим второй клон ко второй сети вместо первой:
Клон2 → net2 → router → net1 → клон1
Запустим все три, на router не забыть sethostname
Настройка маршрутов на router
Настройка пересылки пакетов на router
router:~# sysctl net.ipv4.ip_forward=1
- Настройка маршрута на соседнюю локальную сеть на обоих клонах
… [Route] Gateway=10.1.0.2 Destination=10.2.0.0/16
- Проверка:
ping друг друга
tcpdump на router-е
Замечание: ip neigh
«Выход в Интернет»
- Все три
Маршрут по умолчанию и resolv.conf на клоне2
Использование текстовых редакторов — vim, nano, mcedit
[root@base ~]# cat /etc/resolv.conf nameserver 8.8.8.8
- Настройка пересылки пакетов на первом клоне
- Всё равно не работает, смотрим tcpdump
Особенность 10.*
Принципы работы NAT
Подмена адресов туда — а обратно?
- Динамическая таблица сеансов (TCP, icmp, что под руку подвернётся)
Простейший NAT через iptables на клоне1
iptables -t nat -A POSTROUTING -o интерфейс -j MASQUERADE
- Проверка:
netcat ya.ru 80 с клона2
conntrack -L на клоне1
Перманентная настройка сети
Базовая лекция Всё выключили, все настройки пропали!
- Включили все три
Поехали
Настройка интерфейсов с помощью systemd.network
- Адрес
- Маршрутизатор по умолчанию
- Маршруты на соседние локальные сети
- Настройка пересылки пакетов на клон1 и router
- Например:
[root@base ~]# cat /etc/systemd/network/50-vbox.network [Match] Name=eth0 [Network] DHCP=ipv4 [root@base ~]# cat /etc/systemd/network/70-intnet.network [Match] Name=eth1 [Network] Address=10.1.0.1/24 IPForward=ipv4 [Route] Gateway=10.1.0.2 Destination=10.2.0.0/16
systemctl restart systemd-networkd
- Проверка: ping клон2 → клон1
Настройка DNS (руками /etc/resolv.conf)
- Настройка NAT
Дописываем правило в /etc/nftables/nftables.nft
table ip do_masq { chain do_postmasq { type nat hook postrouting priority srcnat; policy accept; ip saddr 10.2.0.0/24 masquerade } }
Надо запустить nftables: systemctl enable --now nftables.service
Проверка 1: netcat ya.ru 80 с клона2
- Перезагрузим всё!
Проверка 2: netcat ya.ru 80 с клона2
Если вдруг дошли досюда!
Другие темы с LecturesCMC/LinuxNetwork2022