NEWS
Tester für WireGuard Adapter gesucht
-
Aktuelle Test Version 1.1.0 Veröffentlichungsdatum 07.03.2022 Github Link https://github.com/Grizzelbee/ioBroker.wireguard Hier Adapter Beschreibung, Changelog etc.
Hallo Zusammen,
ich habe mir mal den Spass gemacht und einen WireGuard Adapter geschrieben mit dem man seine WireGuard Hosts und Peers monitoren kann.
Vielleicht kann es ja jemand gebrauchen und mag testen:
Sicherheitshinweis - Wichtige Änderung in 1.1.0:
Nach aktuellem Kenntnisstand empfehle ich genau diese Konfig!
Ab v1.1.0 kann der notwendige monitoring Befehl auch über sudo abgesetzt werden, wenn vorher eine entsprechende sudoers Regel erstellt wurde. Das Gute daran ist, dass ausschließlich genau dieser Befehl (mit genau diesen Parametern) ohne passwort abgesetzt werden kann - NICHTS anderes. Mehr oder weniger oder andere Parameter führen sofort zur Abfrage des Passwortes. Ausführlich ist das in Englisch in der Readme dokumentiert. Zur Bequemlichkeit hier an dieser Stelle auch noch einmal in Deutsch:
Linux kann über sogenannte sudoers Regeln sehr genau steuern welcher User was alles darf. Wie das ganz genau geht hängt leider von der jeweiligen Linux Distro ab. Deshalb bitte im Zweifel und bei Unklarheitengoogle <name der distro> sudoers
bemühen. Bei den meisten Distros läuft es aber auf folgendes heraus:visudo
als adminstrativer User zum editieren der sudoers Datei aufrufen. Es wird dringend davon abgeraten sudoers auf einem anderen Wege zu editieren.- Am Ende der Datei folgende Zeile hinzufügen:
<name-des-monitoring-users> ALL=NOPASSWD:/usr/bin/wg show all dump
(<name-des-monitoring-users> muss natürlich durch euren User ersetzt werden unnd/usr/bin
ggf durch einen anderen Pfad falls wg irgendwo anders bei euch liegt. ) - Datei speichern
Nach Eingabe dieser Regel kann in der Konfig das Häkchen bei
sudo
gesetzt werden.Wichtige Änderung in 0.9.5:
Ich nutze das wg-json script nicht mehr. Dadurch funktioniert der Adapter jetzt einfach so ohne weitere Handgriffe auf dem Server - aber es haben sich auch ein paar Datenpunkte geändert. Ggf. also bitte den Tree mal löschen und neu anlegen lassen. Latesthandshake sollte ein Datum sein! Und so ganz nebenbei werden jetzt auch WireGuard-Installationen auf Windows unterstützt.v1.1.0 (2022-03-06)
- (grizzelbee) New: Added support for sudo when using a valid sudoers rule - refer to security hints in readme for more information
- (grizzelbee) Upd: Documentation update regarding security
- (grizzelbee) Upd: dependency update
v1.0.0 (2022-02-25)
- (grizzelbee) New: Added individual online state indicator for each interface
- (grizzelbee) fix: Improved some data roles
- (grizzelbee) fix: Improved documentation
v0.9.5 (2022-02-22)
- (grizzelbee) New: dropped use of wg-json script - not needed anymore
- (grizzelbee) New: making internal use of wg show all dump command and self parsing the result
- (grizzelbee) New: Added windows support by using the wg show all command
- (grizzelbee) Upd: moved dependency admin to globalDependency as requested during adapter review
v0.9.2 (2022-02-20)
- (grizzelbee) Fix: removed unnecessary secret from index_m.html file
- (grizzelbee) Fix: Using info.connection of adapter to indicate that at least one interface is online.
- (grizzelbee) Fix: Updated adapter icon
v0.9.1 (2022-02-19)
- (grizzelbee) New: Improved optical quality of admin page - no technical improvements
v0.9.0 (2022-02-18)
- (grizzelbee) New: Improved documentation
- (grizzelbee) New: Username and password for WireGuard hosts are getting encrypted now
v0.8.0 (2022-02-17)
- (grizzelbee) New: admin extended with second page
- (grizzelbee) New: data file is getting parsed
- (grizzelbee) New: data tree is getting populated
- (grizzelbee) New: entire basic functionality is implemented
- (grizzelbee) New: added plugin sentry
-
@grizzelbee sagte in Tester für WireGuard Adapter gesucht:
Hm...mein erster Versuch
EDIT: vielleicht habe ich aber auch hier was falsch gemacht
Check whether your WireGuard host is running an ssh server. If not - install one. Install the wg-json script provided by this project in the folder wg-tools/linux and get it running. Usually it should be sufficient to copy it to /usr/bin/wg-json (yes - remove the .sh) and give it 755 permissions by executing chown 755 wg-json. You can test it by calling wg-json from your home directory. If you get a json structure printed to stdout, it works. Since wg-json calls wg show all all dump internally the user executing it needs the same permissions as wg itself. sudo is not supported, since it needs a second password entering. make sure the user you like to use for this is able to execute wg-json
-
@grizzelbee
Hi, vielen Dank fuer den Adapter, die Installation lief problemlos, nach der Konfiguration kommt das hier:wireguard.0 2022-02-18 19:13:50.214 debug Plugin sentry destroyed wireguard.0 2022-02-18 19:13:50.213 info terminating wireguard.0 2022-02-18 19:13:50.213 info Clearing interval for host [Wireguard] wireguard.0 2022-02-18 19:13:50.208 error Unexpected end of JSON input wireguard.0 2022-02-18 19:13:50.208 error SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at /opt/iobroker/node_modules/iobroker.wireguard/main.js:57:34 at new Promise (<anonymous>) at parseWireguardInfos (/opt/iobroker/node_modules/iobroker.wireguard/main.js:55:12) at Timeout.pollHost [as _onTimeout] (/opt/iobroker/node_modules/iobroker.wireguard/main.js:276:42) at processTicksAndRejections (internal/process/task_queues.js:95:5) wireguard.0 2022-02-18 19:13:50.207 error unhandled promise rejection: Unexpected end of JSON input wireguard.0 2022-02-18 19:13:50.207 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). wireguard.0 2022-02-18 19:13:50.204 debug jsonData (unparsed): wireguard.0 2022-02-18 19:13:50.203 debug Stream :: close wireguard.0 2022-02-18 19:13:48.996 debug ssh client :: ready wireguard.0 2022-02-18 19:13:48.898 info Connecting to host [Wireguard] on address [192.168.3.10] wireguard.0 2022-02-18 19:12:48.894 info Started 60 seconds monitoring interval for host [Wireguard] wireguard.0 2022-02-18 19:12:48.894 debug {"name":"Wireguard","hostaddress":"192.168.3.10","user":"xxxxxx","password":"xxxxxxxx","pollInterval":"60"} wireguard.0 2022-02-18 19:12:48.893 info There is 1 wireguard host to monitor. wireguard.0 2022-02-18 19:12:48.873 info starting. Version 0.9.0 (non-npm: Grizzelbee/ioBroker.wireguard#a69f7e9354ba68ffa47f32cce7f259ed8170f20a) in /opt/iobroker/node_modules/iobroker.wireguard, node: v14.19.0, js-controller: 4.0.12 wireguard.0 2022-02-18 19:12:48.603 debug Plugin sentry Initialize Plugin (enabled=true) wireguard.0 2022-02-18 19:12:48.514 debug States connected to redis: 127.0.0.1:6379 wireguard.0 2022-02-18 19:12:48.506 debug States create User PubSub Client wireguard.0 2022-02-18 19:12:48.505 debug States create System PubSub Client wireguard.0 2022-02-18 19:12:48.500 debug Redis States: Use Redis connection: 127.0.0.1:6379 wireguard.0 2022-02-18 19:12:48.199 debug Objects connected to redis: 127.0.0.1:6379 wireguard.0 2022-02-18 19:12:48.197 debug Objects client initialize lua scripts wireguard.0 2022-02-18 19:12:47.968 debug Objects create User PubSub Client wireguard.0 2022-02-18 19:12:47.968 debug Objects create System PubSub Client wireguard.0 2022-02-18 19:12:47.967 debug Objects client ready ... initialize now
-
-
@grizzelbee ahh sorry so weiter runter gescrollt hab ich natuerlich nicht..
das wg-json hatte ich schon drauf, hab mir die ganze Zeit die Ausgabe des wg-json mit dem linux-control adapter abgeholt..
jetzt hab ich das problem, dass der Wireguard adapter sich nicht einloggen kann.. ich hatte mir die wg-json gepatcht... das konnte nie gehen.....
Jetzt gehts, super! DANKE!
-
@grizzelbee sagte in Tester für WireGuard Adapter gesucht:
Ja - bitte die Readme wirklich genau lesen und beachten. Damit der Adapter funktioniert sind ein paar zusätzliche Handgriffe auf dem Server notwendig.
Läuft, vielen Dank
alias erstellt
-
-
@grizzelbee +Danke, die 0.9.2 laeuft auch ohne Probleme. Kann ins Repo
-
@ilovegym sagte in Tester für WireGuard Adapter gesucht:
@grizzelbee +Danke, die 0.9.2 laeuft auch ohne Probleme. Kann ins Repo
bei mir auch
-
Cool! Freut mich.
Habe den PR auch schon vor 'ner Stunde oder so eingereicht.Edit:
Ich überlege noch, ob ich mich von wg-json unabhängig mache und die Daten selber einsammel und parse. Vorteil wäre, dass der der Adapter dann out-of-the-box funktionieren würde. Ich scheue aber noch den Zusatzaufwand, weil es in der Form einfach und geschmeidig funktioniert.
Wie denkt ihr darüber? -
@grizzelbee sagte in Tester für WireGuard Adapter gesucht:
Ich überlege noch, ob ich mich von wg-json unabhängig mache und die Daten selber einsammel und parse. Vorteil wäre, dass der der Adapter dann out-of-the-box funktionieren würde. Ich scheue aber noch den Zusatzaufwand, weil es in der Form einfach und geschmeidig funktioniert.
Wie denkt ihr darüber?out-of-the-box
Das wäre sicher für vieeeel mehr Nutzer interessant
-
@grizzelbee besser waere es, ist userfreundlicher, sonst erklaren wir das hier 328x ..
Oder es gibt so spezialisten wie mich, die die wg-json selber vermurksen weil se sowas aehnliches machen wollen..
-
@dslraser sagte in Tester für WireGuard Adapter gesucht:
Das wäre sicher für vieeeel mehr Nutzer interessant
definitiv
Ich hab ihn noch nicht installiert, da mir das aus der engl. Readme noch zu unverständlich ist.
Event. wäre eine deutsche Readme für viele einfacher in der Umsetzung. -
@negalein
ich habe mir den Status der möglichen Geräte, die per Wireguard VPN verbunden sein könnten auch mal in mein iQontrol eingebaut -
@dslraser sagte in Tester für WireGuard Adapter gesucht:
ich habe mir den Status der möglichen Geräte, die per Wireguard VPN verbunden sein können auch mal in mein iQontrol eingebaut
Cool, auch mag
Ich hab derzeit eh nur mich in WG. Aber in sehr naher Zukunft kommt die ganze Familie drann.
Da ist es dann bei 10+ User schon intressant zu sehen, wer gerade online ist. -
Habe gerade die 0.9.5 veröffentlicht. Ich parse jetzt selbst. Dadurch wird das wg-json script nicht mehr benötigt. Der Adapter funktionert jetzt also ganz aus sich selbst heraus.
Die Datenfelder sollten zwar alle die selben Namen behalten haben - könnten aber den Datentyp geändert haben. Bitte mal drauf achten und ggf. den Tree löpschen und neu anlesen lassen.
Ach ja - weil ich es im Screenshot gesehen habe: latestHandshake sollte ein Timestamp sein.@Negalein Vielleicht klappt es dadurch ja ohne deutsche readme.
-
@grizzelbee sagte in Tester für WireGuard Adapter gesucht:
Vielleicht klappt es dadurch ja ohne deutsche readme.
ich bekomme keine Verbindunng
wireguard.0 2022-02-22 11:47:36.648 debug Plugin sentry Initialize Plugin (enabled=true) wireguard.0 2022-02-22 11:47:36.011 debug statesDB connected wireguard.0 2022-02-22 11:47:36.010 debug States connected to redis: 0.0.0.0:9000 wireguard.0 2022-02-22 11:47:35.996 debug States create User PubSub Client wireguard.0 2022-02-22 11:47:35.996 debug States create System PubSub Client wireguard.0 2022-02-22 11:47:35.986 debug Redis States: Use Redis connection: 0.0.0.0:9000 wireguard.0 2022-02-22 11:47:35.985 debug objectDB connected wireguard.0 2022-02-22 11:47:35.982 debug Objects connected to redis: 0.0.0.0:9001 wireguard.0 2022-02-22 11:47:35.971 debug Objects client initialize lua scripts wireguard.0 2022-02-22 11:47:35.970 debug Objects create User PubSub Client wireguard.0 2022-02-22 11:47:35.970 debug Objects create System PubSub Client wireguard.0 2022-02-22 11:47:35.969 debug Objects client ready ... initialize now wireguard.0 2022-02-22 11:47:35.934 debug Redis Objects: Use Redis connection: 0.0.0.0:9001 wireguard.0 2022-02-22 11:47:05.397 warn Terminated (UNCAUGHT_EXCEPTION): Without reason wireguard.0 2022-02-22 11:47:05.397 debug Plugin sentry destroyed wireguard.0 2022-02-22 11:47:05.396 info terminating wireguard.0 2022-02-22 11:47:05.396 info Clearing interval for host [Nega] wireguard.0 2022-02-22 11:47:05.366 error Timed out while waiting for handshake wireguard.0 2022-02-22 11:47:05.366 error Error: Timed out while waiting for handshake at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.wireguard/node_modules/ssh2/lib/client.js:1014:23) at listOnTimeout (internal/timers.js:557:17) at processTimers (internal/timers.js:500:7) wireguard.0 2022-02-22 11:47:05.365 error uncaught exception: Timed out while waiting for handshake wireguard.0 2022-02-22 11:46:45.358 info Connecting to host [Nega] on address [10.0.1.204] wireguard.0 2022-02-22 11:46:15.357 info Started 30 seconds monitoring interval for host [Nega] wireguard.0 2022-02-22 11:46:15.356 debug {"name":"Nega","hostaddress":"10.0.1.204","user":"R\u0007\u000b\u000b\\","password":"R\u0007\u000b\u000b\\","pollInterval":"30"} wireguard.0 2022-02-22 11:46:15.356 info There is 1 wireguard host to monitor. wireguard.0 2022-02-22 11:46:15.344 info starting. Version 0.9.5 in /opt/iobroker/node_modules/iobroker.wireguard, node: v14.17.1, js-controller: 3.3.22 wireguard.0 2022-02-22 11:46:15.173 debug Plugin sentry Initialize Plugin (enabled=true) wireguard.0 2022-02-22 11:46:14.891 debug statesDB connected wireguard.0 2022-02-22 11:46:14.890 debug States connected to redis: 0.0.0.0:9000 wireguard.0 2022-02-22 11:46:14.880 debug States create User PubSub Client wireguard.0 2022-02-22 11:46:14.879 debug States create System PubSub Client wireguard.0 2022-02-22 11:46:14.873 debug Redis States: Use Redis connection: 0.0.0.0:9000 wireguard.0 2022-02-22 11:46:14.872 debug objectDB connected wireguard.0 2022-02-22 11:46:14.868 debug Objects connected to redis: 0.0.0.0:9001 wireguard.0 2022-02-22 11:46:14.856 debug Objects client initialize lua scripts wireguard.0 2022-02-22 11:46:14.855 debug Objects create User PubSub Client wireguard.0 2022-02-22 11:46:14.855 debug Objects create System PubSub Client wireguard.0 2022-02-22 11:46:14.854 debug Objects client ready ... initialize now wireguard.0 2022-02-22 11:46:14.831 debug Redis Objects: Use Redis connection: 0.0.0.0:9001 wireguard.0 2022-02-22 11:46:11.375 info Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason wireguard.0 2022-02-22 11:46:11.375 info terminating wireguard.0 2022-02-22 11:46:11.374 info Clearing interval for host [Nega] wireguard.0 2022-02-22 11:46:11.374 info Got terminate signal TERMINATE_YOURSELF wireguard.0 2022-02-22 11:46:03.589 info Connecting to host [Nega] on address [10.0.1.204] wireguard.0 2022-02-22 11:45:33.589 info Started 30 seconds monitoring interval for host [Nega] wireguard.0 2022-02-22 11:45:33.589 info There is 1 wireguard host to monitor. wireguard.0 2022-02-22 11:45:33.574 info starting. Version 0.9.5 in /opt/iobroker/node_modules/iobroker.wireguard, node: v14.17.1, js-controller: 3.3.22
host.ioBroker 2022-02-22 11:48:27.084 error instance system.adapter.wireguard.0 terminated with code 1 (JS_CONTROLLER_STOPPED) host.ioBroker 2022-02-22 11:48:27.084 error Caught by controller[0]: at processTimers (internal/timers.js:500:7) host.ioBroker 2022-02-22 11:48:27.084 error Caught by controller[0]: at listOnTimeout (internal/timers.js:557:17) host.ioBroker 2022-02-22 11:48:27.084 error Caught by controller[0]: at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.wireguard/node_modules/ssh2/lib/client.js:1014:23) host.ioBroker 2022-02-22 11:48:27.083 error Caught by controller[0]: Error: Timed out while waiting for handshake
Edit: du schreibst, man benötigt einen SSH-Server.
Ich greife nur mit http darauf zuhttp://10.0.1.204:5000/
Wie installier ich hier SSH (Ubuntu 20)?
-
@grizzelbee sagte in Tester für WireGuard Adapter gesucht:
könnten aber den Datentyp geändert haben
Ich glaube bei fast alle Datenpunkten passen role und type nicht zusammen, oder ?
"role": "value", "type": "string"
Nur bei connected scheint es zu passen
{ "type": "state", "common": { "name": "Peer is connected", "read": true, "write": false, "role": "indicator.reachable", "type": "boolean" },
Kennst Du diese Seite ?
https://www.iobroker.net/#de/documentation/dev/stateroles.md
-
Du hast da ja einen Linux-Server (Ubuntu). Die haben üblicherweise einen ssh server vorinstalliert. Eine mir bekannte Ausnahme ist RaspBian (oder jetzt RaspberryOS). Da ist der zwar installiert, aber deaktiviert.
Wie auch immer. Wie man den ssh-server genau installiert, hängt von der jeweiligen Distribution ab. Bei dir erwarte ich aber das der vorhanden ist und auch läuft. Wenn Du dich mit putty (oder ähnlich) auf deinen Server verbinden kannst (also von einem entfernten Rechner eine Kommandozeile öffnen kannst) läuft der. Dann brauchst Du nichts weiter tun.Falls dein ioBroker auf dem selben Server läuft, wie WireGuard, dann reicht als IP übrigens 127.0.0.1 (also die IP entsprechung von 'localhost' oder tatsächlich der name localhost). Danach geht es nur noch um den Benutzer, der für die Anmeldung benutzt wird. root funktioniert in jedem Fall - ist aber (natürlich) gefährlich.
Edit: Kann es eventuell sein, dass du einfachh nur nicht lange genug gewartet hast? Der Adapter wird erst nach dem ersten erfolgreichen Poll komplett grün - und der kommt in deinem Fall nach 30 Sekunden.
@dslraser
Die Seite kenne ich und habe mich (soweit ich das überblicke) daran gehalten. Das sollte also alles so passen.
"value" kann vom typ String. Number, object, boolean, usw. sein - die Aussage ist ja einfach nur, dass es ein "Wert" ist. Ohne weitere Spezifikation was für einer. Wireguard gibt da einfach nicht so viel her. Aber das liegt in der Natur der Sache. Bei dem Datum vom latestHandshake habe ich tatsächlich etwas basteln müssen, bis auch ein Datum angezeigt UND keine Meldung mehr dazu im Log kam. -
@grizzelbee sagte in Tester für WireGuard Adapter gesucht:
Benutzer, der für die Anmeldung benutzt wird
Ahh, also nicht Benutzer+Passwort für Wireguard UI, sondern für den SSH?
SSH ist installiert
* ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2022-01-03 10:25:26 CET; 1 months 19 days ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 355 (sshd) Tasks: 1 (limit: 18984) Memory: 3.7M CPU: 17ms CGroup: /system.slice/ssh.service `-355 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups Jan 03 10:25:22 Wireguard-VPN systemd[1]: Starting OpenBSD Secure Shell server... Jan 03 10:25:26 Wireguard-VPN sshd[355]: Server listening on 0.0.0.0 port 22. Jan 03 10:25:26 Wireguard-VPN sshd[355]: Server listening on :: port 22. Jan 03 10:25:26 Wireguard-VPN systemd[1]: Started OpenBSD Secure Shell server.
bekomme keine Verbindung
wireguard.0 2022-02-22 12:38:59.173 error Exception-Code: ENOTFOUND: getaddrinfo ENOTFOUND 10.0.1.204:5000 wireguard.0 2022-02-22 12:38:59.173 error Error: getaddrinfo ENOTFOUND 10.0.1.204:5000 at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:69:26) wireguard.0 2022-02-22 12:38:59.173 error uncaught exception: getaddrinfo ENOTFOUND 10.0.1.204:5000 wireguard.0 2022-02-22 12:38:59.166 info Connecting to host [Nega] on address [10.0.1.204:5000] wireguard.0 2022-02-22 12:38:29.166 info Started 30 seconds monitoring interval for host [Nega] wireguard.0 2022-02-22 12:38:29.165 debug {"name":"Nega","hostaddress":"10.0.1.204:5000","user":"A\f\t\u0016","password":"d\u0006\n\u0001]\u000eVS\u0001","pollInterval":"30"} wireguard.0 2022-02-22 12:38:29.165 info There is 1 wireguard host to monitor. wireguard.0 2022-02-22 12:38:29.148 info starting. Version 0.9.5 in /opt/iobroker/node_modules/iobroker.wireguard, node: v14.17.1, js-controller: 3.3.22
Wireguard läuft auf einem standalone Server