Перевести конфигурацию WireGuard из iptables в nft

Я устанавливал WireGuard на новый образ ОС Raspberry Pi и хотел перенести на него конфигурацию сервера с другого устройства. Но при вызове интерфейса выяснилось, что он не может найтиiptablesкоманда. Именно тогда я вспомнил, что iptables считается устаревшим. Итак, снова пришло время для новых технологий. ;-)

Проблема в том, что я не могу его использовать. В конфигурации моего сервера WireGuard есть эти строки, я думаю, чтобы позволить клиентам подключаться ко всей моей домашней сети.

      [Interface]
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

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

Поэтому я установил пакет iptables, чтобы получить новыйiptables-translateкоманда, о которой я читал. Он преобразовал первую строку в это:

      PostUp   = nft add rule ip filter FORWARD iifname "%i" counter accept; nft add rule ip filter FORWARD oifname "%i" counter accept; nft add rule ip nat POSTROUTING oifname "eth0" counter masquerade

Теперь гораздо дольше. Другие могут найти это более читабельным. Тест покажет, эквивалентно ли это. Но вторую строку перевести невозможно. Так что я застрял здесь. Что мне написать во второй строке, чтобы снова отключить интерфейс?

Или вообще есть лучшая и простая альтернатива этой конфигурации?

(Я знаю, что у меня уже есть iptables в этой системе. Но кто знает, как долго он останется в репозиториях, поэтому я хотел бы подготовиться сейчас и преобразовать свои материалы, чтобы они были немного более перспективными.)

1 ответ

Или вообще есть лучшая и простая альтернатива этой конфигурации?

Да, добавьте те же правила в свой статический набор правил.

Netfilter на самом деле не требует существования интерфейса при использовании-iилиiifname. Независимо от того, используете ли вы iptables или nft, вы можете просто постоянно держать правило активным — когда интерфейс существует, он будет работать; когда интерфейса не существует, он вообще ничего не делает.

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

Последнее изменение инструментов межсетевого экрана Linux (ipchains на iptables) произошло примерно 20 лет назад.

Текущая версияiptablesКоманда была переписана для использования серверной части nft. (В большинстве дистрибутивов есть пакеты для обоих вариантов, но если у вас есть iptables-translate, то, скорее всего, у вас также есть версия iptables на основе nft.) Это означает, что вы можете продолжать использовать iptables в течение следующих $planned_lifetime_of_nftables лет.

Другие вопросы по тегам