Waarom een lokale route de standaardroute van de VPN verslaat
Een verbonden subnet en een brede standaardroute door de tunnel zijn verschillende soorten routes. Lees de keuze van de kernel en repareer daarna een overlap zonder hostroutes op te stapelen.
De printer op het bureau blijft werken nadat de tunnel omhoog komt, terwijl een server op het andere kantoor stil naar iets lokaals wordt opgelost. Beide gedragingen komen uit dezelfde regel: de meest specifieke route wint, en een direct aangesloten prefix is zo specifiek als het maar kan. Dat is meestal het ontwerp dat je wilt, en zo steelt een dubbel privaat bereik een extern adres. Lees je eerst de keuze van de kernel, dan wordt een mysterieuze fout een prefixvergelijking.
Een verbonden prefix is specifieker dan een standaardroute
Een tunnel installeert meestal een standaardroute of een set prefixes, terwijl een lokale interface een verbonden prefix plus een route naar het hele LAN draagt. Tussen beide beslist de langste-prefixovereenkomst, dus een bestemming binnen de LAN-prefix bereikt de tunnel nooit. Daarom blijven een printer, de beheerpagina van een router en een lokale NAS bereikbaar terwijl de VPN aan staat. Daarom gaat ook een externe bron binnen een overlappend bereik naar de verkeerde machine.
Privé-adresruimte is niet uniek, en dat twee locaties dezelfde prefix kiezen is gebruikelijk genoeg om op te plannen. Als de bereiken overlappen, komt het lokale antwoord snel en ziet het er gezaghebbend uit, dus de fout wordt makkelijk als inlogprobleem gelezen. De bestemming antwoordde wel, alleen niet degene die je bedoelde.
Lees de keuze die de kernel zou maken
Vraag de kernel welke route hij voor de exacte bestemming zou gebruiken in plaats van de tabel van bovenaf te lezen. Zoek daarna naar beleidsregels die een andere tabel kunnen kiezen. Twee opdrachten beantwoorden beide vragen in een paar seconden.
ip route get 10.20.30.41
ip route show table all | grep -E '10\.|default'
ip rule show
De eerste uitvoer noemt de interface, de volgende hop en het bronadres dat de kernel zou gebruiken, en dat is het antwoord dat telt. Een dev-waarde die naar de lokale bridge wijst betekent dat het pakket nooit in de tunnel komt, wat het statuspaneel van de VPN-client ook beweert. De gefilterde tabellijst laat zien of een andere tabel dezelfde prefix heeft, en de regellijst laat de volgorde zien waarin die tabellen worden geraadpleegd. Een beleidsregel kan een prefix via een bepaalde tabel sturen zelfs wanneer de hoofdtabel het niet eens is, dus die volgorde is deel van het antwoord.
Lokale toegang is een aparte toestemming
Een route hebben is niet hetzelfde als hem mogen gebruiken. De meeste clients kunnen lokale netwerkcommunicatie blokkeren terwijl de tunnel omhoog staat, en die instelling is een beleidsbeslissing, geen routingartefact. Als een vertrouwde dienst dichtbij deel uitmaakt van het ontwerp, schakel dan de ondersteunde lokale-toegangsoptie in in plaats van routes te verzinnen. Als het apparaat op openbare Wi-Fi staat, laat hem dan uit.
De twee lagen falen verschillend. Een geblokkeerde lokale weg geeft een time-out terwijl de route bestaat, terwijl een overlappende route een antwoord van de verkeerde host geeft. Ze onderscheiden kost één query en bespaart een middag aan firewallwijzigingen, en de doorstuurregeling staat beschreven in de doorstuurnotities van strongSwan.
Repareer een overlap zonder hostroutes op te stapelen
Een hostroute voor één adres lijkt een overlap op te lossen en faalt op het moment dat een tweede adres in hetzelfde bereik nodig is. Twintig ervan later kan niemand zeggen welke prefix gezaghebbend is. De duurzame oplossingen zijn een wijziging van adressering, een gedocumenteerde topologie die het dubbele bereik vermijdt, of vertaling aan één kant. Elk kost één keer planningstijd in plaats van onderhoud voor altijd.
Als een tijdelijke hostroute echt nodig is, noteer dan de reden, de eigenaar en de datum ernaast zodat hij later verwijderd kan worden. Test daarna het exacte adres en de dienst plus een openbare bestemming, want een wijziging in lokale toegang die stil niet-verwante toepassingen uit de tunnel houdt is erger dan de oorspronkelijke fout. Houd de lokale prefix en de externe prefix apart opgeschreven; die gewoonte voorkomt dat een werkende lokale ping rondgaat als bewijs dat het externe kantoor bereikbaar is.