Краткий обзор инструментов

Самый базовый инструмент - ядро ОС. Оно предоставляет все необходимые системные вызовы, которые необходимы для выполнения операций по настройке сетевых интерфейсов. Понятно, что этот способ подходит только для ПО, а не для людей, поэтому рассмотрим инструменты, которые помогут нам в этом деле.

Первый базовый инструмент - ip. Мы уже рассматривали его, когда нам было необходимо посмотреть на текущую конфигурацию сети. Однако он также позволяет ей манипулировать.

Давайте решим следующую задачу: переведём все компьютеры в классе в сеть 10.223.0.0/16. Для её решения необходимо выполнить 2 шага:

  1. Добавить новый ip-адрес для каждого компьютера.
  2. Удалить старый ip-адрес.

Как это делать, можно узнать в руководстве на утилиту ip: man ip.

Как проверить, что сеть работает?

Для диагностики сетевых соединений обычно используется протокол ICMP: Internet Connection Management Protocol. С точки зрения пользователя нас будет интересовать только 1 вид запросов для данного протокола: ответить, если сообщение пришло.

С точки зрения пользователя вы будете использовать 2 приложения, которые уже реализуют данный протокол:

  • ping - посылает последовательность запросов на адрес и ждёт ответного оповещения.
  • traceroute - поговорим позже.

Приложению ping вы можете указать в качестве аргумента либо ip-адресс, с которым необходимо соединяться, либо DNS-имя компьютера.

ping 10.7.223.1 ping -c 10 10.7.223.15

Задача traceroute состоит в том, чтобы проследить маршрут по которому пакеты от моего компьютера доходят до других адресов. Работает traceroute благодаря тому, что у PING-пакетов можно выставить максимальное время “жизни”. Проходя через каждый маршрутизатор время “жизни” уменьшается на единицу. Когда у пакета заканчивается его время “жизни”, то на соответствующем маршрутизаторе отправляется сообщение запросившему о том, что “сломалась” передача.

Продолжение про ip

При удалении ip-адреса с сетевого интерфейса не были удалены данные из таблицы маршрутизации. Однако мы не можем воспользоваться этой информацией, т.к. она уже не актуальна.

Особенности ip:

  • зачастую уже доступна на всех серверах, на старых может быть использована утилита ifconfig
  • настройки сети сбрасываются после перезагрузки компьютера, т.е. необходимо применить доп. усилия, чтобы эти настройки были сохранены.

Как настроить сеть “надёжно”

  • Использовать инструменты, которые были разработаны в рамках данного дистрибутива.
  • Использовать инструменты, которые не зависят от желаний дистрибутива: NetworkManager.

NM - специальный демон, который оперирует в основном 2 понятиями: устройство и настройки соединения. Для каждого устройства содержится список настроек соединений, которые можно менять “на лету”. Этот инструмент обычно управляется с помощью графических клиентов и ориентирован на системы, в которых сетевая конфигурация часто меняется: ноутбуки и другие мобильные системы.

ifupdown

В Debian используется система ifupdown. Логика работы её в следующем:

  1. Есть конфигурационный файл, который описывает настройку сетевых интерфейсов.
  2. Инструменты ifupdown запускаются либо вручную, либо по наступлению события (система загрузилась). После запуска инструмент считывает информацит из конфигурационного файла и пытается настроить сетевой интерфейс в соответствии с данной конфигурацией.

Файл конфигурации ifupdown называется /etc/network/interfaces и по его содержимому доступна хорошая документация, man interfaces.

source - позволяет загрузить другие файлы конфигурации. auto ETH - обозначает, что настройку этого интерфейса необходимо производить при старте всей сетевой подсистемы. allow-hotplug ETH- сетевой интерфейс должен быть настроен в тот момент, когда физический контакт установлен. iface - блоки конфигурации конкретных сетевых интерфейсов.

iface lo inet loopback - настраиваем сетевой интерфейс lo с помощью ipv4 адреса как loopback интерфейс.

iface enp2s0 inet dhcp - настраиваем сетевой интерфейс enp2s0 с помощью DHCP.

iface enp2s0 inet static - настраиваем статический сетевой адрес.

Инструмент ifupdown предлагает 2 утилиты:

  • ifup enp2s0
  • ifdown enp2s0

ПРАВИЛЬНЫЙ способ работы с ifupdown:

  1. Убрать текущие настройки с помощью ifdown.
  2. Исправить конфигурационный файл как сейчас необходимо.
  3. Выставить новые настройки.

Вы можете 1 сетевому интерфейсу назначить несколько конфигураций, которые будут одновременно применены. Однако! Только у одной конфигурации должен быть выставлен gateway.

Настройка компьютера в режим маршрутизатора

По умолчанию комьютеры не работают в режиме маршрутизатора, т.е. они будут отбрасывать пакеты, которые идут “через” них в другие сети. Давайте проверим это утверждение.

Сделаем так, чтобы ВАШ компьютер считал компьютер справа маршрутизатором в соседнюю сеть. Для этого необходимо добавить правило в таблицу маршртизации. Для управления этой таблицей рекомендуется использовать утилиту ip и её команду route.

Для добавленя пути используйте следующий подход:

ip route add [адресс сети] via [ip-адресс компьютера]

Рассмотрим, для примера компьютер №2. В нём настройка сети между 3 и 4 компьютером будет выглядеть следующим образом:

ip route add 192.168.30.0/24 via 192.168.20.3

  • 192.168.30.0/24 - сеть между 3 и 4 компьютером
  • 192.168.20.3 - ip-адрес 3 компьютера в сети между 3 и 2 компьютерами.

После этого можно будет попытаться послать пакеты с 2 компьютера на ip-адреса 3 и 4 компьютеров, но они не должны пройти.

Задание

Настройте маршрут “направо” для своего компьютера подобным образом.

Как вы могли заметить, ping-пакеты не проходят до удалённых компьютеров. Значит пора переключить в режим маршрутизации.

Настройка параметров ядра GNU/Linux

Настройка маршрутизации пакетов - это 1 небольшой параметр работы ядра GNU/Linux. Как обычно, сущетсвует несколько способов взаимодействия с настройками ядра. Рассмотрим пару из них.

Использование виртуальной файловой системы /proc/sys

В корне файловой системы есть каталог /proc/sys, который представляет собой специальный формат доступа к настройкам ядра. В нём есть подкаталоги, которые соотносятся к различным подсистемам ядра. Уровень вложенности - произвольный.

У вас есть возможность считывать и записывать данные в конфигурацию ядра. При изменении содержимого файла меняется и соответствующая настройка ядра.

Нас интересует настройка net/ipv4/ip_forward. Данная настройка показывает: включена ли переадресация пакетов или нет. Для её считывания достаточно вызвать утилиту cat. 0 - режим выключен, 1 - режим включён.

Для записи можно воспользоваться простым echo. Конечно, выполнять эту команду необходимо от имени суперпользователя.

Понятным минусом такого подхода является то, что настройки сбросятся при выключении системы.

Использование утилиты sysctl

Более надёжным способом и более удобным является использование специально средства, которое считывает информацию из конфигурационного файла, sysctl. Данная утилита запускается автоматически при старте ОС, поэтому данные изменения будут перманентными.

Конфигурационный файл расположен в файле /etc/sysctl.conf. Для решения нашей задачи необходимо, чтобы строчка с конфигурацией net.ipv4.ip_forward=1 была раскоментирована. То есть мы фактически попросили конкретную настройку включиться и работать.

Для применения конфигурации достаточно вызвать инструмент с ключём -p: sysctl -p.

Задача

Включите на своих компьютерах режим маршрутизации пакетов и добейтесь связи с соедними сетями. Т.е. на 7 компьютре должна быть связь не только с 4 и 8, но также и с 3 и с 9 компьютерами.

Подсказка: маршрутизатор должен знать где находятся сети, о которых идёт речь.