Модуль 02 — Сети

Все DevOps-проблемы в продакшене делятся на три типа: DNS, сети, кеш. Без сетей нет K8s, нет облака, нет безопасности. Это второй фундамент после Linux.

Цель

К концу: можешь нарисовать на доске путь HTTPS-запроса от клиента до приложения через CDN, LB, Service Mesh. И продебажить «почему не работает» через tcpdump, dig, curl -v.

⭐ Если совсем с нуля — сначала сюда

Этот модуль — обзорный. Если ты не знаешь, что такое IP-адрес, DNS, TCP — открой сначала структурированный путь «Сети с нуля». Там 8 уроков с иллюстрациями и аналогиями от «что такое сеть» до полного понимания HTTPS. После них этот модуль читается как «всё уже знаю, повторяю».

Содержание
  1. Модель OSI / TCP-IP
  2. IP, подсети, CIDR
  3. TCP vs UDP
  4. DNS глубоко
  5. HTTP/HTTPS
  6. TLS/SSL
  7. Балансировка и проксирование
  8. Firewall и сегментация
  9. VPN и туннели
  10. CDN и Edge
  11. Современные темы

1. Модель OSI / TCP-IP

OSI имеет 7 слоёв, TCP-IP — 4-5. Знай оба, потому что инструменты называют разные слои.

OSI (7 слоёв) TCP-IP (5 слоёв) 7. Application — HTTP, FTP, SSH, DNS, SMTP 6. Presentation — TLS, шифрование, формат 5. Session — sessions, NetBIOS 4. Transport — TCP, UDP, ports 3. Network — IP, ICMP, маршрутизация 2. Data Link — Ethernet, MAC, switches 1. Physical — кабели, радио, оптика 5. Application HTTP, DNS, SSH, gRPC (объединяет OSI 5-7) 4. Transport — TCP, UDP, QUIC 3. Internet — IP, ICMP 2. Link — Ethernet, ARP 1. Physical Пакет инкапсулируется снизу вверх при отправке, разбирается обратно при получении
Сравнение OSI и TCP-IP моделей

В папке у тебя есть osi.html — визуальный справочник. Открой и просмотри.

На каком уровне работают типовые инструменты:

2. IP, подсети, CIDR

IPv4 и IPv6

IPv4: 32 бита, 4 октета (192.168.1.10). Закончились — но ты будешь работать с ними десятилетие. IPv6: 128 бит (2001:db8::1) — растущий стандарт.

CIDR — главное для DevOps

Запись 10.0.0.0/24: первые 24 бита — адрес сети, оставшиеся 8 — хосты (256 адресов).

CIDRМаскаАдресовПрименение
/8255.0.0.016.7МГигантские сети
/16255.255.0.065KТипичный VPC в AWS
/24255.255.255.0256Subnet (стандарт)
/28255.255.255.24016Маленькая подсеть
/32255.255.255.2551Один хост (для firewall rules)

Приватные диапазоны (RFC 1918)

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

При проектировании VPC в облаке — выбирай /16 и НЕ пересекайся с другими VPC, on-prem сетями, VPN. Иначе будет ад при peering. Например 10.10.0.0/16 для prod, 10.20.0.0/16 для staging.

3. TCP vs UDP

TCPUDP
Установка3-way handshakeStateless
ГарантииДоставка, порядок, без дубликатовBest effort, может потеряться
СкоростьМедленнее (overhead)Быстрее
ПрименениеHTTP, SSH, БД, всё критичноеDNS, VoIP, гейминг, QUIC, видео

TCP states (must-know)

Видеть в ss -tan:

4. DNS глубоко ⭐⭐

«Это всегда DNS» — народная мудрость SRE. Половина инцидентов — DNS.

Иерархия и резолвинг

  1. Браузер → cache OS → cache resolver (например 1.1.1.1)
  2. Если нет — резолвер идёт к root (.) → TLD (.com) → authoritative для домена
  3. Получает ответ, кеширует на TTL, отдаёт клиенту

Записи (record types)

ТипЧтоПример
AИмя → IPv4example.com → 93.184.216.34
AAAAИмя → IPv6example.com → 2606:2800::1
CNAMEАлиасwww → example.com
MXMail-сервер10 mail.example.com
TXTТекст (SPF, DKIM, верификация)v=spf1 include:_spf.google.com ~all
SRVСервис + порт_sip._tcp 5060
NSДелегированиеns1.cloudflare.com
CAAКто может выпускать TLS-сертификаты0 issue "letsencrypt.org"

Команды

dig example.com                    # A запись
dig example.com MX                 # MX записи
dig +short example.com             # только IP
dig +trace example.com             # ★ полный путь резолвинга
dig @1.1.1.1 example.com           # через конкретный резолвер
host example.com                   # упрощённо
nslookup example.com               # Windows-стиль

5. HTTP/HTTPS ⭐⭐⭐

Эволюция протокола

Методы и статусы

МетодIdempotentПрименение
GETЧтение
POSTСоздание
PUTПолная замена
PATCH✗ (обычно)Частичное обновление
DELETEУдаление
ГруппаЧто значитПримеры
1xxИнформация101 Switching Protocols (WebSocket)
2xxУспех200 OK, 201 Created, 204 No Content
3xxRedirect301 Moved Permanently, 302 Found, 304 Not Modified
4xxОшибка клиента400, 401 Unauthorized, 403 Forbidden, 404, 429 Too Many Requests
5xxОшибка сервера500 Internal, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout
DevOps интерпретация 5xx

curl — твой швейцарский нож

curl -v https://api.com               # подробный вывод (headers)
curl -I https://api.com               # только headers
curl -X POST -H "Content-Type: application/json" \
     -d '{"name":"alice"}' https://api.com/users
curl -o file.zip https://...           # сохранить
curl -w "@curl-format.txt" -o /dev/null -s https://...  # тайминг

6. TLS/SSL ⭐⭐

HTTPS = HTTP + TLS. Знать обязательно.

TLS handshake (упрощённо)

  1. Client Hello — клиент: «вот мои поддерживаемые шифры»
  2. Server Hello — сервер: «вот мой выбор + сертификат»
  3. Клиент проверяет сертификат (цепочка → корневой CA)
  4. Обмен ключами (ECDHE, для forward secrecy)
  5. Зашифрованное общение

TLS 1.3 — стандарт сейчас. Быстрее (1-RTT), безопаснее. TLS 1.0/1.1 — отключи в продакшене.

Сертификаты в реальности

mTLS (mutual TLS)

Не только сервер, но и клиент предоставляет сертификат. Стандарт в Service Mesh (Istio, Linkerd) и Zero Trust.

Команды

# Посмотреть сертификат сервера
openssl s_client -connect example.com:443 -servername example.com </dev/null \
  | openssl x509 -noout -text

# Дата истечения
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates

# Цепочка сертификатов
openssl s_client -connect example.com:443 -showcerts

7. Балансировка и проксирование ⭐⭐

L4 vs L7

Алгоритмы

Главные продукты

ИнструментУровеньКогда применять
NginxL7 + L4Универсальный reverse proxy, статика, медленный backend
HAProxyL4/L7Высокая нагрузка, сложные правила, TCP balancing
TraefikL7Cloud-native: динамический конфиг, отлично для Docker/K8s
EnvoyL7База Istio, продвинутые сценарии, gRPC, mTLS
AWS ALB / NLBL7 / L4В AWS — managed, без головной боли

8. Firewall и сегментация

Правило №1: default deny. Открывай только необходимое. Это база Zero Trust.

# ufw (Ubuntu)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp           # SSH
sudo ufw allow 443/tcp          # HTTPS
sudo ufw enable
sudo ufw status numbered

9. VPN и туннели

10. CDN и Edge

CDN — географически распределённый кеш. Ускоряет доставку, снижает нагрузку на origin, защищает от DDoS.

11. Современные темы

Чек-лист

Лучшие источники

Сети освоены. Теперь — программирование для DevOps.

Модуль 03 → Программирование