2025-02-21 12:18:50 +03:00

100 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### на базе Red Hat
- `firewall-cmd --zone=public --add-masquerade --permanent`
- `firewall-cmd --reload`
### На базе Debian
#### firewall Ubuntu - ufw
```
# Установка UFW
sudo apt update
sudo apt install ufw
# Открываем порт, используемый для SSH (по умолчанию 22)
sudo ufw allow <ssh-port>/tcp
# Закрываем все входные
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Включаем фаерволл
sudo ufw enable
# Перезагрузить
ufw reload
# Показать состояние ufw и активные правила
sudo ufw status verbose
ufw status numbered
```
```
# Отключить фаерволл
sudo ufw disable
# Удалить правило (будут применены настройки по умолчанию)
sudo ufw delete allow <port>/<protocol> # удалить разрешение
sudo ufw delete deny <port>/<protocol> # удалить запрет
# Сброс всех правил
sudo ufw reset
# Вывести логи ufw
sudo tail -f -n 100 /var/log/ufw.log
# Изменить уровень логирования
sudo ufw logging <low/medium/high>
# Разрешить доступ ко всем портам с определённого IP-адреса
sudo ufw allow from <IPv4>
# Разрешить доступ к порту с определённого IP-адреса
sudo ufw allow from <IPv4> to any port <port>
```
```
# Пресеты
# Вывести список пресетов
sudo ufw app list
# Открыть все соединения, которые нужны Nginx
sudo ufw allow "Nginx Full"
# Удалить правило для пресета
sudo ufw delete allow "Nginx Full"
```
```
# Интерфейсы
sudo ufw allow in on wg0
sudo ufw allow out on wg0
```
Да, все данные в конечном счёте передаются в бинарном виде, потому что сеть работает с битами и байтами.
Но разница в том, как и где происходит эта "бинаризация" данных.
⚡ HTTP/1.1: Текстовый протокол с бинарной передачей на сетевом уровне
Формат данных: человекочитаемый текст (например, заголовки GET / HTTP/1.1 и тело в формате JSON).
Процесс передачи:
Сервер создаёт текстовый HTTP-запрос.
Когда данные отправляются через сетевой стек (TCP/IP), они преобразуются в биты и байты для физической передачи.
Важно: серверу и клиенту нужно "читать" эти текстовые данные, что добавляет накладные расходы на парсинг и обработку.
🚀 HTTP/2: Бинарный протокол уже на уровне приложения
Формат данных: заголовки и служебные данные сразу преобразуются в бинарные фреймы ещё до того, как они попадут в сетевой стек.
Процесс передачи:
Сервер упаковывает запросы в бинарные фреймы (например, HEADERS, DATA), ещё на уровне приложения.
Эти бинарные фреймы напрямую передаются по TCP, без дополнительной текстовой обработки.
Преимущества:
Меньше накладных расходов на парсинг.
Эффективнее сжатие заголовков (HPACK).
Возможность мультиплексирования (несколько запросов в одном соединении).
🤖 gRPC (на HTTP/2): Максимальная бинаризация
Здесь бинаризация идёт ещё глубже:
Сами данные (не только заголовки) сериализуются в бинарный формат с помощью Protobuf.
Это даёт ещё большую производительность по сравнению с текстовыми форматами (например, JSON).
🎯 Краткий вывод:
HTTP/1.1: текстовый формат на уровне приложения → преобразование в биты на уровне сети.
HTTP/2: бинарный формат уже на уровне приложения → передача в сеть без дополнительного преобразования.
gRPC: данные бинаризуются ещё глубже (через Protobuf) и передаются поверх HTTP/2.
Если нужно, могу показать примеры пакетов в Wireshark для наглядности. 🚀