PPTP-clients op DD-WRT bereiken elkaar niet: vijf controles
Een masker van 255.255.255.255 is correct op een PPP-link. Werk vijf controles in volgorde af: pool, CHAP-regel, peer-routes, FORWARD-beleid en internetbedoeling.
Twee laptops bellen in op de PPTP-server op een DD-WRT-doos, elk krijgt een adres, en geen van beide kan de ander pingen. Gedeelde mappen verschijnen nooit en de eerste gedachte is dat het masker 255.255.255.255 dat de router uitgeeft wel fout moet zijn. Dat is niet de oorzaak, en het veranderen ervan levert geen enkele nieuwe buur op. Werk de vijf controles hieronder in volgorde af en stop zodra er één faalt, want elke heeft een andere remedie.
Controle één: de /32 is niet de fout
PPTP draagt PPP, en een PPP-link verbindt precies twee eindpunten: je client en de server. Een netmasker beschrijft welke adressen een lokaal segment delen, en hier is geen segment, alleen de peer aan de andere kant van één draad. Een masker van louter enen zegt precies dat, dus DD-WRT geeft de juiste waarde voor dit linktype. Het adres is een peer-adres, geen interface-adres op een LAN.
Een masker van 255.255.255.0 hoort op een gedeeld medium met honderden apparaten, en het op een PPP-interface zetten maakt de andere kant van de tunnel ook geen buur.
Controle twee: lees de waarden op de PPTP-serverpagina
Alle instellingen die ertoe doen staan onder Services, VPN, PPTP-server. Schakel de server in, zet het serveradres op het LAN-adres van de router, en houd het clientbereik buiten de DHCP-pool zodat een inbellende client en een bekabelde machine niet hetzelfde adres krijgen. Voeg onder CHAP-Secrets per account één regel toe in de vorm username * password *, zonder spaties in de naam. Toepassen, en verbind daarna met een profiel dat de router en een van die accounts noemt.
Waar de client stopt, vertelt je welke laag je moet bekijken. Een client die zich authenticeert maar geen adres krijgt, is een pool- of geheimenprobleem; een client die een adres krijgt en niets bereikt, is een routing- of firewallprobleem.
Controle drie: zoek een route tussen de twee peers
Elke tunnel die op de router eindigt is zijn eigen interface, meestal ppp0, ppp1 enzovoort. Verkeer van de ene client naar de andere moet tussen die interfaces worden gerouteerd, en de router moet bereid zijn het door te sturen. Voer ip route uit op de router en zoek een hostroute voor elke verbonden peer, wijzend naar de bijbehorende PPP-interface. Ontbreekt bij een peer de route, dan staat de tunnel niet volledig overeind, wat het statusscherm van de client ook beweert.
Twee hostroutes naar twee afzonderlijke ppp-interfaces is de vorm die je wilt voordat je verder gaat.
Controle vier: kijk naar de FORWARD-keten, niet naar INPUT
Verkeer tussen clients wordt doorgestuurd, niet lokaal geaccepteerd, dus de INPUT-keten is de verkeerde plek. Voer iptables -L FORWARD -v -n uit en zoek een drop-regel die de PPP-interfaces raakt, plus de pakkettellers die laten zien of er überhaupt iets bij de keten aankomt. Een standaard drop-beleid zonder accept-regel voor tunnelverkeer levert precies het symptoom op waarmee je begon: elke client apart is in orde, samen zijn ze onzichtbaar voor elkaar.
Als kleine pings werken en grote overdrachten vastlopen, wordt de tunnel gefragmenteerd in plaats van geblokkeerd. PPTP over PPP wil normaal een MTU en MRU rond 1450, en ze op 1500 laten staan geeft je een link die handshakes haalt en op echte payloads faalt.
Controle vijf: beslis wat internettoegang moet doen
Clients die via het kantoor moeten browsen hebben brontranslatie richting de WAN-interface nodig. Clients die alleen het LAN moeten bereiken hebben een route nodig en verder niets. Dat zijn verschillende bedoelingen met verschillende regelsets, en de maskervraag verbergt deze tweede beslissing volledig. Schrijf op welk gedrag je wilde voordat je één regel toevoegt, want een client die onverwacht via de kantoorlijn naar buiten gaat is een verrassing die in een vergadering opduikt en niet in een log.
Een laatste opmerking, los van de oplossing: PPTP is verouderd en de authenticatie ervan is al jaren stuk. De lijst hierboven legt nog steeds uit wat een PPP-link doet, en dezelfde redenering geldt als je de clients later naar een moderne tunnel verhuist.