Модуль 02 — Сети
Все DevOps-проблемы в продакшене делятся на три типа: DNS, сети, кеш. Без сетей нет K8s, нет облака, нет безопасности. Это второй фундамент после Linux.
К концу: можешь нарисовать на доске путь HTTPS-запроса от клиента до приложения через CDN, LB, Service Mesh. И продебажить «почему не работает» через tcpdump, dig, curl -v.
Этот модуль — обзорный. Если ты не знаешь, что такое IP-адрес, DNS, TCP — открой сначала структурированный путь «Сети с нуля». Там 8 уроков с иллюстрациями и аналогиями от «что такое сеть» до полного понимания HTTPS. После них этот модуль читается как «всё уже знаю, повторяю».
1. Модель OSI / TCP-IP
OSI имеет 7 слоёв, TCP-IP — 4-5. Знай оба, потому что инструменты называют разные слои.
В папке у тебя есть osi.html — визуальный справочник. Открой и просмотри.
На каком уровне работают типовые инструменты:
- L2 (Data Link): switches, MAC. Ты как DevOps это редко трогаешь.
- L3 (Network): IP routers,
ip route, маршрутизация в облаке (route tables). - L4 (Transport): TCP/UDP balancers (AWS NLB), iptables/nftables, security groups.
- L7 (Application): HTTP balancers (Nginx, ALB, Envoy), WAF, Service Mesh.
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 | Маска | Адресов | Применение |
|---|---|---|---|
| /8 | 255.0.0.0 | 16.7М | Гигантские сети |
| /16 | 255.255.0.0 | 65K | Типичный VPC в AWS |
| /24 | 255.255.255.0 | 256 | Subnet (стандарт) |
| /28 | 255.255.255.240 | 16 | Маленькая подсеть |
| /32 | 255.255.255.255 | 1 | Один хост (для firewall rules) |
Приватные диапазоны (RFC 1918)
10.0.0.0/8— 16М адресов (любимое для крупных VPC)172.16.0.0/12— Docker по умолчанию использует172.17.0.0/16192.168.0.0/16— домашние сети
При проектировании VPC в облаке — выбирай /16 и НЕ пересекайся с другими VPC, on-prem сетями, VPN. Иначе будет ад при peering. Например 10.10.0.0/16 для prod, 10.20.0.0/16 для staging.
3. TCP vs UDP
| TCP | UDP | |
|---|---|---|
| Установка | 3-way handshake | Stateless |
| Гарантии | Доставка, порядок, без дубликатов | Best effort, может потеряться |
| Скорость | Медленнее (overhead) | Быстрее |
| Применение | HTTP, SSH, БД, всё критичное | DNS, VoIP, гейминг, QUIC, видео |
TCP states (must-know)
Видеть в ss -tan:
- LISTEN — сервер слушает
- ESTABLISHED — активное соединение
- TIME_WAIT — соединение закрыто, ждём 60s. Много TIME_WAIT — типичная продакшен-проблема под нагрузкой.
- CLOSE_WAIT — другая сторона закрыла, мы ещё нет. Если много — баг в приложении (не закрывает сокеты).
4. DNS глубоко ⭐⭐
«Это всегда DNS» — народная мудрость SRE. Половина инцидентов — DNS.
Иерархия и резолвинг
- Браузер → cache OS → cache resolver (например
1.1.1.1) - Если нет — резолвер идёт к root (.) → TLD (.com) → authoritative для домена
- Получает ответ, кеширует на TTL, отдаёт клиенту
Записи (record types)
| Тип | Что | Пример |
|---|---|---|
| A | Имя → IPv4 | example.com → 93.184.216.34 |
| AAAA | Имя → IPv6 | example.com → 2606:2800::1 |
| CNAME | Алиас | www → example.com |
| MX | Mail-сервер | 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 ⭐⭐⭐
Эволюция протокола
- HTTP/1.1 (1997) — текстовый, одно соединение = один запрос (с keep-alive — до закрытия)
- HTTP/2 (2015) — бинарный, multiplexing (параллельные запросы в одном TCP)
- HTTP/3 (2022) — поверх QUIC (UDP). Решает head-of-line blocking, лучше для мобильных. Cloudflare/Google/Meta уже используют. Учи!
Методы и статусы
| Метод | Idempotent | Применение |
|---|---|---|
| GET | ✓ | Чтение |
| POST | ✗ | Создание |
| PUT | ✓ | Полная замена |
| PATCH | ✗ (обычно) | Частичное обновление |
| DELETE | ✓ | Удаление |
| Группа | Что значит | Примеры |
|---|---|---|
| 1xx | Информация | 101 Switching Protocols (WebSocket) |
| 2xx | Успех | 200 OK, 201 Created, 204 No Content |
| 3xx | Redirect | 301 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 |
- 502 Bad Gateway: LB → upstream вернул что-то, что LB не понял (приложение упало?)
- 503 Service Unavailable: нет здоровых upstream'ов
- 504 Gateway Timeout: upstream не ответил за timeout (медленный backend, БД)
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 (упрощённо)
- Client Hello — клиент: «вот мои поддерживаемые шифры»
- Server Hello — сервер: «вот мой выбор + сертификат»
- Клиент проверяет сертификат (цепочка → корневой CA)
- Обмен ключами (ECDHE, для forward secrecy)
- Зашифрованное общение
TLS 1.3 — стандарт сейчас. Быстрее (1-RTT), безопаснее. TLS 1.0/1.1 — отключи в продакшене.
Сертификаты в реальности
- Let's Encrypt — бесплатно, автоматически через ACME (
certbot,cert-managerв K8s) - AWS ACM — бесплатно для AWS-сервисов (CloudFront, ALB)
- EV / OV сертификаты — платные, для банков/корпораций. Для большинства — DV от LE достаточно.
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
- L4 (Transport): балансирует по IP/port. Не видит HTTP. Быстрее, проще. Примеры: AWS NLB, HAProxy в TCP-mode.
- L7 (Application): парсит HTTP — может рутить по path/host/headers, делать SSL termination, WAF. Примеры: AWS ALB, Nginx, Envoy, Traefik.
Алгоритмы
- Round-robin — по очереди (default). Просто, но не учитывает нагрузку.
- Least Connections — туда, где меньше активных. Лучше для долгих соединений.
- IP Hash — sticky sessions (один клиент — один backend).
- Power of Two Choices — современный, выбирает лучший из двух случайных. Используется в Nginx, Envoy.
Главные продукты
| Инструмент | Уровень | Когда применять |
|---|---|---|
| Nginx | L7 + L4 | Универсальный reverse proxy, статика, медленный backend |
| HAProxy | L4/L7 | Высокая нагрузка, сложные правила, TCP balancing |
| Traefik | L7 | Cloud-native: динамический конфиг, отлично для Docker/K8s |
| Envoy | L7 | База Istio, продвинутые сценарии, gRPC, mTLS |
| AWS ALB / NLB | L7 / L4 | В AWS — managed, без головной боли |
8. Firewall и сегментация
- nftables — современный стандарт Linux (заменил
iptables) - ufw — упрощённый frontend для Ubuntu
- Cloud Security Groups (AWS) — stateful, белый список
- Network ACL — stateless, на subnet level
Правило №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 и туннели
- WireGuard ⭐ — современный, простой, быстрый. Стандарт сегодня.
- Tailscale — управляемый WireGuard mesh для команд (легко настроить).
- OpenVPN — старый, всё ещё работает, тяжелее.
- IPSec — энтерпрайз, site-to-site VPN в облаках.
- SSH туннели — см. модуль Linux.
10. CDN и Edge
CDN — географически распределённый кеш. Ускоряет доставку, снижает нагрузку на origin, защищает от DDoS.
- Cloudflare — бесплатный план мощный, защита, Workers (edge compute)
- AWS CloudFront — интеграция с AWS, Lambda@Edge
- Fastly — для тех, кто пишет VCL вручную
- Akamai — корпоративный лидер
11. Современные темы
- HTTP/3 + QUIC — становится мейнстримом, твои Nginx/Envoy уже умеют
- eBPF networking (Cilium) — будущее K8s сетей. Заменяет kube-proxy, даёт L7 visibility без sidecar
- Service Mesh — Istio, Linkerd: mTLS, traffic shaping, observability
- Zero Trust Network Access (ZTNA) — отказ от VPN в пользу identity-based access
Чек-лист
- ☐ Объясню за 5 минут что происходит при открытии https://google.com
- ☐ Поделю /16 на 256 /24 в уме
- ☐ Понимаю TCP states и читаю
ss -tan - ☐ Знаю когда UDP, а когда TCP
- ☐ Могу написать Nginx upstream-конфиг с health checks
- ☐ Понимаю TLS handshake
- ☐ Знаю что такое mTLS и зачем он в K8s
- ☐ Использую
dig +trace,tcpdump,curl -vв дебаге
Лучшие источники
- Книга: «Computer Networking: A Top-Down Approach» — Kurose, Ross. Стандарт CS.
- Бесплатно: Beej's Guide to Network Programming
- Видео: NetworkChuck, Practical Networking (YouTube)
- Wireshark: Sample Captures — учись читать дампы
- Из папки: osi.html — справочник OSI
- HTTP: MDN HTTP
Сети освоены. Теперь — программирование для DevOps.