Цель урока: Сформировать четкое понимание базовых сетевых концепций: IP-адрес, сетевой интерфейс и порт. Освоить фундаментальные инструменты командной строки для просмотра сетевых конфигураций (ip, ss) и диагностики соединений (ping, curl, telnet).
Часть 1: Теория. Адрес, дверь и почтовый ящик вашего сервера
Чтобы ваш сервер был частью интернета, ему, как и любому дому, нужен адрес. Но одного адреса недостаточно. Внутри "дома" есть разные "службы" (квартиры), и для общения с каждой из них нужна своя "дверь". Давайте детально разберем эту аналогию.
-
Сетевой интерфейс: Это "дверь" вашего сервера в сеть. В физическом сервере это реальная сетевая карта. В вашем VDS - это виртуальный аналог. У каждого интерфейса есть свое имя, которое присваивает система. Раньше их часто называли eth0, eth1 и т.д. (от слова 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.x, 10.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: Практический сценарий. Устанавливаем веб-сервер и смотрим, что изменилось
-
Зайдите на сервер под root.
-
Определите IP-адрес вашего сервера. Запомните или запишите его.
ip a
-
Посмотрите, какие порты сейчас слушаются. Вы должны увидеть только порт 22.
ss -tulpn
-
Проверьте соединение с внешним миром.
ping -c 4 yandex.ru # Ключ -c 4 отправит ровно 4 пакета и остановится.
-
Теперь установим веб-сервер Nginx.
apt update && apt install nginx
-
Момент истины! Снова посмотрим на слушающие порты.
ss -tulpn
Вы увидите, что к вашему порту 22 добавились новые строки! Процесс nginx теперь слушает порт 80 (и, возможно, 443). Ваш сервер начал "слушать мир" как веб-сервер.
-
Проверим это изнутри. "Поговорим" с нашим веб-сервером через loopback-интерфейс.
curl localhost ``` В ответ вы должны получить HTML-код приветственной страницы Nginx "Welcome to nginx!". Это значит, что веб-сервер работает корректно.
-
Теперь полностью удаляем Nginx, чтобы вернуть сервер в исходное состояние.
apt purge nginx -y && apt autoremove -y # Ключ -y автоматически отвечает "yes" на все вопросы.
-
Проверьте порты еще раз с помощью ss -tulpn. Строки с портом 80 должны были исчезнуть.
Итоги урока и домашнее задание
-
Что мы освоили:
-
Фундаментальные концепции: сетевой интерфейс (lo, eth0), IP-адрес (публичный, localhost), порт и его назначение.
-
Разницу между TCP и UDP.
-
Современные команды для анализа сети:
ip a
(узнать адрес) иss -tulpn
(узнать, кто слушает порты). -
Базовые утилиты диагностики:
ping
(проверка доступности хоста) иcurl/telnet
(проверка доступности службы на порту).
-
-
Ваше восьмое задание:
-
С помощью
ip a
выясните и запишите свой публичный IPv4 и IPv6 адреса. -
С помощью
ss -tulpn
убедитесь, что у вас слушается только 22 порт. -
Найдите в интернете IP-адрес для github.com с помощью команды
ping github.com
. -
Используя telnet, проверьте, открыт ли у github.com порт 443 (
telnet github.com 443
). -
Проверьте с помощью telnet какой-нибудь случайный порт, например 444, на том же github.com. Какой результат вы получили?
-
Установите утилиту whois (
apt install whois
). Эта программа позволяет получить публичную информацию о домене или IP-адресе. -
Выполните команду
whois google.com
, а затем whois [ваш_публичный_ip]. Посмотрите на информацию, которую она предоставляет. -
Удалите whois с вашего сервера (
apt purge whois -y
).
-
На следующем уроке мы сделаем наш сервер более безопасным, настроив базовый файервол с помощью ufw. Мы научимся создавать правила, разрешающие нужные соединения (SSH, HTTP) и блокирующие все остальные.
Перейти к просмотру - УРОК №9.
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com