ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

iptables против nftables: в чем разница?

iptables против nftables: в чем разница?

Каждый администратор Linux наверняка работал с iptables, давним брандмауэром Linux, который хорошо нам служил в течение многих лет. Но вы, возможно, еще не знакомы с nftables, новичком, намеревающимся предложить нам некоторые столь необходимые обновления и в конечном итоге заменить устаревший iptables.

 

Почему nftables вместо iptables?

Nftables разработан в Netfilter, одной и той же организации, которая в настоящее время поддерживает IPTables. Он был создан для решения проблем с настройкой iptables, а именно масштабируемости и производительности.

Помимо нового синтаксиса и некоторых обновлений, вы обнаружите, что он функционально очень похож на свой предшественника.

Другое оправдание для новой утилиты состоит в том, что инфраструктура iptables стала немного запутанной с iptables, ip6tables, arptables и ebtables, которые предоставляют разные, но схожие функции.

Например, просто неэффективно создавать правила IPv4 в iptables и правила IPv6 в ip6tables и поддерживать их синхронизацию. Nftables стремится заменить все это и быть централизованным решением.

Хотя nftables был включен в ядро ​​Linux с 2014 года, в последнее время она набирает обороты, так как становится все более распространенным. В мире Linux изменения происходят медленно, и устаревшим утилитам часто требуется несколько лет или больше, чтобы постепенно отказаться от их обновленных аналогов.

Nftables становится рекомендуемым брандмауэром, и администраторы Linux должны обновить свои инструменты. Сейчас самое время изучить nftables и обновить существующую конфигурацию iptables.

Если вы годами пользуетесь iptables и не слишком взволнованы идеей изучения совершенно новой утилиты, не волнуйтесь, мы поможем вам в этой статье. Здесь мы рассмотрим различия между nftables и iptables и покажем примеры настройки правил брандмауэра в новом синтаксисе nftables.

 

Цепочки и правила в nftables

В iptables есть три цепочки по умолчанию: ввод, вывод и пересылка. Эти три «цепочки» (и другие цепочки, если они у вас настроены) содержат «правила», и iptables работает путем сопоставления сетевого трафика со списком правил в цепочке. Если исследуемый трафик не соответствует ни одному правилу, в трафике будет использоваться политика цепочки по умолчанию (т. е. ACCEPT, DROP).

Nftables работает аналогично этому, с «цепями» и «правилами». Однако он не начинается с каких-либо базовых цепей, что делает настройку немного более гибкой.

Одна из областей неэффективности для iptables заключается в том, что все данные сети должны проходить одну или несколько из этих вышеупомянутых цепочек, даже если трафик не соответствует каким-либо правилам. Независимо от того, настроены ли у вас цепочки или нет, iptables все равно проверяет данные вашей сети на предмет их соответствия.

 

Установка nftables в Linux

Nftables доступен во всех основных дистрибутивах Linux, и вы можете легко установить его, используя менеджер пакетов ваших дистрибутивов.

В дистрибутиве на основе Ubuntu или Debian вы можете использовать эту команду:

sudo apt install nftables

 

Чтобы убедиться, что nftables запускается автоматически при перезагрузке системы, выполните:

sudo systemctl enable nftables.service

 

Синтаксическая разница между iptables и nftables

Nftables имеет другой и гораздо более простой синтаксис, чем iptables. Давайте будем честными, синтаксис iptables всегда был неясен и требовал дополнительных усилий для изучения. К счастью для тех, кто мигрирует с iptables, nftables по-прежнему принимает старый синтаксис.

Вы также можете использовать утилиту iptables-translate, которая будет принимать команды iptables и преобразовывать их в эквивалент nftables. Это простой способ увидеть разницу между двумя синтаксисами.

Установите iptables-translate в дистрибутиве на основе Ubuntu и Debian с помощью этой команды:

sudo apt install iptables-nftables-compat

 

После установки вы можете передать синтаксис iptables команде iptables-translate, и она вернет эквивалентную команду nftables.

Давайте рассмотрим несколько примеров, чтобы вы могли увидеть, как эти команды отличаются друг от друга.

 

Блокировать входящих соединений

Эта команда заблокирует входящие соединения с IP-адреса 192.168.2.1:

linux@andreyex:~$ iptables-translate -A INPUT -s 192.168.2.1 -j DROP
nft add rule ip filter INPUT ip saddr 192.168.2.1 counter drop

 

Разрешить входящие соединения SSH

Давайте рассмотрим еще несколько примеров — обычные вещи, которые вы обычно вводите в iptables при усилении защиты сервера Linux.

linux@andreyex:~$ iptables-translate -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT tcp dport 22 ct state new,established counter accept

 

Разрешить входящие соединения SSH из определенного диапазона IP

Если вы хотите разрешить входящие SSH-соединения с 192.168.1.0/24:

linux@andreyex:~$ iptables-translate -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip saddr 192.168.1.0/24 tcp dport 22 ct state new,established counter accept

 

Разрешить подключения MySQL к сетевому интерфейсу eth0

Вот синтаксис для iptables и nftables:

linux@andreyex:~$ iptables-translate -A INPUT -i eth0 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT iifname eth0 tcp dport 3306 ct state new,established counter accept

 

Разрешить входящий трафик HTTP и HTTPS

Чтобы разрешить трафик определенного типа f, вот синтаксис для обеих команд:

linux@andreyex:~$ iptables-translate -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip protocol tcp tcp dport { 80,443} ct state new,established counter accept

 

Как видно из этих примеров, синтаксис все еще очень похож на iptables, но команды немного более интуитивно понятны.

 

Регистрация с помощью nftables

Опция «counter», присутствующая в приведенных выше примерах команды nft, указывает nftables подсчитывать количество раз, когда к правилу обращаются, как это делают iptables по умолчанию.

В nftables они являются необязательными и должны быть указаны.

nft add rule ip filter INPUT ip saddr 192.168.2.1 counter accept

 

Nftables имеет встроенные опции для экспорта вашей конфигурации. В настоящее время он поддерживает XML и JSON.

nft export xml

 

Вывод

В этой статье мы объяснили, почему nftables является новым рекомендуемым выбором, когда речь идет о брандмауэрах Linux. Мы также перечислили много различий между старым iptables и более новым nftables, включая их функциональность и синтаксис.

В этой статье показано, почему стоит подумать об обновлении до nftables и о том, как начать работу с новым синтаксисом, с которым вам необходимо ознакомиться, чтобы успешно обновить старые правила iptables.

Если у вас есть вопросы или предложения, пожалуйста, дайте нам знать в комментариях.

Exit mobile version