обучение линукс

Цель урока: Сформировать четкое понимание базовых сетевых концепций: IP-адрес, сетевой интерфейс и порт. Освоить фундаментальные инструменты командной строки для просмотра сетевых конфигураций (ipss) и диагностики соединений (pingcurltelnet).

Часть 1: Теория. Адрес, дверь и почтовый ящик вашего сервера

Чтобы ваш сервер был частью интернета, ему, как и любому дому, нужен адрес. Но одного адреса недостаточно. Внутри "дома" есть разные "службы" (квартиры), и для общения с каждой из них нужна своя "дверь". Давайте детально разберем эту аналогию.

  • Сетевой интерфейс: Это "дверь" вашего сервера в сеть. В физическом сервере это реальная сетевая карта. В вашем VDS - это виртуальный аналог. У каждого интерфейса есть свое имя, которое присваивает система. Раньше их часто называли eth0eth1 и т.д. (от слова Ethernet). В современных системах имена более предсказуемые и могут выглядеть как ens3 или enp0s3. У сервера может быть несколько интерфейсов.

    • Loopback-интерфейс (lo): Это особый, виртуальный интерфейс, который есть всегда. Он нужен серверу, чтобы "говорить самому с собой". Он всегда имеет IP-адрес 127.0.0.1 и имя localhost. Это крайне важный инструмент для тестирования программ локально, без выхода в реальную сеть.

  • IP-адрес (Internet Protocol Address): Это уникальный адрес вашего "дома" (сервера) в сети. Именно по нему другие компьютеры находят ваш сервер.

    • Публичный IP-адрес: Это тот адрес, который виден всему миру. Именно его вы используете для подключения по SSH. Ваш хостинг-провайдер выдал вам один такой адрес.

    • IPv4 vs IPv6: Вы наверняка видели адреса вроде 82.148.28.140 - это IPv4. Их количество в мире почти закончилось, поэтому был внедрен новый, более длинный формат адресов - IPv6, например: 2a02:6b8:c0b:714:0:502:8001:1.

    • Приватные IP-адреса: Существуют специальные диапазоны адресов, которые не используются в интернете (например, 192.168.x.x10.x.x.x). Они нужны для построения локальных сетей. Для одиночного VDS это пока не так важно, но знать о их существовании необходимо.

  • Порт: Если IP-адрес - это адрес дома, то порт - это номер квартиры или офиса внутри этого дома. На вашем сервере могут работать десятки программ, и каждая из них, если хочет общаться по сети, "слушает" свой порт.

    • Порт - это число от 1 до 65535.

    • Стандартные порты: Порты до 1024 зарезервированы под стандартные службы. Вы уже знаете некоторые:

      • Порт 22: SSH (Secure Shell), ваше удаленное управление.

      • Порт 80: HTTP (HyperText Transfer Protocol), обычный веб-трафик.

      • Порт 443: HTTPS (HTTP Secure), защищенный веб-трафик.

    • Когда программа "слушает" порт, она ждет входящих подключений. Если на порт 80 приходит запрос, его обрабатывает веб-сервер (Nginx или Apache), а не служба SSH.

  • TCP и UDP: Два основных "языка" общения по сети.

    • TCP (Transmission Control Protocol): Надежный, с гарантией доставки. Перед отправкой данных клиенты "пожимают друг другу руки" (устанавливают соединение). Если часть данных потерялась, она будет отправлена заново. Используется там, где важна целостность: веб-сайты (HTTP/HTTPS), почта, SSH.

    • UDP (User Datagram Protocol): Быстрый, без гарантии доставки. Данные просто "выстреливаются" в сторону получателя. Используется там, где важнее скорость, а потеря пары пакетов не критична: видео-стриминг, онлайн-игры, запросы DNS.

Часть 2: Практика. Инструменты сетевого администратора

1. Просмотр сетевых интерфейсов и IP-адресов: ip

В современных системах для всех сетевых задач используется утилита ip. Она заменила старые команды, такие как ifconfig и route.

  • Команда:

    ip addr show
    # или более короткий вариант
    ip a
  • Примерный вывод и его разбор:

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        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
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:16:3e:5e:7f:d8 brd ff:ff:ff:ff:ff:ff
        inet 82.148.28.140/24 brd 82.148.28.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 2a02:6b8:c0b:714::502:8001:1/64 scope global
           valid_lft forever preferred_lft forever
  • Что здесь важно:

    • 1: lo: Это наш loopback-интерфейс. Видим его inet 127.0.0.1.

    • 2: eth0: Это наш основной сетевой интерфейс, "смотрящий" в интернет.

    • inet 82.148.28.140/24: Это наш публичный IPv4-адрес. /24 - это маска подсети в CIDR-нотации, она определяет, какая часть адреса относится к сети, а какая к хосту. Для администратора это важная информация при настройке сетей.

    • inet6 ...: А это наш публичный IPv6-адрес.

2. Просмотр открытых ("слушающих") портов: ss

Утилита ss (Socket Statistics) - современный и быстрый способ посмотреть, какие программы слушают какие порты. Она заменила netstat.

  • Команда (самый полезный вариант):

    ss -tulpn
  • Разбор ключей:

    • -t: Показать TCP-сокеты.

    • -u: Показать UDP-сокеты.

    • -l: Показать только слушающие (Listening) сокеты. Нас интересует, кто ждет подключений.

    • -p: Показать процесс, который использует сокет.

    • -n: Показать числовые адреса и порты (не пытаться превратить 80 в http). Это работает гораздо быстрее.

  • Примерный вывод (на "чистом" сервере):

    State      Recv-Q Send-Q     Local Address:Port      Peer Address:Port    Process
    LISTEN     0      128            0.0.0.0:22             0.0.0.0:*        users:(("sshd",pid=987,fd=3))
    LISTEN     0      128               [::]:22                [::]:*        users:(("sshd",pid=987,fd=4))
  • Что мы видим: Процесс sshd (служба SSH) слушает порт 22 на всех доступных IPv4 (0.0.0.0) и IPv6 ([::]) адресах.

3. Диагностика соединений

  • ping: Проверка доступности хоста. Посылает маленькие ICMP-пакеты и ждет ответа.

    ping google.com
    # Нажмите Ctrl+C, чтобы остановить

    Главное в выводе - строка time=... ms. Чем меньше миллисекунд, тем быстрее "отклик". Если ответа нет, вы увидите Destination Host Unreachable или 100% packet loss.

  • curl: Невероятно мощная утилита для передачи данных. Мы ее можем использовать для проверки нашего внешнего IP или доступности веб-страницы.

    # Узнать свой публичный IP-адрес
    curl ifconfig.me
    # Получить заголовки веб-страницы
    curl -I google.com
  • telnet или nc (netcat): Утилиты для подключения к конкретному порту. Это лучший способ проверить, открыт ли порт на удаленном сервере (например, не блокирует ли его файервол).

    # Проверим, доступен ли веб-сервер Google на порту 80
    telnet google.com 80

    Если вы видите Connected to ... - значит, порт открыт и слушается. Если Connection refused или ничего не происходит (timeout) - порт закрыт. (Для выхода из telnet нажмите Ctrl+], затем введите quit и Enter). Проблема может заключаться в том, что Ctrl+] не всегда работает как ожидается в разных терминальных программах. Вместо этого, попробуйте нажать Ctrl+Shift+6, а затем Enter, после чего введите quit и нажмите Enter.

Часть 3: Практический сценарий. Устанавливаем веб-сервер и смотрим, что изменилось

  1. Зайдите на сервер под root.

  2. Определите IP-адрес вашего сервера. Запомните или запишите его.

    ip a
  3. Посмотрите, какие порты сейчас слушаются. Вы должны увидеть только порт 22.

    ss -tulpn
  4. Проверьте соединение с внешним миром.

    ping -c 4 yandex.ru
    # Ключ -c 4 отправит ровно 4 пакета и остановится.
  5. Теперь установим веб-сервер Nginx.

    apt update && apt install nginx
  6. Момент истины! Снова посмотрим на слушающие порты.

    ss -tulpn

    Вы увидите, что к вашему порту 22 добавились новые строки! Процесс nginx теперь слушает порт 80 (и, возможно, 443). Ваш сервер начал "слушать мир" как веб-сервер.

  7. Проверим это изнутри. "Поговорим" с нашим веб-сервером через loopback-интерфейс.

    curl localhost
    ```    В ответ вы должны получить HTML-код приветственной страницы Nginx "Welcome to nginx!". Это значит, что веб-сервер работает корректно.
  8. Теперь полностью удаляем Nginx, чтобы вернуть сервер в исходное состояние.

    apt purge nginx -y && apt autoremove -y
    # Ключ -y автоматически отвечает "yes" на все вопросы.
  9. Проверьте порты еще раз с помощью ss -tulpn. Строки с портом 80 должны были исчезнуть.

Итоги урока и домашнее задание

  • Что мы освоили:

    • Фундаментальные концепции: сетевой интерфейс (loeth0), IP-адрес (публичный, localhost), порт и его назначение.

    • Разницу между TCP и UDP.

    • Современные команды для анализа сети: ip a (узнать адрес) и ss -tulpn (узнать, кто слушает порты).

    • Базовые утилиты диагностики: ping (проверка доступности хоста) и curl/telnet (проверка доступности службы на порту).

  • Ваше восьмое задание:

    1. С помощью ip a выясните и запишите свой публичный IPv4 и IPv6 адреса.

    2. С помощью ss -tulpn убедитесь, что у вас слушается только 22 порт.

    3. Найдите в интернете IP-адрес для github.com с помощью команды ping github.com.

    4. Используя telnet, проверьте, открыт ли у github.com порт 443 (telnet github.com 443).

    5. Проверьте с помощью telnet какой-нибудь случайный порт, например 444, на том же github.com. Какой результат вы получили?

    6. Установите утилиту whois (apt install whois). Эта программа позволяет получить публичную информацию о домене или IP-адресе.

    7. Выполните команду whois google.com, а затем whois [ваш_публичный_ip]. Посмотрите на информацию, которую она предоставляет.

    8. Удалите whois с вашего сервера (apt purge whois -y).

На следующем уроке мы сделаем наш сервер более безопасным, настроив базовый файервол с помощью ufw. Мы научимся создавать правила, разрешающие нужные соединения (SSH, HTTP) и блокирующие все остальные.

Перейти к просмотру - УРОК №9.

подарок Промо-код: PROMO15 - скидка 15%! огонь

Введите при оформлении первого заказа на сайте: Hosting-VDS.com

авторское право цифровые решения

Помог ли вам данный ответ? 0 Пользователи считают это полезным (0 голосов)