Пакеты клиента отбрасывает сам сервер — его фильтр из таблиц, цепочек и правил.
Межсетевой экран пропускает или отбрасывает пакеты по правилам. В Linux правила хранит ядро, а задаёт их программа nft из набора nftables. Прочитай правила сервера:
Вывод такой, только числа в счётчиках у тебя свои:
Таблица lab_filter собирает цепочки; inet значит, что она для IPv4 и IPv6 сразу. Цепочка input — список правил для пакетов, адресованных самой машине: так её подключает строка hook input. Пакеты, которые машина отправляет сама, проходят цепочку с hook output, а пересылает дальше — с hook forward.
Без sudo nft печатает Operation not permitted (you must be root).
Сайт работает на самом сервере, клиент приходит к нему по сети. В какой цепочке искать правило, которое режет запросы к сайту?
-
forward— пакеты, которые машина пересылает дальше, как маршрутизатор. Запрос к сайту адресован самому серверу. -
output— пакеты, которые сервер отправляет сам. Запрос клиента в сервер входит.
Пакеты, адресованные самой машине, проходят цепочку с hook input — у учебного сервера это input таблицы lab_filter. Пересылаемые дальше — forward, отправленные машиной — output.
Главное в шаге
-
Правила межсетевого экрана задаёт
nft, читает ихsudo nft list ruleset. -
Таблица собирает цепочки, цепочка — правила;
hook input— пакеты, адресованные самой машине.