rasbian – iptables неизвестный параметр --to или --to-destination

Вопрос или проблема

Я пытаюсь выполнить следующую команду на своей системе Raspbian

sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 2222 -j DNAT --to-destination 192.168.2.241:22

iptables говорит:

iptables v1.8.2 (nf_tables): неизвестный параметр "--to-destination"
Попробуйте `iptables -h` или `iptables --help` для получения дополнительной информации.

Та же проблема возникает, если я заменяю --to-destination на --to.

Я довольно нов в iptables и не смог разобраться с проблемой при поиске в интернете.

Я понимаю, что в какой-то момент iptables изменяется на “nf_tables”? Это уже произошло в Raspbian? Является ли это источником моей проблемы?

Эта команда работает на моем RPi с Raspbian 10 Buster.

Может быть, у вас поврежденная установка с отсутствующими файлами? Или некоторые нестандартные настройки?

Замените SD-карту на чистую новую систему Raspbian и попробуйте снова. Это должно сработать, команда правильная.

Возможно, не загружен необходимый модуль

modprobe xt_nat

Ответ или решение

На системы Raspbian, начиная с версии 10 (Buster), действительно существует переход на новую подсистему фильтрации пакетов, известную как nf_tables. Эта система может вызывать некоторые проблемы с некоторыми командами iptables, которые раньше работали на более старых версиях.

Ваше сообщение об ошибке, указывающее на то, что --to-destination является неизвестной опцией, может быть связано с тем, что вы используете версию iptables, которая работает с nf_tables, а не с классической версией iptables. В nf_tables синтаксис отличается от традиционного, и некоторые параметры могут быть недоступны в старом формате.

Вот шаги, которые вы можете предпринять для решения данной проблемы:

  1. Проверьте версию iptables. Введите команду:

    iptables --version

    Если версия выглядит как iptables v1.8.x (nf_tables), это значит, что вы используете новую подсистему.

  2. Убедитесь, что модуль NAT загружен. Попробуйте загрузить модуль NAT, если он ещё не загружен:

    sudo modprobe xt_nat
  3. Используйте альтернативный синтаксис nftables. Если вы хотите воспользоваться новыми возможностями nf_tables, попробуйте воспользоваться командой nft:

    sudo nft add table ip nat
    sudo nft add chain ip nat prerouting { type nat hook prerouting priority 0; }
    sudo nft add rule ip nat prerouting ip daddr 192.168.2.241 tcp dport 2222 dnat 192.168.2.241:22
  4. Вернуться к классической версии iptables. Если вам нужно сохранить именно старый синтаксис, вы можете использовать следующую команду, чтобы запустить iptables в совместимом режиме:

    sudo update-alternatives --config iptables

    Это позволит выбрать между iptables в формате legacy и nf_tables.

  5. Переустановите iptables. Если ничего не помогает, возможно, стоит переустановить iptables, чтобы убедиться, что установка не повреждена:

    sudo apt-get purge iptables
    sudo apt-get install iptables
  6. Проверьте наличие обновлений системы. Убедитесь, что вы используете последнюю версию Raspbian. Это может помочь избавиться от некоторых ошибок:

    sudo apt-get update
    sudo apt-get upgrade

Если после выполнения всех вышеуказанных шагов проблема не решается, возможно, вам стоит рассмотреть возможность установки свежей версии Raspbian на новую флешку, чтобы избежать некорректных настроек и проблем с зависимостями.

Надеюсь, эти рекомендации помогут вам разобраться с вашей проблемой.

Оцените материал
Добавить комментарий

Капча загружается...