Блог Stepik про учебу и карьеру

Почему компьютерные сети стоит изучать вместе с Linux

Программирование
Изучая компьютерные сети, легко застрять на уровне отдельных команд и определений. Вы знаете, что такое IP-адрес, шлюз и DNS, умеете настроить VLAN и понимаете принцип маршрутизации. Но когда реальная или виртуальная машина внезапно перестаёт выходить в сеть, возникает главный вопрос: с чего начать диагностику?

Сеть не существует сама по себе, поэтому для полноценной диагностики недостаточно понимать только сетевое оборудование — важно видеть, что происходит на стороне самого хоста.

Денис Корчагин, сетевой инженер и автор курсов по Linux и компьютерным сетям на Stepik, предлагает смотреть на эти навыки как на единую систему. В статье он показывает на практических примерах, как Linux помогает лучше понять работу сети, быстрее находить неисправности и постепенно перейти от базовой настройки инфраструктуры к автоматизации.
Часто обучение компьютерным сетям строится так, будто сеть существует отдельно от всего остального. Темы разбираются последовательно: коммутация, IP-адресация, маршрутизация, динамические протоколы, фильтрация трафика.

Все эти темы важны и без них ничего не получится. Но в реальности сеть никогда не существует сама по себе. Она соединяет конечные устройства или хосты. То есть серверы, рабочие станции, виртуальные машины. А уже на этих хостах работают базы данных, системы мониторинга, файловые хранилища, внутренние корпоративные системы.

Поэтому вопрос «как работает сеть?» почти всегда связан с другим вопросом: «что именно должно работать в этой сети?». Ответ на этот вопрос определяет, каким образом мы будем искать причину проблем, возникающих в сети.

С чего начинается диагностика сети

Возьмем простую схему в GNS3. Устройства соединены, но пинга нет:

Стенд в GNS3

Почему это может происходить? IP-адрес на машине есть. А что со вторым хостом? Нет логической связи между ними? Проблемы с VLAN? Хосты в разных подсетях?

В начале моего пути как сетевого инженера я впадал в легкий ступор, потому что не понимал, с чего начинать диагностику. Слишком много возможных причин.

Можно выучить, что такое шлюз по умолчанию, можно прочитать определение DNS, но когда реальная или виртуальная машина не выходит в сеть, нужно понимать, что и в какой последовательности проверять.

Поэтому я все чаще прихожу к мысли, что обучение компьютерным сетям стоит комбинировать с изучением системы, которая хорошо показывает процессы на стороне сервера.

Почему Linux хорошо подходит для старта

Linux не случайно стал де-факто стандартом для серверов и инфраструктуры.

Он хорошо показывает то, что спрятано под капотом за графическим интерфейсом. Через Linux отлично видно инфраструктуру с точки зрения сервера, у которого есть:

  • интерфейсы
  • адреса
  • маршруты
  • DNS
  • службы и процессы, которые слушают порты и отвечают на запросы
  • логи
  • пользователи и права
  • удаленный доступ

Как только вы поднимаете простой веб-сервер или сервис на Linux и начинаете с ним работать, компьютерные сети перестают быть просто соединением маршрутизаторов с коммутаторами.

Появляется единое восприятие инфраструктуры. Вы начинаете чувствовать связи:
устройство → операционная система → сервис → сетевой интерфейс → адрес → маршрут → другой узел.
Навык работы с Linux хорошо переносится и на сетевое оборудование. У Cisco, Eltex команды и синтаксис будут отличаться, но сама логика одинакова: подключение через CLI (Command Line Interface – интерфейс командной строки), контроль состояния устройства, изменение конфигурации, проверка результата.

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

Немного DHCP

DHCP – хороший пример темы, которая находится на стыке Linux и компьютерных сетей. Вы наверняка слышали об этой технологии, даже если пока что далеки от компьютерных сетей.

На первый взгляд все очень просто. DHCP-сервер выдал клиенту IP-адрес и дополнительные параметры сети. Именно так работает ваш домашний роутер.

На компьютере по умолчанию настроено автоматическое получение IP-адреса:

Автоматическое назначение сетевых параметров с помощью DHCP

Представим учебный стенд, где клиент должен получить адрес от DHCP-сервера на Linux, но адрес не появляется. С точки зрения сети можно проверить VLAN, маршрутизацию и списки доступа, но вторая половина диагностики находится на самом сервере. Важно проверить настройки самой DHCP-службы.

Приведу пример команды просмотра журнала на сервере:

sudo journalctl -u isc-dhcp-server -n 20 --no-pager

Фрагмент просмотра журнала на Ubuntu 24.04

Ключевые строчки:
Jul 08 20:22:37 ubuntu-24-04 dhcpd[1511]: Not configured to listen on any interfaces!

Jul 08 20:22:37 ubuntu-24-04 systemd[1]: isc-dhcp-server.service: Main process exited, code=exited, status=1/FAILURE

Jul 08 20:22:37 ubuntu-24-04 systemd[1]: isc-dhcp-server.service: Failed with result 'exit-code'.
Если перевести на человеческий язык, то DHCP-сервер установлен, но не настроен на прослушивание сетевого интерфейса. Служба не запустилась, поэтому клиент не сможет получить IP-адрес.

Этот пример отлично иллюстрирует, зачем при изучении сетей нужен Linux. Со стороны коммутатора или маршрутизатора можно проверить VLAN, маршруты и доступность сервера. А на самом сервере журнал сразу показывает, что проблема в настройке DHCP-службы.

Согласитесь, что это лучше изучать и пробовать на учебном стенде, а не в рабочей сети под взглядом коллег.

Почему это важно для старта в профессии

Часто хочется сразу выбрать профессию и развиваться именно в ней. Стать сетевым инженером, системным администратором, DevOps или SRE. Но эти направления сильно пересекаются.

Сетевой инженер все чаще сталкивается с серверами, а системному администратору приходится понимать сеть вокруг его сервисов.

DevOps-инженер должен знать Linux, SSH, DNS, контейнеры и автоматизацию. Хороший DevOps должен иметь сильную сетевую базу.

Специалист технической поддержки, который хочет расти дальше, должен научиться понимать причину возникшей проблемы.

Поэтому связка Linux + сети дает несколько сильных бонусов.

Меньше страха перед инфраструктурой

По себе знаю, что изначально никто не хочет работать с терминалом. Если всю жизнь видеть только графический интерфейс, Linux сначала кажется очень непривычным.

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

В итоге меняется отношение к инфраструктуре. Во всяком случае, у меня было именно так. Сервер перестал быть чем-то закрытым и непонятным. Он стал точкой опоры.

Проще искать неисправности

Обычная ситуация – пользователь говорит, что сервис недоступен. Без знаний Linux вы будете проверять только сетевую часть. Умея работать с сервером и понимая принципы работы сетей, вы сможете провести полноценную диагностику проблемы. Это было наглядно видно в примере с DHCP.

Появляется база для автоматизации

Рано или поздно многие приходят к автоматизации на Ansible, который можно развернуть на сервере с Linux. Если на этом этапе не понимать структуру операционной системы, права доступа, переменные, структуру проекта и диагностику доступа, то автоматизация будет идти гораздо тяжелее.

Linux – это та самая база для дальнейшего роста, где будут Ansible, скрипты, CI/CD, контейнеры, инфраструктурные задачи и мониторинг.

Быстрее растет ценность специалиста

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

Как построить траекторию обучения

Я строю свои программы на Stepik именно по этой логике. Полноценная база Linux в связке с сетями. В результате получается единая траектория обучения и роста.

Если захотите посмотреть, как это устроено – вот две программы, которые выросли из моего подхода:


  • Linux и большой практикум по компьютерным сетям – курс для продолжающих, для изучения желательно иметь начальные знания о компьютерных сетях. Сначала формируем уверенную базу по Linux, а затем эти знания применяем в практикуме по сетевой инфраструктуре, диагностике и автоматизации.

Во всех программах работаем с Ubuntu, Cisco, Eltex, Ansible и GNS3.

Я не считаю такой порядок единственно правильным. Но чем раньше вы начнёте видеть связь между операционной системой, сетью и работающими на сервере сервисами, тем проще будет переходить от отдельных настроек к полноценному пониманию инфраструктуры.
На первый взгляд обучение «Linux + сети» кажется длиннее, чем просто обучение сетям. Но такой подход медленнее только на бумаге.

Когда вы знаете Linux, проще разобраться с IP-адресацией, сетевыми службами, диагностикой и автоматизацией. Когда вы понимаете сети, то начинаете работать с Linux-серверами как с частью инфраструктуры. А когда эти две темы соединяются вместе, появляется то самое понимание, ради которого люди и приходят учиться.