Protocole 47 contre port TCP 47 : deux en-têtes, deux règles
Un numéro de protocole et un port vivent dans des en-têtes différents, donc une règle ne peut pas remplacer l’autre. PPTP sépare les deux, et une case de port ne peut pas exprimer GRE.
Les réseaux d’hôtel et les pare-feu de conférence affichent souvent une case d’autorisation personnalisée, et quelqu’un y saisit 47 en espérant que PPTP fonctionne. La règle est créée, le tunnel échoue toujours, et la tentative suivante utilise un autre numéro. Ce qui a mal tourné se trouve dans le paquet lui-même : IPv4 possède un champ de protocole qui nomme ce qui suit l’en-tête IP, tandis que TCP et UDP ont des champs de port qui n’existent qu’une fois à l’intérieur de l’un de ces en-têtes. Ce ne sont pas deux orthographes de la même autorisation.
L’en-tête IPv4 nomme le protocole suivant
Le champ de protocole est un octet dans l’en-tête IPv4, et il contient un nombre qui décrit la charge utile : 6 pour TCP, 17 pour UDP, 47 pour GRE, 50 pour ESP. Tout ce qui filtre des paquets lit cette valeur avant de regarder plus loin, car l’en-tête plus profond n’a de sens qu’une fois le type connu. Changez un port plus loin dans la conversation, et ce champ n’a pas bougé.
Une règle écrite contre le protocole 47 décrit donc la couche IP. Aucun port ne participe à la décision.
Les ports existent dans TCP et UDP, nulle part ailleurs
Les ports sont des identifiants de seize bits dans les en-têtes TCP et UDP, et leur rôle est de séparer des conversations qui partagent une adresse. Un en-tête GRE porte une valeur de type de protocole, souvent un EtherType, plus des clés facultatives pour le multiplexage. L’expression port 47 ne nomme donc rien qu’un paquet GRE puisse correspondre.
Les interfaces de pare-feu diffèrent par la quantité de tout cela qu’elles exposent. Certaines acceptent un numéro de protocole, d’autres proposent une liste nommée, et quelques-unes n’acceptent que TCP ou UDP avec des ports.
PPTP utilise les deux couches à la fois
PPTP est l’exemple le plus clair parce qu’il répartit délibérément son travail entre les deux. La connexion de contrôle est une session TCP vers le port 1723, et le chemin de données est GRE, protocole 47, sans aucun port impliqué nulle part. Un pare-feu qui autorise 1723 et rien d’autre laisse la négociation commencer puis jette la charge utile. Le tunnel semble se figer après l’authentification au lieu d’échouer à se connecter, et c’est pourquoi le symptôme est souvent signalé comme un problème de mot de passe.
| Path | Outer protocol | Port |
|---|---|---|
| Control channel | TCP, protocol 6 | 1723 |
| Data channel | GRE, protocol 47 | None |
Lisez les deux lignes séparément lorsque vous écrivez la règle, et vérifiez chacune par rapport à la syntaxe du constructeur. Une ligne a besoin d’un port, l’autre a besoin d’un numéro de protocole, et aucune entrée unique ne couvre les deux.
Pourquoi une page de redirection de port ne peut pas exprimer GRE
Un formulaire de redirection qui n’accepte que TCP et UDP ne peut pas décrire GRE, quel que soit le nom du formulaire. La traduction d’adresses ajoute une seconde difficulté, car GRE n’a pas de ports et le traducteur doit suivre à la place l’identifiant d’appel. Certains routeurs grand public embarquent un assistant qui gère cela ; beaucoup non, et aucune entrée d’autorisation TCP supplémentaire ne créera ce comportement.
Là où un tunnel moderne est l’exigence réelle, choisissez une conception qui utilise délibérément TCP ou UDP plutôt que d’espérer qu’un traducteur devine correctement.
L’encapsulation décide de ce que le filtre voit
L’encapsulation modifie le paquet extérieur, et le paquet extérieur est ce à quoi une règle correspond. ESP natif est le protocole 50, tandis que le passage NAT enveloppe ESP dans UDP 4500 pour qu’il survive à la traduction d’adresses. Un filtre qui autorise UDP 4500 ne voit jamais le protocole 50, et un filtre écrit pour le protocole 50 ne correspond jamais à la forme enveloppée.
Demandez sur quelle encapsulation le client et la passerelle se sont mis d’accord, puis écrivez la règle pour cette forme extérieure et rien de plus.
Écrivez la règle pour que quelqu’un puisse la vérifier
Exprimez chaque règle comme famille d’adresses, protocole extérieur, ports de transport s’il y en a, direction et les deux extrémités. Un relecteur peut comparer cette phrase à une capture de paquets et rendre un verdict. Une instruction d’ouvrir 47 ne peut être vérifiée par personne, et c’est ainsi qu’elle survit des années dans les procédures.
Ajoutez le test qui le prouve : connectez-vous en capturant sur l’interface extérieure, et confirmez le protocole extérieur et le port qui apparaissent réellement dans la trace.