Risposte:
Con l' -p tcp
opzione il modulo tcp è già caricato e quindi è in qualche modo ridondante e non è necessario utilizzare l' -m tcp
opzione e non vedo alcun motivo per cui l'uso di questa opzione renderebbe la regola più sicura.
Si prega di consultare la pagina man di iptables per una migliore comprensione e confronto:
-p, --protocol [!] protocol
Il protocollo della regola o del pacchetto da controllare. Il protocollo specificato può essere uno di tcp, udp, icmp o tutti, oppure può essere un valore numerico, che rappresenta uno di questi protocolli o uno diverso. È anche consentito un nome di protocollo da / etc / protocols. Un "!" l'argomento prima del protocollo inverte il test. Il numero zero è equivalente a tutti. Il protocollo tutto corrisponderà a tutti i protocolli e viene considerato predefinito quando questa opzione viene omessa.
...
Estensioni partita
iptables può utilizzare moduli di corrispondenza pacchetti estesi. Questi vengono caricati in due modi: implicitamente, quando viene specificato -p o --protocol, oppure con le opzioni -m o --match, seguite dal nome del modulo corrispondente; successivamente, sono disponibili varie opzioni di riga di comando aggiuntive, a seconda del modulo specifico. È possibile specificare più moduli di corrispondenza estesa in una riga e utilizzare le opzioni -h o --help dopo aver specificato il modulo per ricevere assistenza specifica per quel modulo.
E per un elenco di opzioni disponibili con -p tcp
vedere qui:
http://ipset.netfilter.org/iptables-extensions.man.html#lbCF
Come detto sopra, con l'uso -m
dell'opzione è possibile aggiungere moduli di estensione e sono quindi disponibili più opzioni di corrispondenza. Ad esempio il modulo CPU :
processore
[!] --cpu numero
Abbina la CPU che gestisce questo pacchetto. i cpus sono numerati da 0 a NR_CPUS-1 Può essere utilizzato in combinazione con RPS (Remote Packet Steering) o NIC multiqueue per distribuire il traffico di rete su diverse code.
Esempio:
iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-port 8081
Disponibile da Linux 2.6.36.
Elenco completo delle estensioni di iptables.
Domanda aggiuntiva dall'OP: non capisco cosa corrisponde a -m. Quale stringa? -m tcp corrisponde a cosa? Cerca di trovare la parola "tcp" dove?
Risposta: -m
è per abbinare il nome del modulo e non la stringa. Utilizzando un modulo particolare si ottengono determinate opzioni da abbinare. Vedi l'esempio del modulo cpu sopra. Con il -m tcp
modulo viene caricato tcp. Il modulo tcp consente alcune opzioni: --dport, --sport, --tcp-flags, --syn, --tcp-option
da usare nelle regole di iptables. Ma usare -p tcp
già abilita il modulo tcp, ecco perché si possono ancora usare quelle opzioni anche senza usare -m tcp
. Spero che cancella tutta la tua confusione.
-m
opzione viene effettivamente utilizzata per caricare extension modules
che fornisce opzioni extra. Vedi la mia risposta agli aggiornamenti e il link per esempio.
-m tcp
opzione. --dport
fa parte del modulo tcp e funzionerà -p tcp
solo con . Si prega di fare nuovamente riferimento alla mia risposta.