ДЕНЬ 07: Сетевой навигатор

LinuxBeginner
Практиковаться сейчас

Введение

Добро пожаловать, Сетевой навигатор! Вас только что наняли на должность младшего системного администратора в быстрорастущий технологический стартап. Этим утром критически важный веб-сервер ушел в офлайн. Пользователи сообщают, что не могут получить доступ к внутреннему порталу компании.

Ваш старший администратор занят на совещании и поручил первичную диагностику вам. Это ваш звездный час! Ваша миссия — систематически исследовать сетевой статус сервера, выявить первопричину и восстановить связь. Давайте вернем этот сервер в строй!

Важное примечание
Предстоящие задачи могут выходить за рамки курса Быстрый старт в Linux.
Если вы столкнулись с трудностями во время испытания:
  1. Временно пропустите это испытание и продолжите обучение в последующих практических лабораториях на пути обучения Linux.
  2. Обсудите проблему с Labby или посмотрите решение.

Проверка статуса сетевых интерфейсов

Ваш первый шаг в качестве Сетевого навигатора — сбор базовой информации. Распознается ли сетевое оборудование системой и активно ли оно? Вам необходимо проверить состояние всех сетевых интерфейсов на сервере. Современным инструментом для этой задачи является команда ip.

Задачи

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

Требования

  • Для выполнения этой проверки необходимо использовать команду ip addr.

Примеры

После выполнения команды вы должны увидеть вывод со списком сетевых интерфейсов, таких как lo (петля обратной связи) и eth0 (или аналогичный). Обратите внимание на состояние вашего основного интерфейса — там должно быть указано UP, что означает его активность.

## Expected output format (interface names may vary)
1: lo: 65536 qdisc noqueue state UNKNOWN group default qlen 1000 < LOOPBACK,UP,LOWER_UP > mtu
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: 1500 qdisc mq state UP group default qlen 1000 < BROADCAST,MULTICAST,UP,LOWER_UP > mtu
link/ether 00:16:3e:04:b0:40 brd ff:ff:ff:ff:ff:ff
inet 172.16.50.108/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
valid_lft 1892159216sec preferred_lft 1892159216sec

Подсказки

  • Команда ip — это мощный инструмент со множеством подкоманд. Для управления адресами используется addr.
  • Вы можете использовать полную команду ip addr show или её короткий псевдоним ip addr.

Проверка конфигурации IP-адреса

Итак, интерфейс находится в состоянии UP. Это хорошее начало. Но назначен ли ему IP-адрес? Интерфейс без IP-адреса не может обмениваться данными в сети. Хотя ip addr уже показал эту информацию, давайте воспользуемся другой классической командой — ifconfig, чтобы перепроверить данные. Полезно знать несколько инструментов для выполнения одной и той же задачи.

Задачи

  • Используйте команду ifconfig для проверки конфигурации IP-адреса.

Требования

  • Вы должны использовать именно команду ifconfig.

Примеры

В выводе должны отобразиться ваши сетевые интерфейсы с их IP-адресами. Найдите поле inet под вашим основным сетевым интерфейсом (например, eth0), чтобы подтвердить настройки IP.

## Expected output showing IP configuration
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.50.108  netmask 255.255.255.0  broadcast 172.16.50.255
        ether 00:16:3e:04:b0:40  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0

Подсказки

  • Команда ifconfig входит в пакет net-tools, который мы уже установили для вас.
  • Запуск ifconfig без аргументов выведет информацию обо всех активных интерфейсах.

Тестирование связности с удаленными узлами

У сервера есть активный интерфейс и IP-адрес. Следующий логический шаг — проверить, может ли он связаться с внешним миром. Неудача на этом этапе может указывать на проблемы со шлюзом или настройками DNS. Команда ping — идеальный инструмент для этого теста.

Задачи

  • Проверьте подключение сервера к интернету, отправив ровно 3 ICMP-пакета на публичный DNS-сервер Google по адресу 8.8.8.8.

Требования

  • Вы должны использовать команду ping.
  • Необходимо ограничить количество отправляемых пакетов до 3.
  • Целевой IP-адрес должен быть 8.8.8.8.

Примеры

Если связь работает, вы увидите ответы от целевого IP-адреса с информацией о времени задержки. Сводка в конце должна показать, что 3 пакета отправлено и 3 пакета получено с 0% потерь.

## Expected successful output pattern
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=4.33 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=119 time=4.30 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=119 time=4.30 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 4.298/4.309/4.329/0.014 ms

Подсказки

  • Команда ping будет выполняться бесконечно, пока вы её не остановите.
  • Используйте опцию -c, чтобы указать количество (count) пакетов для отправки.

Инспекция открытых сетевых портов

Связность в порядке! Так почему же внутренний портал все еще недоступен? Проблема может быть в самом приложении. Действительно ли процесс веб-сервера запущен и ожидает соединений на нужном порту? Команда ss (socket statistics) — это современный и быстрый инструмент для исследования этого вопроса.

Задачи

  • Внутренний портал должен работать на порту 8000. Используйте команду ss, чтобы проверить, слушает ли какой-либо процесс TCP-соединения на порту 8000.

Требования

  • Вы должны использовать команду ss.
  • Команда должна быть сконфигурирована так, чтобы показывать слушающие TCP-сокеты.

Примеры

Если процесс слушает порт 8000, вы увидите вывод с информацией о слушающем сокете. Ищите строку, в которой порт 8000 указан в колонке Local Address.

## Expected output showing a listening process on port 8000
LISTEN 0      5            0.0.0.0:8000       0.0.0.0:*    users:(("python3",pid=3765,fd=3))

Подсказки

  • У команды ss есть несколько полезных флагов:
    • -t: показать TCP-сокеты.
    • -l: показать слушающие (listening) сокеты.
    • -n: показывать nумерические номера портов вместо имен служб.
    • -p: показать pроцесс, использующий сокет.
  • Эти флаги можно комбинировать, например: ss -tlnp.
  • Чтобы найти конкретный порт, можно перенаправить вывод ss в команду grep. Например: ss -tlnp | grep 8000.

Настройка базовых правил межсетевого экрана

Вы все подтвердили: интерфейс активен, IP настроен, интернет работает, и приложение слушает нужный порт. Остался только один главный подозреваемый: межсетевой экран (firewall). Вероятно, он блокирует входящий трафик к порталу. Ваша последняя задача — настроить фаервол так, чтобы запретить доступ к порталу. Мы будем использовать ufw (Uncomplicated Firewall) — удобный интерфейс для управления правилами фильтрации трафика.

Задачи

  1. Добавьте правило фаервола для запрета входящего трафика на порт 8000.
  2. Добавьте правило фаервола для разрешения входящего SSH-трафика (порт 22).
  3. Включите фаервол, чтобы применить новые правила.

Требования

  • Для всех операций необходимо использовать команду ufw.
  • Вы должны использовать sudo, так как изменение правил фаервола требует прав администратора.

Примеры

После настройки правил выполнение команды sudo ufw status должно показать, что фаервол активен, порт 8000 запрещен, а SSH (порт 22) разрешен.

## Expected output after enabling firewall with port 8000 denied and SSH allowed
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
8000                       DENY        Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
8000 (v6)                  DENY        Anywhere (v6)

При добавлении правила вы должны увидеть:

Rules updated
Rules updated (v6)

При включении фаервола вы должны увидеть:

Firewall is active and enabled on system startup

Подсказки

  • Синтаксис ufw очень прост. Чтобы запретить трафик на порту, используйте ufw deny <port>.
  • Вы можете запретить трафик на порту 8000 с помощью ufw deny 8000.
  • Вы можете явно разрешить SSH-трафик с помощью ufw allow ssh или ufw allow 22.
  • Критическое предупреждение: Если вы не откроете порт SSH (22) должным образом, проверка испытания не удастся, так как она зависит от этого порта для подключения.
  • Важное предупреждение: Не изменяйте правила фаервола для других портов произвольно, так как это может привести к сбою онлайн-ВМ.
  • После добавления правил необходимо активировать фаервол командой ufw enable.

Резюме

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

Вы продемонстрировали уверенное владение фундаментальными сетевыми инструментами Linux, такими как ip, ifconfig, ping, ss и ufw. Этот логичный, пошаговый процесс устранения неполадок является критически важным навыком для любого системного администратора и будет бесценен в вашей карьере. Продолжайте оттачивать свое мастерство!

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться