Fire kontroller skiller en fungerende merkeregel fra en fungerende rute: hvilket merke regelen leser, om pakken fortsatt bærer det ved oppslaget, om et tilkoblingsmerke ble gjenopprettet på senere pakker, og om om masken og prioriteten til den samsvarende regelen tillater at den utløses. En teller som øker beviser bare at en eller annen regel samsvarte med noe. Den sier ingenting om hva pakken bar da kjernen valgte veien sin.

De to merkene lever på forskjellige steder og utløper etter forskjellige tidsplaner.

To merker, to levetider

Et pakkemerke tilhører én skb, reiser med den gjennom krokene og forbrukes av policerutingens fwmark-velger. Et tilkoblingsmerke tilhører conntrack-oppføringen, består gjennom pakkene i den flyten og er usynlig for ruteregelen til noe kopierer det tilbake. Å lagre et pakkemerke i tilkoblingen er en lagring; å gjenopprette det er en egen handling. Ingen av dem skjer implisitt.

Derfor kan et regelsett se konsistent ut mens rutningsbeslutningen ser null: verdien ble lagret, og ingenting gjenopprettet den.

Å kopiere mellom dem er et trinn du skriver

De to viktige utsagnene går i motsatte retninger: det ene lagrer pakkens merke i tilkoblingen, det andre laster tilkoblingens merke på pakken. Hvilken du trenger avhenger av når klassifiseringen skjer i forhold til flyten. Et design kan trenge bare pakkemerket, og å legge til conntrack-merking fordi en midlertidig løsning brukte begge, er måten en enkel policy får en annen feilmodus.

ct mark set meta mark
meta mark set ct mark

Skriv ned retningen ved siden av regelen, for den er ikke åpenbar fra syntaksen ved første øyekast. Den første linjen lagrer, den andre gjenoppretter, og ingen av dem forutsetter den andre.

Klassifiser før oppslaget som forbruker det

Lokalt generert trafikk og trafikk videresendt fra et LAN passerer forskjellige kroker og når rutningsbeslutninger på forskjellige tidspunkter. En utregel som virker for ruterens egne tilkoblinger beviser ikke at en videresendt klients pakke ble merket før oppslaget. Plasser klassifiseringen der oppslaget som forbruker den ennå ikke har skjedd, og kontroller om senere regler i samme kjede overskriver verdien. Rekkefølgen i en kjede er en del av konfigurasjonen, ikke en implementasjonsdetalj.

Vedvarende tilkoblingstilstand trenger også en tydelig plan. Hvis bare den første pakken i en flyt klassifiseres, trenger senere pakker å få det lagrede merket gjenopprettet, ellers tar de den umerkede veien. Det er forskjellen mellom et merke som beskriver en tilkobling og et som beskriver en pakke.

Still ruten et merket spørsmål

ip route get 10.77.0.10 mark 0x2

Undersøk reglene og tabellen, og spør deretter ruten med merket inkludert, i tillegg til kilden eller det inngående grensesnittet når de påvirker policyen. Et vanlig umerket oppslag svarer på et annet spørsmål og vil gjerne rapportere veien du ikke ønsket. Kontroller reglens maske og prioritet så vel som verdien, og bekreft at den valgte tabellen inneholder en brukbar rute.

En teller som øker er bevis for at en eller annen regel samsvarte med en eller annen pakke. Det er ikke bevis for at den endelige pakken bar det tiltenkte merket på riktig beslutningspunkt.

Les merket, retningen, tidspunktet og masken. Fire kontroller, og ruten slutter å være et mysterium.

Relaterte artikler