### на базе 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 /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 / # удалить разрешение sudo ufw delete deny / # удалить запрет # Сброс всех правил sudo ufw reset # Вывести логи ufw sudo tail -f -n 100 /var/log/ufw.log # Изменить уровень логирования sudo ufw logging # Разрешить доступ ко всем портам с определённого IP-адреса sudo ufw allow from # Разрешить доступ к порту с определённого IP-адреса sudo ufw allow from to any 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 для наглядности. 🚀