Iptables - to, кажется, работает вместо -to-destination, не так ли?

Моя строка в /etc/network/interfaces выглядит следующим образом:

post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 7997 -j DNAT --to 10.4.0.3:22

Кажется, он работает нормально для пересылки SSH и других подобных правил; HTTP и HTTPS трафик, а также. Когда я смотрю на страницы руководства, директива:

--to

кажется, делает что-то совершенно другое:

--to-destination 

Какую директиву я бы ожидал. На странице руководства по расширениям iptables есть 4 упоминания о "--to ". Какой из них используется?

Почему это все еще работает? Это правильное использование? Если нет, безопасно ли это использовать таким образом, или я должен изменить его на --to-destination?

1 ответ

Парсер xtables (arptables/ebtables/iptables/ip6tables) позволяет использовать короткие имена опций match/target, если он может быть распознан: парсер аргументов пытается угадать опцию путем сравнения начала строки аргумента с именем опции. Но это не всегда безопасно. Параметры соответствия имеют более высокий приоритет в порядке распознавания, чем целевые параметры.

Пример небезопасного использования --to опция:

:~# iptables -t nat -A PREROUTING -p udp -m string --string "badword" \ -j DNAT --to 192.168.10.1 iptables v1.6.2: string: bad value for option "--to", or out of range (0-65535). Try `iptables -h' or 'iptables --help' for more information.

В этом примере парсер распознал --to опция как опция для совпадения строк, и команда завершается неудачно, потому что подпаратор совпадения строк ожидает целочисленное значение, а не IP-адрес.

Но эта версия той же команды будет выполнена без ошибок:

:~# iptables -t nat -A PREROUTING -p udp -m string --st "badword" --al bm \ -j DNAT --to-d 192.168.10.1

В этом примере:

  • --st знак равно --string
  • --al знак равно --algo
  • --to-d знак равно --to-destination

Кроме того, вы не можете использовать короткие версии совпадений и целевых имен.

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