Soluzione 1:
Prima dai un -p
opzione come -p tcp
o -p udp
.
Esempi:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
iptables -A INPUT -p udp --dport 53 --sport 1024:65535 -j ACCEPT
Puoi anche provare -p all
ma non l'ho mai fatto e non trovo troppo supporto per questo negli esempi.
Soluzione 2:
Il protocollo (-p) è richiesto se usi --dport. Esempio:
-p tcp
Soluzione 3:
@dmourati e @diegows hanno già risposto alla tua prima domanda, quindi affronterò la tua seconda domanda. E domanda bonus. E aggiungerò anche un consiglio bonus;)
iptables -P
solo accetta catene INCORPORATE. Nel filter
tabella, sarebbe INPUT
, OUTPUT
e FORWARD
catene.
Il port forwarding non viene gestito dal INPUT
chain, quindi non devi aprire la porta nel INPUT
catena. Sì essere gestito dal FORWARD
catena, però. Fai attenzione.
Suggerimento bonus: Durante l'apprendimento e/o la risoluzione dei problemi iptables
, l'output di iptables-save
è testa e spalle migliore dell'output di iptables -L -v --line-numbers
. Provalo, rimarrai piacevolmente sorpreso :)
Soluzione 4:
Un'altra possibile soluzione è che ti stai dimenticando di eseguire come root. Mi sono appena imbattuto in questo durante l'utilizzo del tutorial debian
$ iptables -t nat -p tcp -I PREROUTING --src 0/0 --dst 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
iptables v1.8.2 (nf_tables): unknown option "--dport"
$ sudo iptables -t nat -I PREROUTING --src 0/0 --dst 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8080
# OK
Soluzione 5:
Se iptables
segnala che utilizza nftables
, è necessario utilizzare iptables-legacy
invece.
Per esempio:
Usa iptables-legacy -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
Invece di iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
È una domanda vecchia, ma è la prima nei risultati di ricerca.