Macht eine gemeinsame pppd-Optionsdatei Ihren anderen VPN-Client kaputt?
Zwei PPP-basierte VPN-Clients können dieselben pppd-Standardwerte lesen, eine Korrektur für den einen verändert still den anderen. Klären Sie vor dem Bearbeiten, wem die Option gehört.
Sie fügen eine einzige Zeile hinzu, damit ein widerspenstiges PPTP-Profil sich verbindet, und eine Woche später funktioniert der L2TP-Client nicht mehr, der monatelang lief. Die naheliegende Deutung: Die beiden Protokolle kollidieren jetzt. Häufiger ist es so, dass beide Clients pppd starten, beide dieselben Standardwerte lesen und die hinzugefügte Zeile nie auf das Profil beschränkt war, das Sie reparieren wollten. Die gemeinsame Optionsdatei ist die Kopplung, und die Protokolle sind unschuldig.
Was ein Client beim Start erbt
Ein PPP-basierter Client baut seine Kommandozeile selten aus dem Nichts. Er startet pppd, und pppd liest zuerst die Systemstandardwerte, dann eine Benutzer- oder Terminaldatei, dann die vom Client übergebenen Argumente; außerdem kann der Client ihn auf eine Peer-Datei verweisen. Jede dieser Ebenen kann ein Plugin, eine Authentifizierungsmethode oder eine Routing-Direktive mitbringen, und die erste Ebene, die eine geschützte Option setzt, kann sie gegen spätere Änderungen sperren.
Die nützliche Frage ist also nicht, welches VPN defekt ist, sondern welche Ebene die Einstellung geliefert hat. Ein Client, der seine Argumente selbst erzeugt, wirkt eigenständig und erbt trotzdem alles, was in der Systemdatei steht.
Die Zeile zuordnen, bevor Sie sie ändern
Beginnen Sie mit dem Prozess, der läuft, während eine Verbindung steht. Die Kommandozeile zeigt, welche Dateien ausdrücklich übergeben wurden; alles, was dort nicht genannt ist, kam aus einem Standardpfad.
ps -o pid=,args= -C pppdEnthält die Argumentliste einen Peer-Namen, lesen Sie diese Datei. Wenn nicht, lebt die gesuchte Einstellung in einem gemeinsamen Pfad. Das pppd-Handbuch listet die Reihenfolge, in der diese Dateien gelesen werden, und welche Optionen ein normaler Benutzer nicht überschreiben kann – deshalb bewirkt eine spätere Zeile manchmal gar nichts. Eine geschützte Option wie ein Plugin-Pfad lässt sich nicht durch eine spätere Zeile auf Benutzerebene ersetzen; eine Änderung an der falschen Datei bleibt also ohne sichtbare Wirkung.
Die Plugin-Zeile, die jedem Client folgt
Ein in der Systemdatei geladenes Plugin ist der schlimmste Fall, weil es verändert, was ein neuer PPP-Prozess zu laden versucht, unabhängig davon, welche Schaltfläche der Benutzer gedrückt hat. Das L2TP-Plugin ist das klassische Beispiel: richtig für ein Profil, bedeutungslos oder schädlich für ein PPTP-Profil, das von denselben Standardwerten ausgeht.
Verschieben Sie es in eine Peer-Datei, die der Client auswählt, oder in die eigenen Einstellungen des Clients pro Verbindung, wenn er sie unterstützt. Es einfach zu löschen repariert den zweiten Client und bricht den ersten – so wandern diese Probleme zwischen Teams.
Jeden Client nach dem Verschieben prüfen
Testen Sie beide Verbindungen auf derselben Maschine, eine nach der anderen, und lesen Sie die ausgehandelten Optionen statt des Erfolgsdialogs. Der folgende Dump gibt die Optionsmenge aus, die pppd tatsächlich zusammengestellt hat – die einzige Liste, auf die es ankommt.
sudo pppd call office debug dumpWiederholen Sie das für den zweiten Client und vergleichen Sie die beiden Ausgaben. Die verschobene Option sollte in genau einer davon erscheinen. Erscheint sie in beiden, erzeugt der Client sie neu, und die Korrektur gehört in dieses Profil statt in die gemeinsame Datei. Notieren Sie neben der Verbindung, wo die Einstellung jetzt liegt, damit die nächste Person die Kopplung nicht wiederentdeckt, indem sie sie erneut bricht.