Ruteregelen læser pakkemarkeringen, ikke conntrack
Policerouting læser pakkemarkeringen; conntrack gemmer en anden værdi med et længere liv. At kopiere mellem dem er et trin, som nogen skal skrive.
Fire kontroller adskiller en fungerende markeregel fra en fungerende rute: hvilken markering reglen læser, om pakken stadig bærer den ved opslaget, om en forbindelsesmarkering blev gendannet på senere pakker, og om at den matchende regels maske og prioritet tillader den at udløse. En tæller, der stiger, beviser kun, at en eller anden regel matchede noget. Den siger intet om, hvad pakken bar, da kernen valgte dens vej.
De to markeringer lever forskellige steder og udløber efter forskellige skemaer.
To markeringer, to levetider
En pakkemarkering hører til én skb, rejser med den gennem krogene og forbruges af policeroutings fwmark-vælger. En forbindelsesmarkering hører til conntrack-posten, består gennem den flows pakker og er usynlig for ruteregelen, indtil noget kopierer den tilbage. At gemme en pakkemarkering i forbindelsen er en lagring; at gendanne den er en separat handling. Ingen af dem sker af sig selv.
Derfor kan et regelsæt se konsistent ud, mens rutningsbeslutningen ser nul: værdien blev gemt, og intet gendannede den.
Kopiering mellem dem er et trin, du skriver
De to afgørende udsagn går i modsatte retninger: det ene gemmer pakkens markering i forbindelsen, det andet indlæser forbindelsens markering på pakken. Hvilken du har brug for, afhænger af, hvornår klassificeringen sker i forhold til flowet. Et design kan have brug for kun pakkemarkeringen, og at tilføje conntrack-markering, fordi en midlertidig løsning brugte begge, er måden, hvorpå en simpel politik får en anden fejltilstand.
ct mark set meta mark meta mark set ct mark
Skriv retningen ned ved siden af reglen, for den er ikke indlysende ud fra syntaksen ved første øjekast. Den første linje gemmer, den anden gendanner, og ingen af dem forudsætter den anden.
Klassificér før det opslag, der forbruger det
Lokalt genereret trafik og trafik videresendt fra et LAN passerer forskellige kroge og når rutningsbeslutninger på forskellige tidspunkter. En outputregel, der virker for routerens egne forbindelser, beviser ikke, at en videresendt klients pakke blev markeret før sit opslag. Anbring klassificeringen der, hvor det opslag, der forbruger den, endnu ikke er sket, og kontrollér, om senere regler i samme kæde overskriver værdien. Rækkefølgen i en kæde er en del af konfigurationen, ikke en implementeringsdetalje.
Vedvarende forbindelsestilstand kræver også en eksplicit plan. Hvis kun den første pakke i et flow klassificeres, skal senere pakker have den gemte markering gendannet, ellers tager de den umarkerede vej. Det er forskellen mellem en markering, der beskriver en forbindelse, og en der beskriver en pakke.
Stil ruten et markeret spørgsmål
ip route get 10.77.0.10 mark 0x2
Undersøg reglerne og tabellen, og spørg derefter ruten med markeringen inkluderet, plus kilden eller den indgående grænseflade, når de påvirker politikken. Et almindeligt umarkeret opslag besvarer et andet spørgsmål og vil med glæde rapportere den vej, du ikke ønskede. Kontrollér reglens maske og prioritet såvel som dens værdi, og bekræft, at den valgte tabel indeholder en brugbar rute.
En stigende tæller er bevis for, at en eller anden regel matchede en eller anden pakke. Det er ikke bevis for, at den endelige pakke bar den tilsigtede markering på det rigtige beslutningspunkt.
Læs markeringen, retningen, timingen og masken. Fire kontroller, og ruten holder op med at være en gåde.