Моя строка в / 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 extension имеется 4 упоминания "--to". Какой из них используется?
Почему он все еще работает? Это правильное использование? Если это небезопасно использовать таким способом, или мне следует изменить его на --to-destination?
Парсер xtables (arptables / ebtables / iptables / ip6tables) позволяет использовать короткие имена опций соответствия / цели, если они могут быть распознаны: парсер аргументов пытается угадать опцию путем сравнения начала строки аргумента с именем опции. Но это не всегда безопасно. Параметры сопоставления имеют более высокий приоритет в порядке распознавания, чем параметры цели.
Пример небезопасного использования параметра от - до
:
: ~ # iptables -t nat -A PREROUTING -p udp - m строка --string "плохое слово" \
-j DNAT - к 192.168.10.1
iptables v1.6.2: строка: неверное значение параметра «--to» или вне допустимого диапазона (0-65535).
Для получения дополнительной информации попробуйте `iptables -h 'или' iptables --help '.
В этом примере синтаксический анализатор распознал параметр - до
как параметр соответствия строки, и команда не выполняется, поскольку подпараметр соответствия строки ожидает целочисленное значение, а не IP-адрес.
Но эта версия той же команды будет выполнена без ошибок:
: ~ # iptables -t nat -A PREROUTING -p udp -m строка --st "плохое слово" --al bm \
-j DNAT --to-d 192.168.10.1
В этом примере:
- st
= - строка
- al
= - algo
- to-d
= - to-destination
Кроме того, вы не можете использовать короткие версии совпадений и имен целей.