U hebt een werkende OpenVPN-server en een host waarop ook de apparaatsoftware van Cloudflare draait, en de voor de hand liggende volgende stap lijkt het verkeer van clients daarheen te sturen. Twee werkende verbindingen op één machine vormen samen geen transitgateway. Wat ontbreekt, is een gedocumenteerde rol om pakketten door te sturen die aan iemand anders toebehoren, en een beleid dat die pakketten classificeert wanneer ze aankomen.

Voor elke regel komen vier vragen: welk verkeer komt binnen, waar gaat het daarna heen, hoe vinden de antwoorden de weg terug, en wat doet het ontwerp als dat tweede pad faalt. De eerste twee zijn capaciteitsvragen.

Twee diensten op één host zijn geen transitpad

Een apparaatclient is gebouwd om verkeer af te handelen dat ontstaat op de machine waarop hij draait. Hij onderschept naamresolutie, of geselecteerd applicatieverkeer, en stuurt dat via zijn eigen tunnel, en zijn beleid is geschreven voor de gebruiker van dat apparaat en de processen van dat apparaat. Een pakket dat vanaf een OpenVPN-client wordt doorgestuurd is geen lokale uitvoer, dus dezelfde regels classificeren het niet. Dat is geen configuratiedetail dat u met een bredere regel kunt afdekken, want het bepaalt of de software het pakket überhaupt ziet.

Daarom is de ontwerpvraag een capaciteitsvraag. Ofwel heeft het geïnstalleerde product een gedocumenteerde rol die verkeer voor andere netwerken doorstuurt, ofwel hoort de transitfunctie ergens heel anders thuis.

Welke Cloudflare-rol mag doorsturen

De apparaatclient van Cloudflare biedt modi die in bereik verschillen: alleen naamresolutie, verkeer van het apparaat en soms beide. Geen van die modi maakt van de host een router voor een privébereik dat via een andere tunnel binnenkomt. De speciale routingrol is een apart product met zijn eigen connector, registratie en netwerkmodel.

QuestionWhat has to answer it
Does the installed product forward packets from other hosts?A documented routing or connector role, not a device mode
Which prefixes does the connector advertise?Its own configuration and status output
Does the server's own transport still take the old path?ip route get for the endpoint, before and after
Do replies return through the same path?Connection tracking counters on the forward rule

Controleer de geïnstalleerde rol voordat u routes eromheen ontwerpt. Lees welke interface de connector aanmaakt, of hij specifieke prefixen of een standaardroute aankondigt, en of het lokale beleid ook voor doorgestuurde pakketten geldt. Wordt alleen lokaal verkeer afgehandeld, dan kan de OpenVPN-server het transitpunt niet zijn, hoe de vertaalregel ook is geschreven.

Hier moet ook een eis voor een openbare uitgang precies worden geformuleerd. Een door Cloudflare geleverde uitgang voor doorgestuurd clientverkeer is een specifiek gebruiksgeval, en dat moet worden bevestigd tegen de dienst die u feitelijk hebt.

Houd de buitenste tunnel onafhankelijk van de nieuwe route

Op het moment dat u een standaardroute naar de nieuwe interface toevoegt, begint het eigen uitgaande verkeer van de server erom te concurreren, en dat omvat antwoorden aan de OpenVPN-clients en uw SSH-sessie naar de machine. Het gebruikelijke symptoom is een tunnel die tot stand komt en daarna sterft, of een beheerder die buiten wordt buitengesloten terwijl de wijziging te werken lijkt. Vergelijk ip route get voor het eindpunt voor en na, en gebruik beleidsrouting of een hostroute om het eigen transport van de server te houden waar het was. Voer die vergelijking vanaf de machine zelf uit, want het eigen beeld van de server van zijn route is wat telt.

Een uitzondering voor het openbare adres van de server is op zichzelf niet genoeg, want de terugweg van elke externe beheerder is een andere stroom. Bepaal welke van die stromen de wijziging moeten overleven, en verifieer daarna elk ervan in plaats van aan te nemen dat de eerste de rest dekt.

Beperk het doorsturen en de vertaling tot één stroom

Ontvangen pakketten volgen het doorstuurpad, niet het lokale uitvoerpad, dus de regel die telt leeft in de forward-hook. Waar de volgende interface vertaling nodig heeft, beperk de bron tot de clientpool, de bestemming tot wat is toegestaan en de uitgang tot die ene interface. Een masquerade-regel die alleen aan een interface is gekoppeld, kiest zelf geen route en staat doorsturen langs geen enkel ander filter toe.

Bepaal het fail-closed-gedrag vooraf en test het dan. Stop het volgende pad en bevestig dat clients de bedoelde uitgang verliezen in plaats van stil terug te vallen op de gewone uplink, want dat is de uitkomst die niemand opmerkt tot het verkeer door de verkeerde deur naar buiten gaat. Herhaal de controle voor naamresolutie en voor IPv6, want een regelset alleen voor v4 laat een v6-pad open.

Schrijf de vier antwoorden op waarop u uitkwam en de observatie die elk daarvan aantoont. Een transitpad dat u kunt beschrijven, is er een die u bij de volgende incidentreview kunt verdedigen.

Gerelateerde artikelen