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

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

Введение

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

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

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

Проверка состояния сетевого интерфейса

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

Задачи

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

Требования

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

Примеры

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

## Ожидаемый формат вывода (имена интерфейсов могут отличаться)
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.

## Ожидаемый вывод с конфигурацией IP
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% потерь.

## Ожидаемый успешный вывод
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, вы должны увидеть вывод с информацией о слушающем сокете. Ищите строку, где в столбце Local Address указан порт 8000.

## Ожидаемый вывод, показывающий слушающий процесс на порту 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: показать numeric (числовые) номера портов вместо имен служб.
    • -p: показать process (процесс), использующий сокет.
  • Вы можете комбинировать эти флаги, например: ss -tlnp.
  • Чтобы найти конкретный порт, вы можете передать вывод ss команде grep. Например: ss -tlnp | grep 8000.

Настройка базовых правил брандмауэра

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

Задачи

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

Требования

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

Примеры

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

## Ожидаемый вывод после включения брандмауэра с разрешенными портами 8000 и SSH
Status: active

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

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

Rules updated
Rules updated (v6)

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

Firewall is active and enabled on system startup

Подсказки

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

Итоги

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

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

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