Этот обходной путь может помочь, но он недостаточно проверен:
fun () {
v1=$1
v2=$2
for v in "$v1" "$v2"
do
case "$v" in
name=*) name=${v/*=/};;
age=*) age=${v/*=/};;
*) echo "unexpected $v, please use name and age" ;;
esac
done
echo "name=$name age=$age"
}
выход:
fun "name=John" "age=22"
name=John age=22
fun "age=22" "name=John"
name=John age=22
Попробуйте добавить -m tcp
между -p tcp
и --dport 80
.
Kali (и debian buster )на самом деле используют nftables -, которым вы захотите следовать https://wiki.debian.org/nftables, чтобы вернуться к устаревшей версии, которую рекомендуют использовать большинство веб-сайтов. Ничего страшного, если arptables и ebtables говорят, что их не существует. nftables — это новый способ ведения дел, если люди когда-нибудь перейдут на него.
У меня была та же проблема, я обнаружил, что Kali использует nftables
, поэтому я использовал режим iptables-legacy
, который предоставляет nftables. Таким образом, команда будет:
iptables-legacy -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables-legacy
означает, что больше не работает в Debian 11.
Добавление -m tcp
между -p tcp
и --dport 80
решило это для меня, как было предложено в ответе Джозефа. Он использует iptables-extensions
для добавления параметра --dport
для tcp и других протоколов, см. здесь
В Debian 11 у меня возникла проблема, связанная с тем, что iptables не смог загрузить расширения, заявляющие:
iptables v1.8.7 (legacy): Couldn't load match 'tcp':No such file or directory
Мне удалось решить эту проблему, явно добавив /lib/x86_64-linux-gnu/xtables
к /etc/ld.so.conf.d/x86_64-linux-gnu.conf
и перезагрузив компьютер.