VPN-gateway heeft IP-doorsturing nodig: wat je moet controleren
Een gateway kan op zijn eigen adres antwoorden terwijl er niets tussen de interfaces wordt doorgegeven. Controleer doorsturing per familie en daarna de terugweg.
Je client kan het adres van de gateway pingen terwijl elke bron erachter onbereikbaar blijft. Dat paar observaties beschrijft een host die met je praat en een router die niet routeert, wat verschillende rollen op dezelfde machine zijn. Doorsturing is de schakelaar ertussen.
De twee rollen zijn onafhankelijk, en dat geldt ook voor de twee adresfamilies.
Op zijn eigen adres antwoorden bewijst niets
Wanneer een pakket aan de gateway zelf is gericht, verbruikt de lokale stack het en er vindt geen doorsturingsbeslissing plaats. Daarom vertelt een geslaagde ping naar het tunneladres of een beheerinterface je dat de daemon leeft en de tunnel omhoog is, terwijl het niets zegt over verkeer dat bestemd is voor een netwerk achter de doos. De kernel raadpleegt zijn doorsturingspad alleen voor pakketten die niet aan hem zijn gericht.
Lees de eis als een rol, niet als een instelling: deze host moet pakketten tussen twee interfaces verplaatsen. Een laptop die alleen een extern netwerk hoeft te bereiken, neemt die rol nooit op zich, en een site-naar-site-eindpunt altijd. De eis zo lezen verklaart waarom een werkende clientconfiguratie faalt wanneer die naar een gateway wordt verplaatst.
Dezelfde zin geldt voor de firewall voor de doorsturingsbeslissing, die zijn eigen beleid heeft over wat mag worden doorgestuurd.
Controleer elke adresfamilie apart
IPv4-doorsturing is één schakelaar, en IPv6-doorsturing is een andere met zijn eigen gedrag per interface. De eerste inschakelen zegt niets over de tweede, en een dual-stack-client kan de helft van een netwerk bereiken terwijl de rest donker blijft. Twee clients van verschillende families kunnen het daarom oneens zijn over dezelfde gateway. Vraag welke familie de falende client gebruikte voordat je een van beide instellingen bewerkt. Bevestig beide voordat je concludeert dat het routeringsontwerp verkeerd is.
sysctl net.ipv4.ip_forward
sysctl -a --pattern 'net.ipv6.conf.(all|default).forwarding'
nft list ruleset | head -n 40
Op veel distributies is de waarde die je tijdens runtime leest daar geplaatst door een service of een configuratiebestand, dus een wijziging met een eenmalig commando kan bij herstart verdwijnen. Zoek het bestand dat de instelling bezit voordat je de runtimewaarde bewerkt.
Doorsturing is een van vier vereisten
Een werkende doorgestuurde stroom heeft vier dingen tegelijk nodig: de client moet weten dat de bestemming achter de tunnel ligt, de gateway moet een route verder hebben, antwoorden moeten een weg terug hebben, en de firewall moet het verkeer toestaan. Bronvertaling hoort bij dat ontwerp als optie en niet als regel, omdat een particulier gerouteerd netwerk met symmetrische paden het niet nodig heeft en een asymmetrisch netwerk meestal wel. Elk van de vier faalt onafhankelijk, waardoor het repareren van één zelden het symptoom verplaatst. Schrijf alle vier op voordat je een ervan wijzigt.
Cloudplatforms voegen een vijfde overweging toe. Sommige dwingen bron- en bestemmingscontroles af op instanties, waardoor doorgestuurde pakketten worden weggegooid ongeacht hoe de kernel van de gast is geconfigureerd. De eigen netwerkdocumentatie van het platform is daar het gezag, niet de sysctl-uitvoer in de VM.
Test vanaf de client, niet vanaf de gateway
Een test in de eigen shell van de gateway doorloopt geen enkel deel van het doorsturingspad dat je net hebt ingeschakeld. Genereer het verkeer vanaf de client met het probleem, en bevestig dat het iets achter de gateway bereikt in plaats van de gateway zelf. Dat is de enige test die de rol uitoefent die je hebt gewijzigd.
Houd listenerregels en doorsturingsregels gescheiden in je hoofd en in het wijzigingslog. Het openen van de VPN-poort laat clients tot de dienst toe; het geeft hun niets op het netwerk erachter, en de twee zien er identiek uit in een firewalllijst die over jaren is gegroeid.
Als pakketten aankomen en de dienst de gebruiker vervolgens weigert, ben je voorbij netwerken. Ga verder met applicatieautorisatie in plaats van het doorsturingsbeleid opnieuw te verbreden.