Routingtabeller læses som brudte, når gateway-kolonnen står tom, selvom linjen som regel er komplet i sig selv. Feltet via vises kun, når kernen overlader pakken til en næste-hop-adresse; en rute knyttet til en grænseflade når i stedet sine destinationer via opløsning på linklaget eller via en punkt-til-punkt-peer. Læser man kolonnerne fra venstre mod højre, kan man se, hvilket tilfælde man er i, og den læsning bør ske, før nogen redigerer en standardrute. De fleste sager om en manglende gateway ender ved denne forskel.

Læs en rute kolonne for kolonne

Hver post starter med destinationen og dens præfikslængde og tilføjer derefter modifikatorer i et fast ordforråd: via, dev, proto, scope, src og metric. En linje som 198.51.100.0/24 dev tun0 proto kernel scope link src 198.51.100.2 er tæt, men fuldt specificeret. Der mangler intet i den, og der antydes ingen routeradresse.

Fraværet af via er det interessante. Uden næste hop opløser kernen destinationen direkte på den navngivne grænseflade, hvilket for en tunnel betyder at aflevere rammen til tunnel-enheden og lade indkapslingen tage over derfra. proto kernel registrerer, at posten blev installeret automatisk, da en adresse blev tildelt, ikke skrevet af en administrator. scope link siger, at destinationen kan nås på det link uden at passere en router, og src navngiver den adresse, som kernen vil foretrække som kilde for trafik, der matcher.

Læs nu en standardrute på samme måde: default via 192.0.2.254 dev eth0 proto static metric 100. Her er via til stede, fordi pakken faktisk har brug for et næste hop, og det hop skal selv være nåbart på eth0. De to linjer er ikke varianter af hinanden; de besvarer forskellige spørgsmål om, hvor trafikken går hen.

To ruteformer, der forveksles med hinanden

En tunnelsubnetrute og en standardrute ser ens ud på et skærmbillede og opfører sig helt forskelligt. Brug tabellen nedenfor som læsehjælp til felterne, og bekræft derefter de faktiske tal på den maskine, du fejlfinder, i stedet for at stole på et eksempel fra en guide.

Piece of the lineWhat it settlesWhat it says nothing about
The destination and maskWhich packets are eligible to matchWhere those packets leave the host
via plus its addressWhich next hop receives them, and therefore that a router is involvedWhether that router is reachable or sane
devWhich interface carries the encapsulated or raw packetWhether the interface is up or has a carrier
proto and scopeWho installed the entry and how far the destination is considered to beWhether a firewall later drops the traffic

Det, tabellen ikke kan fortælle dig, er hensigten. En direkte rute til et privat område gennem en tunnel er et bevidst design med delt tunnel; den samme form på en vært, der burde sende alt gennem VPN'en, er et symptom. Hensigten ligger i den konfiguration, der frembragte posten, så se på det værktøj, der installerede den, før du konkluderer, at kernen gjorde noget forkert.

På samme måde er en manglende gateway ikke tilladelse til at opfinde en. Hvis en rute virkelig har brug for et næste hop, skal det hop være nåbart på den grænseflade, der bærer det, og for en punkt-til-punkt-tunnel er peer-adressen ikke det samme objekt som den lokale adresse. At behandle den lokale tunneladresse som en Ethernet-router er en almindelig måde at frembringe en rute, der ser korrekt ud og ikke videresender noget.

Spørg kernen, hvilken linje den rent faktisk vil bruge

At læse tabellen er ikke det samme som at udføre opslaget, fordi kernen konsulterer politikregler, flere tabeller og cachede poster, før den svarer. Det udsagnsord, der udfører det rigtige opslag, er ip route get, og det udskriver den rute, som en pakke med disse egenskaber ville tage.

ip route get 203.0.113.37 from 198.51.100.2 iif tun0

Indsæt den destination, du faktisk bekymrer dig om, og tilføj derefter from eller iif, når trafikken er kildevalgt eller videresendt, fordi et almindeligt lokalt opslag kan vælge en anden vej end en videresendt klient. Svaret angiver grænsefladen, den valgte kildeadresse og et eventuelt næste hop, hvilket er de samme oplysninger, som en pakke ville blive routet med i det øjeblik.

Hvis svaret overrasker dig, så udskriv reglerne, før du ændrer noget: ip -4 rule show lister dem i prioritetsrækkefølge, og en VPN-klient, der installerer sin egen tabel eller en regel for markerede pakker, vil slet ikke optræde i hovedtabellen. At liste alle tabeller lukker dette hul.

ip -4 route show table all | grep -E 'tun|default'

Kontroller underlaget, før du erstatter standardruten

Tunnelens egne pakker skal nå det fjerne endepunkt, og de gør det gennem den fysiske grænseflade ved hjælp af den rute, der fandtes, før VPN'en kom op. At erstatte hele standardruten uden at fastgøre det endepunkt sender de indkapslede pakker ind i den tunnel, de skulle bygge, og forbindelsen bryder sammen. Bekræft først endepunktsvejen med et opslag på endepunktsadressen alene.

Hold tre ting adskilt, når du laver ændringen: endepunktsruten, der skal blive på den fysiske grænseflade, de private områder, der skal ind i tunnelen, og standardruten, der afgør alt andet. Bryd dem op i den rækkefølge, anvend en ad gangen, og kør opslaget igen efter hvert skridt. Et mislykket ping bagefter beviser meget lidt i sig selv, da tilladelser, svar-routing, DNS og tjenesten selv alle ligger nedstrøms for en korrekt rute.

Skriv de fire værdier ned, som linjen gav dig før ændringen: destination, næste hop eller dets fravær, enhed og valgt kilde. Hvis en senere ændring flytter nogen af dem, ved du, hvilken beslutning der faktisk blev ændret, og du kan gendanne én post i stedet for at gætte på hele tabellen.

Relaterede artikler