OpenVPN auf QNAP QTS 4.2 bearbeitete Konfigurationsänderungen werden nach dem Start zurückgesetzt

4246
HannesS

Ich habe einen QNAP TS-253 Pro (QTS 4.2.0), auf dem ein OpenVPN-Server konfiguriert ist und einwandfrei läuft. Da ich Client-Zertifikate verwenden möchte, um die VPN-Verbindungen abzusichern, ist die integrierte Konfiguration der Webschnittstelle überhaupt nicht von Nutzen.

Also importierte ich meine Konfigurations- und Zertifikatsdateien über SSH / SCP in / etc / openvpn, starte den OpenVPN-Server neu und es funktionierte gut, bis ich den QNAP NAS neu startete. Die Konfiguration wurde auf die Werkseinstellung von QNAP zurückgesetzt.

Es scheint, dass das Verzeichnis / etc / openvpn nur ein Symlink zu / mnt / ext / opt / vpnopenvpn / etc / openvpn / ist, das die ursprüngliche Konfiguration der Webschnittstelle meines QNAP enthält. Als Nächstes versuchte ich, die Konfiguration dort zu bearbeiten, und hoffte, dass sie beim nächsten Start nicht ersetzt wird. Dies war jedoch keine Lösung. Wurde neu gestartet und die werkseitigen OpenVPN-Konfigurationsdateien in / mnt / ext / opt / vpnopenvpn / etc / openvpn / gefunden .

Ich habe viele Threads im offiziellen QNAP-Forum, inoffizielle Blogbeiträge und einige init.d-Skripte auf dem QNAP selbst durchforstet, um einen Weg zu finden, entweder den automatischen Rollout der Werkseinstellungen zu deaktivieren oder den QNAP zum Laufen zu bringen Konfiguration nach / etc / openvpn .

Hier ist eine Liste meiner erfolglosen Versuche:

  • Konfig in / etc / openvpn - config wurde beim Booten neu geschrieben
  • Die kopierte Konfiguration nach / mnt / ext / opt / vpnopenvpn / etc / openvpn / - config wurde beim Booten neu geschrieben
  • Befolgen Sie die Anweisungen unter: http://wiki.nas-portal.org/index.php/Install_OpenVPN_on_QNAP - qpkg / ipkg wurde in der aktuellen Version von QTS (Version 4.2.0) nicht gefunden. Möglicherweise ist das Tutorial für eine ältere Version geschrieben ...
  • Es wurde versucht, ein selbst erstelltes Autorun.sh-Skript wie hier beschrieben auszuführen: http://forum.qnap.com/viewtopic.php?t=83804#p372711 - Die Ordner bei / share scheinen bei jedem Start neu zu erstellen
  • Vollständig durch diesen Thread gegraben, von Benutzern in offiziellen QNAP-Foren empfohlen: http://forum.qnap.com/viewtopic.php?f=90&p=61890&t=10400&sid=6aa706cb2ff41a75c6f048883328512a - scheint mein spezifisches Problem / Konfiguration nicht zu betreffen
  • Die openvpn-spezifischen Abschnitte in /etc/init.d/installtgz.sh wurden auskommentiert - die Datei selbst wurde beim Booten neu geschrieben und meine Kommentare waren wieder ein aktiver Teil des Skripts

Weiß jemand, wie QTS angehalten wird, um meine Konfigurationsdateien neu zu schreiben? Ich möchte die OpenVPN-Konfiguration nicht jedes Mal manuell kopieren, wenn der QNAP neu gestartet wird ...

5
fand diesen Kommentar `nach dem Neustart von vpn_openvpn.sh setzt server.conf im qnap-Forum (http://forum.qnap.com/viewtopic.php?t=83804) auf die Standardwerte zurück. Anscheinend geht es nicht um Ihr Problem, aber vielleicht können Sie dort Hilfe bekommen. marsh-wiggle vor 8 Jahren 0
Es tut mir leid, ich habe den dort vorgeschlagenen Workaround bereits ohne Erfolg ausprobiert :( HannesS vor 8 Jahren 0

2 Antworten auf die Frage

3
TechImpossible

Ich suchte nach einer ähnlichen Lösung, weil ich eine serverseitige Open VPN-Konfiguration für feste IP-Nummern benötigte. Meine Lösung bestand darin, eine Zeile in die Datei vpn_openvpn.sh einzufügen, kurz bevor der daemon_mgr in meiner Fallzeile 210 gestartet wird.

<snip> usr/bin/openssl verify -CAfile /etc/openvpn/keys/ca.crt /etc/openvpn/keys/myserver.crt 2>/dev/null | /bin/grep "OK" >/dev/null echo client-config-dir clientconfig >>/etc/openvpn/server.conf if [ $? == 0 ] && [ ! -f $ ]; then </snip> 

Ich fügte die Zeile hinzu, die mit Echo beginnt. An dieser Stelle sollten Sie auch die Konfiguration in /etc/openvpn/server.conf ändern können

Wenn Sie hier hinzufügen, übersteht die Zeile einen Neustart des OpenVPN-Servers. Wie Sie jedoch bereits schmerzhaft erfahren haben, werden viele Dateien beim Booten neu erstellt. Hier kommt die Autorun.sh ins Spiel. Informationen zur Verwendung finden Sie hier. Die genaue Syntax richtet sich nach dem Typ des QNAP NAS, den Sie erhalten haben.

Sie können hier eine Sed-Zeile hinzufügen, um den "Fix" beim Booten neu zu erstellen.

sed "210i echo client-config-dir clientconfig >>/etc/openvpn/server.conf" /etc/init.d/vpn_openvpn.sh >/etc/init.d/vpn_openvpn.sh.tmp rm /etc/init.d/vpn_openvpn.sh mv /etc/init.d/vpn_openvpn.sh.tmp chmod +x /etc/init.d/vpn_openvpn.sh /etc/init.d/vpn_openvpn.sh restart 

In Ihrem Fall sollte die autorun.sh so aussehen:

sed "210i /bin/sed -i -e 's/client-cert-not-required/#client-cert-not-required/g' /etc/openvpn/server.conf" /etc/init.d/vpn_openvpn.sh >/etc/init.d/vpn_openvpn.sh.tmp rm /etc/init.d/vpn_openvpn.sh mv /etc/init.d/vpn_openvpn.sh.tmp /etc/init.d/vpn_openvpn.sh chmod +x /etc/init.d/vpn_openvpn.sh /etc/init.d/vpn_openvpn.sh restart 

Lass mich wissen ob es funktioniert

Edit: Nach einigem Umdenken geht es noch kürzer

sed -i "210i /bin/sed -i -e 's/client-cert-not-required/#client-cert-not-required/g' /etc/openvpn/server.conf" /etc/init.d/vpn_openvpn.sh  /etc/init.d/vpn_openvpn.sh restart 
Sieht sehr vielversprechend aus, ich werde es versuchen, wenn ich morgen wieder ins Büro komme :) Vielen Dank im Voraus für das Teilen! HannesS vor 8 Jahren 0
Klappt wunderbar. Ich hatte einige Probleme mit dem Versuch, mehrere Zeilen in den sed-Befehl einzufügen, da er ** \ n ** nicht als Zeilenumbruch akzeptieren würde, aber schließlich habe ich meine Config in Betrieb. Danke! Ich habe sogar die Konfigurationsdiskette benutzt, um meine Konfigurationsdateien zu speichern und in autorun.sh zu kopieren - damit sie dort bequem bearbeitet werden können. HannesS vor 8 Jahren 0
Froh, dass ich helfen konnte. TechImpossible vor 8 Jahren 0
Ich habe Probleme, meine Einstellungen für `/ etc / config / smb.conf` beizubehalten. Ich denke, Ihre Antwort könnte die Lösung sein. Aber ich verstehe deine Antwort nicht - sorry. Vielleicht kannst du es etwas allgemeiner erklären (für alle Konfigurationsdateien). buhtz vor 7 Jahren 0
In Tech's Antwort geht es darum, ein Skript zu ersetzen oder zu generieren, das beim Booten des NAS geladen wird. Es kann auf alle Konfigurationsdateien angewendet werden, unabhängig von ihrem Zweck (ovpn, smb, cron usw.). Die Datei "autorun.sh" in seinem verknüpften Wiki-Artikel wird bei jedem Neustart von QNAP ausgeführt, sodass wir es bearbeiten, um unsere eigene Konfigurationsdatei zu erstellen Dateien und Skripte bei jedem Neustart. Wenn Sie einige Details angeben können, wo genau Sie Schwierigkeiten haben, können wir Sie vielleicht besser unterstützen :) HannesS vor 7 Jahren 0
0
NotoriousPyro

So entfernen Sie das Standardgateway-Pushing in der QNAP-Konfiguration:

sed -i -e '/if \[ $? == 0 \] && \[ ! -f $ \]; then/a\/bin\/sed -i -e \"s/push \\"redirect-gateway def1\\"/#push \\"redirect-gateway def1\\"/g\" /etc/openvpn/server.conf' /etc/init.d/vpn_openvpn.sh 

Warum dies nicht standardmäßig möglich ist, und warum QNAP ihre Geräte so konfiguriert hat, dass sie die Konfigurationsdateien überschreiben und sich in allen merkwürdigen Konventionen und unterschiedlichen Verzeichnissen befinden, ist eine solche schlechte Praxis und ein Rätsel.

Die Leute sollten keine so schwierigen Problemumgehungen und Autorun-Dateien für solche grundlegenden Dinge unter Linux benötigen. Es ist fast so, als wollten sie Linux verwirrender und schwieriger machen, als es ist.