Protocol 47 contra el port TCP 47: dues capçaleres, dues regles
Un número de protocol i un port viuen en capçaleres diferents, així que una regla no pot substituir l'altra. PPTP separa les dues coses, i una casella de port no pot expressar GRE.
Les xarxes d'hotel i els tallafocs de conferències sovint mostren una casella d'allow personalitzada, i algú hi escriu 47 esperant que PPTP funcioni. La regla es crea, el túnel continua fallant, i el següent intent fa servir un número diferent. El que ha anat malament és dins del paquet mateix: IPv4 té un camp de protocol que anomena què ve després de la capçalera IP, mentre que TCP i UDP tenen camps de port que només existeixen quan ets dins d'una d'aquestes capçaleres. No són dues grafies del mateix permís.
La capçalera IPv4 anomena el protocol següent
El camp de protocol és un byte a la capçalera IPv4, i conté un número que descriu la càrrega útil: 6 per a TCP, 17 per a UDP, 47 per a GRE, 50 per a ESP. Tot el que filtra paquets llegeix aquest valor abans de mirar més endins, perquè la capçalera més interna només té sentit un cop se sap el tipus. Canvia un port més endavant a la conversa i aquest camp no s'ha mogut.
Per tant, una regla escrita contra el protocol 47 descriu la capa IP. Cap port no participa gens en la decisió.
Els ports existeixen dins de TCP i UDP, enlloc més
Els ports són identificadors de setze bits dins de les capçaleres TCP i UDP, i la seva feina és separar converses que comparteixen una adreça. Una capçalera GRE porta un valor de tipus de protocol, sovint un EtherType, més claus opcionals per al multiplexatge. Per això l'expressió port 47 no anomena res que un paquet GRE pugui coincidir.
Les interfícies de tallafoc difereixen en quant d'això exposen. Algunes accepten un número de protocol, algunes ofereixen una llista amb noms, i unes poques només accepten TCP o UDP amb ports.
PPTP fa servir les dues capes alhora
PPTP és l'exemple més clar perquè divideix deliberadament la seva feina entre les dues. La connexió de control és una sessió TCP cap al port 1723, i el camí de dades és GRE, protocol 47, sense cap port enlloc. Un tallafoc que permet 1723 i res més deixa començar la negociació i després descarta la càrrega útil. El túnel sembla quedar-se penjat després de l'autenticació en lloc de no connectar-se, i per això el símptoma sovint es reporta com un problema de contrasenya.
| Path | Outer protocol | Port |
|---|---|---|
| Control channel | TCP, protocol 6 | 1723 |
| Data channel | GRE, protocol 47 | None |
Llegeix les dues files per separat quan escriguis la regla, i comprova cadascuna contra la sintaxi del fabricant. Una fila necessita un port, l'altra necessita un número de protocol, i cap entrada única no cobreix les dues.
Per què una pàgina de redirecció de ports no pot expressar GRE
Un formulari de redirecció que només accepta TCP i UDP no pot descriure GRE, sigui com sigui que es digui el formulari. La traducció d'adreces afegeix una segona dificultat, perquè GRE no té ports i el traductor ha de seguir en comptes d'això l'identificador de trucada. Alguns routers domèstics inclouen un assistent que ho gestiona; molts no, i cap entrada addicional d'allow TCP no crearà aquest comportament.
Quan el requisit real és un túnel modern, tria un disseny que faci servir TCP o UDP deliberadament en lloc d'esperar que un traductor ho endevini bé.
L'encapsulament decideix què veu el filtre
L'encapsulament canvia el paquet extern, i el paquet extern és el que una regla fa coincidir. L'ESP natiu és protocol 50, mentre que el trànsit per NAT embolcalla ESP dins d'UDP 4500 perquè sobrevisqui a la traducció d'adreces. Un filtre que permet UDP 4500 mai no veu el protocol 50, i un filtre escrit per al protocol 50 mai no coincideix amb la forma embolcallada.
Pregunta en quin encapsulament s'han posat d'acord el client i la passarel·la, i després escriu la regla per a aquesta forma externa i res més.
Escriu la regla de manera que algú la pugui comprovar
Expressa cada regla com a família d'adreces, protocol extern, ports de transport si n'hi ha, direcció i tots dos extrems. Un revisor pot comparar aquesta frase amb una captura de paquets i arribar a un veredicte. Una instrucció d'obrir 47 no la pot comprovar ningú, i així sobreviu durant anys als manuals de procediments.
Afegeix la prova que ho demostra: connecta't mentre captures a la interfície externa, i confirma el protocol extern i el port que apareixen realment a la traça.