Waarom 'n VPN-roete geen gateway in die uitset van ip route wys nie
'n Reël met 'n toestel en geen gateway is 'n direkte roete, nie 'n stukkende een nie. Lees bestemming, dev en scope, en bevestig dan met ip route get.
Roetelyste word as stukkend gelees wanneer die gateway-kolom leeg is, terwyl die reël gewoonlik op sigself volledig is. Die veld via verskyn net wanneer die kernel die pakket na 'n volgende-hop-adres stuur; 'n roete wat aan 'n koppelvlak geheg is, bereik sy bestemmings eerder deur skakellaag-resolusie of deur 'n punt-tot-punt-eweknie. Om die kolomme van links na regs te lees, sê vir jou in watter geval jy is, en daardie lees moet gebeur voordat iemand 'n standaardroete wysig. Die meeste kaartjies oor 'n ontbrekende gateway eindig by hierdie onderskeid.
Lees 'n roetelyn kolom vir kolom
Elke inskrywing begin met die bestemming en sy voorvoegsellengte, en voeg dan wysigers in 'n vaste woordeskat by: via, dev, proto, scope, src en metric. 'n Reël soos 198.51.100.0/24 dev tun0 proto kernel scope link src 198.51.100.2 is dig maar volledig gespesifiseer. Niks ontbreek daaraan nie, en geen roeteerderadres word geïmpliseer nie.
Die afwesigheid van via is die interessante deel. Sonder 'n volgende hop los die kernel die bestemming direk op die genoemde koppelvlak op, wat vir 'n tonnel beteken om die raam aan die tonneltoestel te gee en die inkapseling daarvandaan te laat oorneem. proto kernel teken aan dat die inskrywing outomaties geïnstalleer is toe 'n adres toegewys is, nie deur 'n administrateur getik nie. scope link sê die bestemming is op daardie skakel bereikbaar sonder om deur 'n roeteerder te gaan, en src noem die adres wat die kernel as bron vir passende verkeer sal verkies.
Lees nou 'n standaardroete op dieselfde manier: default via 192.0.2.254 dev eth0 proto static metric 100. Hier is via teenwoordig omdat die pakket wel 'n volgende hop nodig het, en daardie volgende hop moet self op eth0 bereikbaar wees. Die twee reëls is nie variante van mekaar nie; hulle beantwoord verskillende vrae oor waar verkeer heen gaan.
Twee roetevorms wat met mekaar verwar word
'n Tonnel-subnetroete en 'n standaardroete lyk in 'n skermbeeld soortgelyk en gedra hulle heeltemal anders. Gebruik die tabel hieronder as 'n leeshulp vir die velde, en bevestig dan die werklike getalle op die masjien wat jy ontfout eerder as om 'n voorbeeld uit 'n gids te vertrou.
| Piece of the line | What it settles | What it says nothing about |
|---|---|---|
| The destination and mask | Which packets are eligible to match | Where those packets leave the host |
via plus its address | Which next hop receives them, and therefore that a router is involved | Whether that router is reachable or sane |
dev | Which interface carries the encapsulated or raw packet | Whether the interface is up or has a carrier |
proto and scope | Who installed the entry and how far the destination is considered to be | Whether a firewall later drops the traffic |
Wat die tabel jou nie kan sê nie, is bedoeling. 'n Direkte roete na 'n private reeks deur 'n tonnel is 'n doelbewuste split-tonnel-ontwerp; dieselfde vorm op 'n gasheer wat alles deur die VPN moet stuur, is 'n simptoom. Bedoeling woon in die konfigurasie wat die inskrywing geskep het, so kyk na die gereedskap wat dit geïnstalleer het voordat jy aflei dat die kernel iets verkeerd gedoen het.
Net so is 'n ontbrekende gateway nie toestemming om een te versin nie. As 'n roete werklik 'n volgende hop nodig het, moet die volgende hop bereikbaar wees op die koppelvlak wat dit dra, en vir 'n punt-tot-punt-tonnel is die eweknie-adres nie dieselfde objek as die plaaslike adres nie. Om die plaaslike tonneladres as 'n Ethernet-roeteerder te behandel, is 'n algemene manier om 'n roete te skep wat korrek lyk en niks aanstuur nie.
Vra die kernel watter reël dit werklik gaan gebruik
Om die tabel te lees is nie dieselfde as om die opsoek te doen nie, want die kernel raadpleeg beleidsreëls, verskeie tabelle en gekaste inskrywings voordat dit antwoord. Die werkwoord wat die werklike opsoek doen, is ip route get, en dit druk die roete wat 'n pakket met daardie eienskappe sou volg.
ip route get 203.0.113.37 from 198.51.100.2 iif tun0
Vervang dit met die bestemming waaraan jy regtig aandag gee, en voeg dan from of iif by wanneer die verkeer bron-gekies of deurgestuur word, want 'n gewone plaaslike opsoek kan 'n ander pad kies as 'n deurgestuurde kliënt. Die antwoord noem die koppelvlak, die gekose bronadres en enige volgende hop, wat dieselfde inligting is waarmee 'n pakket op daardie oomblik gerouteer sou word.
As die antwoord jou verras, druk die reëls voordat jy enigiets wysig: ip -4 rule show lys hulle in prioriteitsorde, en 'n VPN-kliënt wat sy eie tabel of 'n reël vir gemerkte pakkette installeer, sal glad nie in die hoof-tabel verskyn nie. Om elke tabel te lys, sluit daardie leemte.
ip -4 route show table all | grep -E 'tun|default'Kontroleer die onderlaag voordat jy die standaard vervang
Die tonnel se eie pakkette moet die afgeleë eindpunt bereik, en hulle doen dit deur die fisiese koppelvlak met die roete wat bestaan het voordat die VPN opgekom het. Om die hele standaardroete te vervang sonder om daardie eindpunt vas te pen, stuur die ingekapselde pakkette in die tonnel in wat hulle veronderstel is om te bou, en die verbinding stort ineen. Bevestig eers die eindpuntpad met 'n opsoek na net die eindpuntadres.
Hou drie dinge apart wanneer jy die verandering maak: die eindpuntroete wat op die fisiese koppelvlak moet bly, die private reekse wat in die tonnel moet ingaan, en die standaard wat alles anders bepaal. Breek hulle in daardie volgorde uitmekaar, pas een op 'n slag toe, en voer die opsoek na elke stap weer uit. 'n Mislukte ping daarna bewys baie min op sigself, want toestemmings, antwoordroetering, DNS en die diens self sit almal stroomaf van 'n korrekte roete.
Skryf die vier waardes neer wat die reël jou voor die wysiging gegee het: bestemming, volgende hop of die afwesigheid daarvan, toestel en gekose bron. As 'n latere verandering enige van hulle verskuif, weet jy watter besluit werklik verander is, en jy kan een inskrywing herstel in plaas daarvan om oor die hele tabel te raai.