Begäran kommer in, servern loggar den och klienten rapporterar fortfarande timeout. Den kombinationen betyder att svaret inte hittade vägen tillbaka, och det är ett av de få fel du kan bekräfta från båda ändarna samtidigt. Gå igenom kontrollerna i ordning och stanna när en av dem misslyckas.

Börja med var begäran kom in

Bekräfta att paketet nådde tjänsten innan du undersöker något annat. En loggpost på serversidan, en anslutningsräknare eller en tillåten avlyssning i den bortre änden svarar alla på samma fråga, och att de saknas skickar dig tillbaka till tunneln i stället för vidare till svaret. Det här är kontrollen som skiljer ett vidarebefordringsproblem från ett returvägsproblem.

Om begäran aldrig kom in, stanna här. Tunneln, routingen till det privata prefixet eller åtkomstregeln är ämnet, och returvägen är ännu inte relevant. Notera också källadressen som servern såg. Den är antingen adressen från poolen som klienten fick eller en översatt adress, och den skillnaden avgör vilken av de senare kontrollerna som gäller.

Svaret behöver en rutt till poolen

En fjärråtkomstklient får vanligtvis en adress från en pool, och det privata nätet behöver en rutt tillbaka till den poolen. En server vars standardrutt pekar på sin egen gateway lämnar paketet till den gatewayen, som inte har en aning om var poolen ligger, så svaret dör där. Klienten ser en timeout eftersom ingenting kom tillbaka, och det går inte att skilja från en begäran som aldrig lämnade maskinen.

Kontrollera rutten som servern väljer för klientadressen, inte rutten den använder för sitt eget subnät. De två sökningarna kan ge olika svar, och det andra är det som spelar roll här. Översättning är det alternativa utförandet och det ändrar vad servern ser. Det kan förenkla en returväg, och det tar också bort den ursprungliga klientadressen från serverns loggar, vilket påverkar varje regel eller rapport som bygger på det fältet.

Jämför avlyssningen på servern med avlyssningen på gatewayen

Jämför vad som lämnar servern med vad som kommer in till gatewayen. En avlyssning på serverns utgående gränssnitt och en avlyssning på tunnelgatewayen svarar på olika halvor av frågan, och gapet mellan dem lokaliserar förlusten.

ip route get 10.90.0.14
tcpdump -ni any host 10.90.0.14 and port 443
ip route show table all | grep 10.90.0.0
Where the reply stopsWhat it proves
Request in the server log, nothing on its outbound captureThe server picked a gateway that cannot reach the pool
Reply leaves the server but never shows up at the gatewayLoss on the LAN path, not on the tunnel
Reply reaches the gateway but not the clientReturn translation or tunnel policy, not the server route

En begäran som gatewayen själv genererar är en dålig ersättning för ett klienttest, eftersom den kommer från en annan adress och möter andra regler. Därför kan en lyckad ping från gatewayen och en misslyckad begäran från klienten båda vara sanna.

När det sitter flera routrar på vägen, kontrollera var och en som behöver en rutt till poolen. En design från plats till plats kräver ofta att det avlägsna prefixet är känt på mer än en enhet, och gatewayen själv måste vidarebefordra mellan tunneln och LAN-et; strongSwans anteckningar om vidarebefordran täcker sysctl- och brandvägssidan av det.

Notera poolen, prefixet och ansvarig

Fyra fakta hör hemma i anteckningen: poolen som klienten fick, det privata prefixet som behövdes, routern som ansvarar för svaret och översättningsregeln om den finns. Med dem är en senare gatewayändring en jämförelse och inte en utredning.

Testa sedan igen med en vanlig klient och det riktiga applikationskontot. Att utöka applikationens rättigheter kan inte reparera returvägen för ett paket, och en kontoförändring under den här diagnosen kommer att förvirra nästa jämförelse. Om utförandet vilar på översättning, dokumentera den där serverns loggar läses. Den som ser en okänd källadress i ett revisionsspår bör inte behöva återupptäcka mappningen från ett ärende.

Relaterade artiklar