eth0:0 és una etiqueta, no un dispositiu: corregeix la coincidència SNAT
Un comptador a zero vol dir que la regla anomena una interfície que no pot existir. Llegeix el dispositiu real, corregeix la coincidència -o i després tria l'adreça traduïda deliberadament.
Una regla NAT que havia de donar a un pool de clients VPN la seva pròpia adreça pública es queda a zero paquets, mentre que el mateix pool continua sortint amb l'origen equivocat. La regla normalment no s'equivoca en l'adreça; s'equivoca en la interfície. -o eth0:0 fa referència a un dispositiu que no existeix, perquè eth0:0 és una etiqueta enganxada a una adreça, i el dispositiu d'aquesta adreça és eth0. Vigilar els comptadors és la manera més ràpida de confirmar-ho, i la correcció és més petita del que la investigació suggereix.
Comprova com el nucli anomena el dispositiu
Llegeix les dues vistes per separat abans de canviar res:
ip link show
ip address show dev eth0
ip route get 203.0.113.20
El llistat d'enllaços mostra interfícies. El llistat d'adreces pot mostrar una segona adreça IPv4 que porta l'etiqueta: eth0:0, i el dispositiu d'aquesta adreça continua sent eth0. El manual d'adreces d'iproute2 tracta l'etiqueta com un nom de l'adreça, no com un segon enllaç, i aquesta és la distinció sobre la qual gira tot el problema.
La història explica la confusió. La sintaxi antiga ifconfig eth0:0 realment semblava una interfície nova, i els scripts d'aquella època encara se'n refereixen a una. En un sistema actual, l'àlies és una etiqueta sobre una adreça, i res del camí d'encaminament o de netfilter el tracta com un punt de sortida separat.
Comprova què ha coincidit realment la regla
Llegeix els comptadors amb el llistat de regles, no de memòria:
iptables -t nat -L POSTROUTING -v -n --line-numbers
Una regla el comptador de paquets de la qual es queda a zero mentre flueix trànsit coincident no s'avalua, i una condició d'interfície de sortida que anomena eth0:0 és una causa habitual. El dispositiu de sortida seleccionat per la ruta és eth0, així que una condició que busca un altre nom mai no esdevé certa, sigui quina sigui l'adreça d'origen que hagi triat el nucli.
Canvia la condició pel dispositiu real i deixa l'etiqueta fora. Si necessites distingir dos pools de clients que comparteixen aquest dispositiu, distingeix-los per prefix d'origen, no per un nom d'interfície que no pot existir. Dues regles amb coincidències -s sense solapament són llegibles i provables; una regla amb un dispositiu fictici no és cap de les dues coses. Dona a cada regla un comentari que anomeni el pool, perquè d'aquí a sis mesos el prefix sol no dirà a ningú per què és allà.
Comprova la ruta que ha triat el dispositiu
El NAT de postrouting s'executa després que la ruta ja hagi triat una interfície de sortida, així que la interfície de la regla ha de ser la que ha triat la ruta. Pregunta-ho directament al nucli amb ip route get per a una adreça de client representativa i llegeix tant el dispositiu com l'origen que reporta.
Si la resposta anomena eth0, la part d'interfície de la regla queda resolta. Si anomena un dispositiu de túnel, el paquet no arriba mai a la regla que estàs editant, i la cerca es trasllada a la taula d'encaminament i les seves prioritats. Una regla que no coincideix mai perquè el paquet ha sortit per un altre lloc es veu a la sortida dels comptadors igual que una regla amb un dispositiu mal escrit. Confirma quin dels dos casos tens abans d'editar res, perquè el segon necessita un canvi d'encaminament i no un canvi de text.
Tria l'origen traduït deliberadament
Quan el dispositiu és correcte, l'adreça d'origen és una decisió a part. Això és un pool IPv4 il·lustratiu i només una adreça d'exemple:
iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 \
-j SNAT --to-source 203.0.113.20
Escriure una adreça a --to-source no fa que ningú la torni a encaminar cap a tu. El proveïdor superior o el propietari de l'adreça ha de lliurar les respostes d'aquesta adreça a aquest amfitrió, i l'adreça ha de ser una que tinguis autorització per usar. Si no ho és, la regla coincidirà i traduirà, i les respostes continuaran anant a un altre lloc.
Canviar l'adreça d'origen no és el mateix que canviar l'enllaç ascendent. Quan el requisit real és un camí físic diferent, la política d'encaminament ha de seleccionar primer aquest camí; després SNAT reescriu l'origen al dispositiu que la política hagi triat. Afegir més etiquetes a eth0 no proporciona ni la ruta ni l'autorització.
Verifica amb una connexió que acabis d'obrir
Obre una connexió de client nova en lloc de reutilitzar-ne una d'existent. El seguiment de connexions conserva la traducció que va registrar quan va començar el flux, així que una sessió antiga pot continuar usant l'adreça d'origen anterior i fer que una regla nova correcta sembli trencada. Observa com augmenta el comptador i després mira l'origen traduït al cable o a l'extrem remot.
Per a diversos pools que comparteixen una interfície, dona a cadascun una coincidència d'origen explícita i la seva pròpia adreça de traducció, mantén-los a la configuració gestionada del tallafoc i anota l'ordre en què s'avaluen. Després registra què has verificat: el dispositiu de ip route get, el comptador que s'ha mogut i l'origen que ha vist el costat remot. Aquest registre respon al proper informe sense repetir la confusió de l'àlies.