Настройка сетей в Linux на виртуальных машинах.
-
Итак, начнём наше погружение в удивительный мир сетей со знакомства с IP адресами. А использовать для этого мы будем инструмент ipcalc.
== Задание ==
2) Перевод маски 255.255.255.0 в префиксную и двоичную запись, /15 в обычную и двоичную, 11111111.11111111.11111111.11110000 в обычную и префиксную
3) Минимальный и максимальный хост в сети 12.167.38.4 при масках: /8, 11111111.11111111.00000000.00000000, 255.255.254.0 и /4
Определи и запиши в отчёт, можно ли обратиться к приложению, работающему на localhost, со следующими IP: 194.34.23.100, 127.0.0.2, 127.1.0.1, 128.0.0.1
1) Какие из перечисленных IP можно использовать в качестве публичного, а какие только в качестве частных: 10.0.0.45, 134.43.0.2, 192.168.4.2, 172.20.250.4, 172.0.2.1, 192.172.0.1, 172.68.0.2, 172.16.255.255, 10.10.10.10, 192.169.168.1
2) Какие из перечисленных IP адресов шлюза возможны у сети 10.10.0.0/18: 10.0.0.1, 10.10.0.2, 10.10.10.10, 10.10.100.1, 10.10.1.255
-
Теперь разберёмся, как связать две машины, используя статическую маршрутизацию.
== Задание ==
- В отчёт помести скрин с вызовом и выводом использованной команды.
Опиши сетевой интерфейс, соответствующий внутренней сети, на обеих машинах и задать следующие адреса и маски: ws1 - 192.168.100.10, маска /16, ws2 - 172.24.116.8, маска /12
- В отчёт помести скрины с содержанием изменённого файла etc/netplan/00-installer-config.yaml для каждой машины.
- В отчёт помести скрин с вызовом и выводом использованной команды.
- В отчёт помести скрин с вызовом и выводом использованных команд.
Добавь статический маршрут от одной машины до другой с помощью файла etc/netplan/00-installer-config.yaml
- В отчёт помести скрин с содержанием изменённого файла etc/netplan/00-installer-config.yaml.
- В отчёт помести скрин с вызовом и выводом использованной команды.
-
Теперь, когда мы связали две машины, ответь мне: что самое важное при передаче информации между машинами?
-
Скорость соединения?
-
Всё верно. Будем её проверять с помощью утилиты iperf3.
== Задание ==
В данном задании используются виртуальные машины ws1 и ws2 из Части 2
- В отчёт помести скрины с вызовом и выводом использованных команд.
-
После соединения машин перед нами стоит следующая задача: контролировать информацию, проходящую по соединению. Для этого используются сетевые экраны.
== Задание ==
В данном задании используются виртуальные машины ws1 и ws2 из Части 2
#!/bin/sh
# Удаление всех правил в таблице "filter" (по-умолчанию).
iptables -F
iptables -X
1) На ws1 примени стратегию, когда в начале пишется запрещающее правило, а в конце пишется разрешающее правило (это касается пунктов 4 и 5)
2) На ws2 примени стратегию, когда в начале пишется разрешающее правило, а в конце пишется запрещающее правило (это касается пунктов 4 и 5)
- В отчёт помести скрины с содержанием файла /etc/firewall для каждой машины.
- В отчёт помести скрины с запуском обоих файлов.
- В отчёте опиши разницу между стратегиями, применёнными в первом и втором файлах.
Командой ping найди машину, которая не «пингуется», после чего утилитой nmap покажи, что хост машины запущен
Проверка: в выводе nmap должно быть сказано: Host is up
- В отчёт помести скрины с вызовом и выводом использованных команд ping и nmap.
-
Пока что мы соединяли всего две машины, но теперь пришло время для статической маршрутизации целой сети.
== Задание ==
- В отчёт помести скрины с содержанием файла etc/netplan/00-installer-config.yaml для каждой машины.
Перезапусти сервис сети. Если ошибок нет, то командой ip -4 a
проверь, что адрес машины задан верно. Также пропингуй ws22 с ws21. Аналогично пропингуй r1 с ws11.
- В отчёт помести скрины с вызовом и выводом использованных команд.
sysctl -w net.ipv4.ip_forward=1
При таком подходе переадресация не будет работать после перезагрузки системы.
- В отчёт помести скрин с вызовом и выводом использованной команды.
net.ipv4.ip_forward = 1
При использовании этого подхода, IP-переадресация включена на постоянной основе.
- В отчёт помести скрин с содержанием изменённого файла /etc/sysctl.conf.
Пример вывода команды ip r
после добавления шлюза:
default via 10.10.0.1 dev eth0
10.10.0.0/18 dev eth0 proto kernel scope link src 10.10.0.2
Настрой маршрут по-умолчанию (шлюз) для рабочих станций. Для этого добавь default
перед IP роутера в файле конфигураций
- В отчёт помести скрин с содержанием файла etc/netplan/00-installer-config.yaml.
- В отчёт помести скрин с вызовом и выводом использованной команды.
tcpdump -tn -i eth0
- В отчёт помести скрин с вызовом и выводом использованных команд.
Добавь в роутеры r1 и r2 статические маршруты в файле конфигураций. Пример для r1 маршрута в сетку 10.20.0.0/26:
# Добавь в конец описания сетевого интерфейса eth1:
- to: 10.20.0.0
via: 10.100.0.12
- В отчёт помести скрины с содержанием изменённого файла etc/netplan/00-installer-config.yaml для каждого роутера.
10.100.0.0/16 dev eth1 proto kernel scope link src 10.100.0.11
10.20.0.0/26 via 10.100.0.12 dev eth1
10.10.0.0/18 dev eth0 proto kernel scope link src 10.10.0.1
- В отчёт помести скрин с вызовом и выводом использованной команды.
ip r list 10.10.0.0/[маска сети]
и ip r list 0.0.0.0/0
- В отчёт помести скрин с вызовом и выводом использованных команд.
- В отчёте объясни, почему для адреса 10.10.0.0/[маска сети] был выбран маршрут, отличный от 0.0.0.0/0, хотя он попадает под маршрут по-умолчанию.
Пример вывода утилиты traceroute после добавления шлюза:
1 10.10.0.1 0 ms 1 ms 0 ms
2 10.100.0.12 1 ms 0 ms 1 ms
3 10.20.0.10 12 ms 1 ms 3 ms
tcpdump -tnv -i eth0
- В отчёт помести скрины с вызовом и выводом использованных команд (tcpdump и traceroute).
- В отчёте, опираясь на вывод, полученный из дампа на r1, объясни принцип работы построения пути при помощи traceroute.
tcpdump -n -i eth0 icmp
ping -c 1 10.30.0.111
- В отчёт помести скрин с вызовом и выводом использованных команд.
-
Следующим нашим шагом будет более подробное знакомство со службой DHCP, которую ты уже знаешь.
== Задание ==
В данном задании используются виртуальные машины из Части 5
1) Укажи адрес маршрутизатора по-умолчанию, DNS-сервер и адрес внутренней сети. Пример файла для r2:
subnet 10.100.0.0 netmask 255.255.0.0 {}
subnet 10.20.0.0 netmask 255.255.255.192
{
range 10.20.0.2 10.20.0.50;
option routers 10.20.0.1;
option domain-name-servers 10.20.0.1;
}
- В отчёт поместить скрины с содержанием изменённых файлов.
Перезагрузи службу DHCP командой systemctl restart isc-dhcp-server
. Машину ws21 перезагрузи при помощи reboot
и через ip a
покажи, что она получила адрес. Также пропингуй ws22 с ws21.
- В отчёт помести скрины с вызовом и выводом использованных команд.
Укажи MAC адрес у ws11, для этого в etc/netplan/00-installer-config.yaml надо добавить строки: macaddress: 10:10:10:10:10:BA
, dhcp4: true
- В отчёт помести скрин с содержанием изменённого файла etc/netplan/00-installer-config.yaml.
Для r1 настрой аналогично r2, но сделай выдачу адресов с жесткой привязкой к MAC-адресу (ws11). Проведи аналогичные тесты
- В отчёте этот пункт опиши аналогично настройке для r2.
- В отчёте помести скрины ip до и после обновления.
- В отчёте опиши, какими опциями DHCP сервера пользовался в данном пункте.
-
Ну и, наконец, в качестве вишенки на торте, я расскажу тебе про механизм преобразования адресов.
== Задание ==
В данном задании используются виртуальные машины из Части 5
В файле /etc/apache2/ports.conf на ws22 и r1 измени строку Listen 80
на Listen 0.0.0.0:80
, то есть сделай сервер Apache2 общедоступным
- В отчёт помести скрин с содержанием изменённого файла.
- В отчёт помести скрины с вызовом и выводом использованной команды.
При запуске файла с этими правилами, ws22 не должна «пинговаться» с r1
- В отчёт помести скрины с вызовом и выводом использованной команды.
При запуске файла с этими правилами, ws22 должна «пинговаться» с r1
- В отчёт помести скрины с вызовом и выводом использованной команды.
5) Включить SNAT, а именно маскирование всех локальных ip из локальной сети, находящейся за r2 (по обозначениям из Части 5 - сеть 10.20.0.0)
Совет: стоит подумать о маршрутизации внутренних пакетов, а также внешних пакетов с установленным соединением
6) Включить DNAT на 8080 порт машины r2 и добавить к веб-серверу Apache, запущенному на ws22, доступ извне сети
Совет: стоит учесть, что при попытке подключения возникнет новое tcp-соединение, предназначенное ws22 и 80 порту
- В отчёт помести скрин с содержанием изменённого файла.
Перед тестированием рекомендуется отключить сетевой интерфейс NAT (его наличие можно проверить командой ip a
) в VirtualBox, если он включен
telnet [адрес] [порт]
Проверь соединение по TCP для DNAT: для этого с r1 подключиться к серверу Apache на ws22 командой telnet
(обращаться по адресу r2 и порту 8080)
- В отчёт помести скрины с вызовом и выводом использованных команд.
p.s. Ни в коем случае не сохраняй дампы в гит!
-
Пожалуй, на этом у меня всё. Может у тебя появились ещё какие-то вопросы?
-
Да, я хотел спросить ещё об одной вещи. На работе я краем уха услышал, что в моей компании есть некие проекты по обучению. Подробностей я не знаю, но очень хочется взглянуть... Вдруг будет полезно.
-
Действительно интересно, но как в этом помогу тебе я?
-
Дело в том, что, чтобы добраться до этих проектов, нужно получить доступ к закрытой сети. Можешь посоветовать что-нибудь по этому поводу?
-
Ну ты, конечно, даёшь... Не уверен на все сто, что это поможет, но могу рассказать тебе про SSH Tunnels.
== Задание ==
В данном задании используются виртуальные машины из Части 5
Запусти веб-сервер Apache на ws22 только на localhost (то есть в файле /etc/apache2/ports.conf измени строку Listen 80
на Listen localhost:80
)
Воспользуйся Local TCP forwarding с ws21 до ws22, чтобы получить доступ к веб-серверу на ws22 с ws21
Воспользуйся Remote TCP forwarding c ws11 до ws22, чтобы получить доступ к веб-серверу на ws22 с ws11
Для проверки, сработало ли подключение в обоих предыдущих пунктах, перейди во второй терминал (например, клавишами Alt + F2) и выполни команду:
telnet 127.0.0.1 [локальный порт]
- В отчёте опиши команды, необходимые для выполнения этих четырёх пунктов, а также приложи скриншоты с их вызовом и выводом.