J'ai cette règle dans mes iptables:
iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP
Ai-je vraiment besoin de "-m tcp"? J'utilise déjà "-p tcp", dois-je donc utiliser "-m tcp" pour être plus sûr?
Avec l' -p tcp
option, le module tcp est déjà chargé et il est donc quelque peu redondant et pas indispensable d'utiliser l' -m tcp
option et je ne vois aucune raison pour laquelle l'utilisation de cette option rendrait la règle plus sûre.
Veuillez consulter la page de manuel iptables pour une meilleure compréhension et comparaison:
-p, --protocole [!] protocole
Le protocole de la règle ou du paquet à vérifier. Le protocole spécifié peut être l'un des protocoles tcp, udp, icmp ou tous, ou il peut s'agir d'une valeur numérique, représentant l'un de ces protocoles ou un autre. Un nom de protocole de / etc / protocoles est également autorisé. UNE "!" avant que le protocole n'inverse le test. Le nombre zéro est équivalent à tous. Protocole tout correspondra à tous les protocoles et est pris par défaut lorsque cette option est omise.
...
Extensions de correspondance
iptables peut utiliser des modules de correspondance de paquets étendus. Ceux-ci sont chargés de deux manières: implicitement, lorsque -p ou --protocol est spécifié, ou avec les options -m ou --match, suivies du nom du module correspondant; après cela, diverses options de ligne de commande supplémentaires deviennent disponibles, selon le module spécifique. Vous pouvez spécifier plusieurs modules de correspondance étendue sur une seule ligne et vous pouvez utiliser les options -h ou --help une fois le module spécifié pour recevoir de l'aide spécifique à ce module.
Et pour une liste des options disponibles avec -p tcp
voir ici:
http://ipset.netfilter.org/iptables-extensions.man.html#lbCF
Comme indiqué ci-dessus, avec l'utilisation de l' -m
option, il est possible d'ajouter des modules d'extension et plus d'options de correspondance sont alors disponibles. Par exemple le module cpu :
CPU
[!] - numéro du processeur
Match cpu manipulant ce paquet. les cpus sont numérotés de 0 à NR_CPUS-1 Peut être utilisé en combinaison avec RPS (Remote Packet Steering) ou des cartes réseau à plusieurs files d'attente pour répartir le trafic réseau sur différentes files d'attente.
Exemple:
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
Disponible depuis Linux 2.6.36.
Liste complète des extensions iptables.
Question supplémentaire de OP: je ne comprends pas ce que fait -m. Quelle chaîne? -m tcp correspond à quoi? Il essaie de trouver le mot "tcp" où?
Réponse: -m
correspond au nom du module correspondant et non à la chaîne. En utilisant un module particulier, vous obtenez certaines options pour correspondre. Voir l'exemple de module cpu ci-dessus. Avec le -m tcp
module tcp est chargé. Le module tcp permet certaines options: --dport, --sport, --tcp-flags, --syn, --tcp-option
à utiliser dans les règles iptables. Mais l'utilisation -p tcp
active déjà le module tcp, c'est pourquoi on peut toujours utiliser ces options même sans les utiliser -m tcp
. J'espère que cela effacera toute votre confusion.
-m
option est en fait utilisée pour chargerextension modules
qui fournit des options supplémentaires. Voir ma réponse mise à jour et le lien par exemple.-m tcp
option.--dport
fait partie du module tcp et ne fonctionnera qu'avec-p tcp
. Veuillez vous référer à nouveau à ma réponse.