Настройка сети в GNU/Linux
Самый базовый инструмент — ядро ОС. Оно предоставляет все необходимые системные вызовы, которые необходимы для выполнения операций по настройке сетевых интерфейсов. Понятно, что этот способ подходит только для ПО, а не для людей, поэтому рассмотрим инструменты, которые помогут нам в этом деле.
Первый базовый инструмент — ip . Мы уже рассматривали его, когда нам было необходимо посмотреть на текущую конфигурацию сети. Однако он также позволяет ей манипулировать.
Давайте решим следующую задачу: переведём все компьютеры в классе в сеть 10.223.0.0/16. Для её решения необходимо выполнить 2 шага:
Как это делать, можно узнать в руководстве на утилиту 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-адреса с сетевого интерфейса не были удалены данные из таблицы маршрутизации. Однако мы не можем воспользоваться этой информацией, т.к. она уже не актуальна.
- зачастую уже доступна на всех серверах, на старых может быть использована утилита ifconfig
- настройки сети сбрасываются после перезагрузки компьютера, т.е. необходимо применить доп. усилия, чтобы эти настройки были сохранены.
Как настроить сеть “надёжно”
- Использовать инструменты, которые были разработаны в рамках данного дистрибутива.
- Использовать инструменты, которые не зависят от желаний дистрибутива: NetworkManager.
NM — специальный демон, который оперирует в основном 2 понятиями: устройство и настройки соединения. Для каждого устройства содержится список настроек соединений, которые можно менять “на лету”. Этот инструмент обычно управляется с помощью графических клиентов и ориентирован на системы, в которых сетевая конфигурация часто меняется: ноутбуки и другие мобильные системы.
ifupdown
В Debian используется система ifupdown. Логика работы её в следующем:
- Есть конфигурационный файл, который описывает настройку сетевых интерфейсов.
- Инструменты 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 утилиты:
ПРАВИЛЬНЫЙ способ работы с ifupdown:
- Убрать текущие настройки с помощью ifdown.
- Исправить конфигурационный файл как сейчас необходимо.
- Выставить новые настройки.
Вы можете 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 компьютерами.
Подсказка: маршрутизатор должен знать где находятся сети, о которых идёт речь.
Администрирование GNU/Linux
Информация, размещённая на этом сайте доступна под лицензией Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).