Назад | Перейти на главную страницу

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 

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

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

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

Пример небезопасного использования --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

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