Part 1. Инструмент ipcalc

1.1. Сети и маски

  1. Определить адрес сети 192.167.38.54/13.

На скриншоте показан результат работы программы ipcalc. Адрес сети указан в строчке Network: 192.160.0.0/13.

ipcalc1

  1. Перевод маски 255.255.255.0 в префиксную и двоичную запись, /15 в обычную и двоичную, 11111111.11111111.11111111.11110000 в обычную и префиксную.

    • 255.255.255.0 в префиксную и двоичную запись ipcalc
    • /15 в обычную и двоичную ipcalc1
    • 11111111.11111111.11111111.11110000 в обычную и префиксную: 11111111.11111111.11111111.11110000 = 28 11111111.11111111.11111111.11110000 = 255.255.255.240 ipcalc1
  2. Минимальный и максимальный хост в сети 12.167.38.4 при масках: /8, 11111111.11111111.00000000.00000000, 255.255.254.0 и /4

    • маска /8 ipcalc1
    • маска 11111111.11111111.00000000.00000000 ipcalc1
    • маска 255.255.254.0 ipcalc1
    • маска /4 ipcalc1

1.2. localhost

  • Для localhost зарезервирован диапазон ip 127.0.0.1 - 127.255.255.254. Поэтому обратиться к приложению, работающем на localhost с IP 194.34.23.100 и 128.0.0.1 мы не сможем, тогда как к IP 127.0.0.2 и 127.1.0.1 сможем. ipcalc1 ipcalc1

1.3. Диапазоны и сегменты сетей

1) Частные и приватные IP:

Класс Частные адреса Публичные адреса
A 10.0.0.0 — 10.255.255.255 1.0.0.0 - 9.255.255.255
11.0.0.0 - 126.255.255.255
B 172.16.0.0 — 172.31.255.255 128.0.0.0 - 172.15.255.255
172.32.0.0 - 191.255.255.255
C 192.168.0.0 — 192.168.255.255 192.0.0.0 - 192.167.255.255
192.169.0.0 - 223.255.255.255

В выводе команды ipcalc обращаем внимание на строку Hosts/Net, где должно быть указано Private Internet если IP частный.

  • Определить и записать в отчёт какие из перечисленных IP можно использовать в качестве публичных, а какие только в качестве частных:
  1. 10.0.0.45/8, Частный
  2. 134.43.0.2/16, Публичный
  3. 192.168.4.2/16, Частный
  4. 172.20.250.4/12, Частный
  5. 172.0.2.1/12, Публичный
  6. 192.172.0.1/12, Частный
  7. 172.68.0.2/12, Публичный
  8. 172.16.255.255/12, Частный
  9. 10.10.10.10/8, Частный
  10. 192.169.168.1/16 Публичный
  • В выводе команды ipcalc обращаем внимание на строку Hosts/Net, где должно быть указано Private Internet если IP частный.

ipcalc1 ipcalc1 ipcalc1

  • Шлюзы, возможные у сети 10.10.0.0/18:

ipcalc1

  1. 10.10.0.2
  2. 10.10.10.10
  3. 10.10.1.255

Part 2. Статическая маршрутизация между двумя машинами

  • Вывод команды ip a.

ip_a

  • Изменение сетевого интерфейса. На первой машине заданый следующий адрес и маска: ws1 - 192.168.100.10, маска /16.

ws1

  • На второй машине: ws2 - 172.24.116.8, маска /12

ws2

  • Выполнение команды netplan apply для перезапуска сервиса сети

ws1

2.1. Добавление статического маршрута вручную

  • Использование команды ip r add для добавления статического маршрута.

ip_route ip_route

  • ping 172.24.116.8 с ws1

ping

  • ping 192.168.100.10 c ws2

ping

2.2. Добавление статического маршрута с сохранением

  • После презапуска машин добавили статический маршруты от одной машины до другой в файле etc/netplan/00-installer-config.yaml

yaml yaml

  • Пропинговали соединения между машинами.

ping ping

Part 3. Утилита iperf3

3.1. Скорость соединения

  • 8 Mbps = 1 MB/s
  • 100 MB/s = 819200 Kbps
  • 1 Gbps = 1024 Mbps

3.2. Утилита iperf3

  • Ниже на скриншотах показана работа утилиты iperf3. Машина ws1 бала сервером, а клиентом была машина ws2. тест выполняется 10 секунд. В колонке bitrate можно посмотреть пропускную способность сети. Было предано 5.50 Мегабайт со сокростью 563 Мегабайт в секунду.

iperf

iperf

Part 4. Сетевой экран

  • Cодержание файла /etc/firewall.sh ws1

iptables

  • Cодержание файла /etc/firewall.sh ws2

iptables

  • Запуск файлов на обеих машинах командами chmod +x /etc/firewall.sh и /etc/firewall.sh

В iptables пакет попав в цепочку последовтельно проходит правила в порадке их пречесления до превого срабатывания. Поэтому для ws1 сработает правило DROP и пакет покинет цепочку, а для ws2 сработает правило ACCEPT.

chmod chmod

  • С помощью команды ping мы выяснили, что хост ws1 не пингуется, командой nmap проверили, что хост запущен.

nmap nmap

Part 5. Статическая маршрутизация сети

5.1. Настройка адресов машин

  • Cодержание файла etc/netplan/00-installer-config.yaml ws11

conf

  • Cодержание файла etc/netplan/00-installer-config.yaml ws21

conf

  • Cодержание файла etc/netplan/00-installer-config.yaml ws22

conf

  • Cодержание файла etc/netplan/00-installer-config.yaml r1

conf

  • Cодержание файла etc/netplan/00-installer-config.yaml r2

conf

  • Применим изменения с помощью команды sudo netplan apply

  • Теперь проверим, что адреса машин заданы верно с помощью команды ip -4 a

  • Вывод комнады ip -4 a для ws11

ip_a

  • Вывод комнады ip -4 a для ws21

ip_a

  • Вывод комнады ip -4 a для ws22

ip_a

  • Вывод комнады ip -4 a для r1

ip_a

  • Вывод комнады ip -4 a для r2

ip_a

  • Пинг с ws21 до ws22

ping

  • Пинг с ws11 до r1

ping

5.2. Включение переадресации IP-адресов.

  • Включение переадресации IP, командой
$ sysctl -w net.ipv4.ip_forward=1

sysctl sysctl

  • Содержание файла /etc/sysctl.conf на r1.

sysctl

  • Содержание файла /etc/sysctl.conf на r2.

sysctl

5.3. Установка маршрута по-умолчанию

  • Содержание файла etc/netplan/00-installer-config.yaml после добавления маршрута по-умолчанию для трех рабочих станций ws11, ws21, ws22.

default default default

  • Использование и вывод команды ip r для трех рабочих станций ws11, ws21, ws22.

ip_r ip_r ip_r

  • Пинг с ws11 роутер r2 и вывод команды tcpdump -tn -i eth0

tcpdump tcpdump

5.4. Добавление статических маршрутов

  • Cодержание изменённого файла etc/netplan/00-installer-config.yaml для r1 и r2

route route

  • Таблицы с маршрутами на роутерах r1 и r2

route route

  • Команды на ws11 ip r list 10.10.0.0/[маска сети] и ip r list 0.0.0.0/0

route

Для адреса 10.10.0.0/18 был выбран маршрут, отличный от 0.0.0.0/0, потому что маска /18 описывает маршрут к сети точнее, в отличие от маски /0

5.5. Построение списка маршрутизаторов

  • Запуск на r1 команду дампа tcpdump -tnv -i eth0

traceroute

  • Cписок маршрутизаторов на пути от ws11 до ws21, полученный при помощи утилиты traceroute

traceroute

Принцип работы traceroute Для определения промежуточных маршрутизаторов traceroute отправляет целевому узлу серию ICMP-пакетов, с каждым шагом увеличивая значение поля TTL («время жизни») на 1. Это поле обычно указывает максимальное количество маршрутизаторов, которое может быть пройдено пакетом. Первая серия пакетов отправляется с TTL, равным 1, и поэтому первый же маршрутизатор возвращает обратно ICMP-сообщение «time exceeded in transit», указывающее на невозможность доставки данных. Traceroute фиксирует адрес маршрутизатора, а также время между отправкой пакета и получением ответа (эти сведения выводятся на монитор компьютера). Затем traceroute повторяет отправку серии пакетов, но уже с TTL, равным 2, что заставляет первый маршрутизатор уменьшить TTL пакетов на единицу и направить их ко второму маршрутизатору. Второй маршрутизатор, получив пакеты с TTL=1, так же возвращает «time exceeded in transit».

Процесс повторяется до тех пор, пока пакет не достигнет целевого узла. При получении ответа от этого узла процесс трассировки считается завершённым.

5.6. Использование протокола ICMP при маршрутизации

  • Вывод команды ping -c 1 10.30.0.111 на машине ws11

icmp

  • Вывод команды tcpdump -n -i eth0 icmp на машине r1

icmp

Part 6. Динамическая настройка IP с помощью DHCP

  • Изменение файла /etc/dhcp/dhcpd.conf и resolv.conf для r2

dhcp dhcp

  • Перезагрузка службы DHCP при помощи команды systemctl restart isc-dhcp-server

dhcp

  • После перезагрузки машины ws21 проверяем получение адреса

dhcp

  • Результат пинга машины ws22 с ws21

dhcp

  • Укажем MAC адрес у ws11, для этого в настройках виртуальной машины в нужном адаптере меняем MAC и в etc/netplan/00-installer-config.yaml добавим строки:

    macaddress: 10:10:10:10:10:BA
    dhcp4: true   
    

dhcp

  • Изменение файла /etc/dhcp/dhcpd.conf и resolv.conf для машины r1

dhcp dhcp

  • Перезагрузка службы DHCP при помощи команды
$ systemctl restart isc-dhcp-server

dhcp

  • После перезагрузки машины ws11 проверяем получение адреса

dhcp

Обновление адреса для машины ws21 при помощи запроса его у dhcp сервера. Сначала освобождаем текущий ip-адрес командой sudo dhclient -r eth0, а потом при помощи команды sudo dhclient eth0 получаем новый

  • Ip-адрес машины ws21 до обновления

dhcp

  • Ip-адрес машины ws21 после обновления

dhcp

Part 7. NAT

  • Изменение файла /etc/apache2/ports.conf на машинах ws22 и r1

nat nat

  • Вызов команды service apache2 start на машинах ws22 и r1

nat

  • Добавляем в фаервол /etc/firewall.sh, для r2 пишем следующие правила:

    1. Удаление правил в таблице filter - iptables -F

    2. Удаление правил в таблице "NAT" - iptables -F -t nat

    3. Отбрасывать все маршрутизируемые пакеты - iptables --policy FORWARD DROP

  • Запустим файл также, как в Part.4

$ sudo chmod +x /etc/firewall.sh
$ /etc/firewall.sh
  • Проверка соединения между ws22 и r1. Соединение не проходит.

nat

  • Проверка соединения между ws22 и r1 после добавления правила на разрешение маршрутизации пакетов протокола ICMP. Соединение проходит.
# Разрешаем пропуск сквозных пакетов
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -o eth0 -j ACCEPT

-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

nat

  • Содержание файла firewall.sh

nat

  • Проверка соединения машины ws22 с r1

nat

  • Проверка соединения машины r1 с ws22

nat

Part 8. Дополнительно. Знакомство с SSH Tunnels

  • Запустить веб-сервер Apache на ws22 только на localhost (изменения в файле /etc/apache2/ports.conf)

ssh

  • Выполнение Local TCP forwarding с машины ws21 до ws22 командой
$ ssh -L 8080:127.0.0.1:80 student@10.20.0.20

ssh

  • Когда "тунель открыт" на ws21, проверяем соединение с веб-сервером

ssh

  • Пробрасываем удаленное соединение Remote TCP forwarding c ws11 до ws22, чтобы получить доступ к веб-серверу на ws22 с ws11 командой
$ sudo ssh -R 8080:127.0.0.1:80 student@10.10.0.2

ssh

  • Когда "тунель открыт", на ws11 проверяем соединение с веб-сервером Apache на ws22

ssh