spawn
Anmeldungsdatum: 22. September 2012
Beiträge: 108
|
Hallo,
wenn es zu Problemen auf Fremdrechnern kam, auf denen ich Ubuntu installiert hatte, habe ich bisher Teamviewer genutzt- möchte dies aber aus diversen Gründen nicht mehr. Im Wiki steht bei VNC: Falls der Host hinter einer Firewall (z.B. einem Hardware-Router) steht, muss der entsprechende TCP-Port (also z.B. 5900) weitergeleitet werden. Wie kann man das vermeiden, bzw. wie macht Teamviewer das denn? Jemanden, der das noch nie gemacht hat, übers Telefon Ports freischalten zu lassen ist seehr lästig (bis unmöglich, da das Router-pw in der WG noch vom Vormieter, der jetzt in Australien wohnt, stammt... Ihr versteht mich^^. Danke im Voraus spawn
|
TheDarkRose
Anmeldungsdatum: 28. Juli 2010
Beiträge: 3459
|
Teamviewer verwendet vermutlich UDP-Holepunching. Am einfachsten, den zu supporteten Rechner mittels autossh einen Reverse-Tunnel zu einen Mittelserver einrichten. Du richtest dir zum Mittelserver einen lokalen Tunnel und schon hast du VNC dir auf den Rechner getunnelt und das auch noch verschlüsselt ☺
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7658
|
Ich mache das mit OpenVPN. Dann verbinden sich die PCs zu meinem VServer und ich komme drauf als obs im LAN wäre. Rest dann ganz normal VNC...
|
spawn
(Themenstarter)
Anmeldungsdatum: 22. September 2012
Beiträge: 108
|
TheDarkRose schrieb: Teamviewer verwendet vermutlich UDP-Holepunching. Am einfachsten, den zu supporteten Rechner mittels autossh einen Reverse-Tunnel zu einen Mittelserver einrichten. Du richtest dir zum Mittelserver einen lokalen Tunnel und schon hast du VNC dir auf den Rechner getunnelt und das auch noch verschlüsselt ☺
Ok, ich hab jetzt mal dein Stichwort genutzt und das hier gefunden: http://www.vdomck.org/2005/11/reversing-ssh-connection.html Geht daraus nicht hervor, dass man das auch ohne Mittelserver machen kann (ich kenn nämlich keinen ☺)? Ich habe ferner gelesen, dass Remmina das kann- leider ist das Wiki nicht sehr ausführlich. Ich habe die Option gefunden:
Tunnel via loopback adresse (bei VNC eingehende Verbindung). Ist das der "Reverse-Tunnel"? @frostschutz Ok, das klingt auch nicht schlecht, wobei ich ja dann schon prophylaktisch die Zertifikate unterbringen müsste. Die meisten *buntuisierten Rechner muss ich glücklicherweise aber nicht fernwarten. Musst du da meistens einen Proxy nutzen? Wenn ja, welcher ist das?
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7658
|
Der Proxy ist mein VServer. OpenVPN geht über UDP, also wenn UDP Hole Punching klappt, dann natürlich auch eine UDP-Verbindung zu einem Internet-Server... Ohne VServer bräuchtest du noch DynDNS oder so und eben keine Firewall bzw. die Portweiterleitung nur auf deiner Seite oder aber DynDNS auf beiden Seiten und dann wieder das Holepunching. Und klar, OpenVPN muss dann auf den Rechnern irgendwie installiert sein. Über Telefon ist das äähm, eher unmöglich. Aber das kannst du ja zur Not dann noch mit Teamviewer regeln. Was ich noch nicht gemacht habe, ist meinem Onkel einen USB-Stick spendieren der dann direkt ein Rettungssystem mit OpenVPN bootet... zum Glück ist die Kiste bisher nur einmal so gestolpert daß ich selber hinfahren musste. Bei mir hat es sich halt so angeboten da ich den VServer sowieso habe. Es kann natürlich auch Situationen geben wo man das OpenVPN gerade nicht haben will (plötzlich ist da ein lokales Netzwerk mit lokalen Netzwerkfreigaben usw. usf.).
|
gonzo.d
Anmeldungsdatum: 8. Januar 2008
Beiträge: 201
Wohnort: Berlin
|
(Hej frostschutz,) Ooops Hej spawn, ich hirne da auch grad drüber nach, weil es ungemein praktisch wäre. Früher hab ich ultravnc (sc) benutzt, user eine kleine ausführbare Datei senden und er konnte sich mit mir verbinden. Ging aber auch nur mit Portweiterleitung auf meinem Router mit dyndns. Also nix, was auf beiden Seiten Mobilität ermöglicht. Inzwischen gibt es einen Ultravnc / vnc repeater, der z.B. auf einem Router läuft opernwrt http://wiki.openwrt.org/doc/howto/vncrepeater . Da bräuchte kein Rechner permanent zu laufen, um die Verbindung herzustellen und es wären NAT-NAT-Verbindungen möglich, d.h. auch in umts-Netze (denke ich). Etwa so:
| vnc-repeater auf router mit dyndns
^ ^
/ \
/ \
v v
client <--------------------> helpdesk
|
Aber ganz durchdrungen habe ich das noch nicht, erscheint mir zur Zeit das vielversprechendste, weil es ohne Service eines Dritten (außer dyndns) auskommt. cheers gonzo
|
spawn
(Themenstarter)
Anmeldungsdatum: 22. September 2012
Beiträge: 108
|
Also ich denke, die bis jetzt einfachste Möglichkeit steht im Wiki: http://wiki.ubuntuusers.de/VNC#Reverse-VNC-Verbindung-ueber-SSH-Verbindung Alles was ich für 'ne erfolgreiche Verbindung machen musste, war den SSH-Port (standardmäßig 22) von meinem Router an meinen Laptop forzuwarden. Die Gegenseite muss das also schon mal nicht machen. Damit ich jetzt auch noch von meinem Router unabhängig bin, hab ich mir gedacht, den entsprechenden Port (z.B. 22) über dieses udp- bzw. tcp-hole-punching zu "öffnen". Weiß jemand, wie das geht?
|
spawn
(Themenstarter)
Anmeldungsdatum: 22. September 2012
Beiträge: 108
|
TheDarkRose, kannst du vlt.nochmal etwas genauer erklären, wie das in deinem Beitrag Beschriebene geht? Ist der Mittelserver dann ein Stun-Server?
|
TheDarkRose
Anmeldungsdatum: 28. Juli 2010
Beiträge: 3459
|
Also ich hab mir den SSH port getunnelt, worüber ich noch einen VNC Tunnel bei Bedarf aufbauen kann. Du brauchst halt einen Server im Netz (oder z.b. nen 24/7 RaspberryPi mit Portforwarding bei dir Zuhause), dort richtest du einen Benutzer z.b. remotesupport ein. Diesen mittels Config so beschränken, dass er nur Tunnels aufbauen darf. Beim zu supportenden Rechner hast du natürlich auch einen eigenen Benutzer (z.B. support ), dort wird noch ein Passwortloser SSH-Key erstellt, der beim remotesupport@mittelserver in die authorized_keys kommt. Dann noch mittels autossh den Tunnel bei Start vom Rechner zum Mittelserver erstellen, geht sicher auch in der rc.local , aber da ich in meinen Fall WLAN hatte, hab ich das nach /etc/network/if-up.d/zRemotesupport gepackt, womit der Tunnel erst erstellt wird, wenn sich der Networkmanager ins WLAN eingewählt hat. das z vorm Namen, damit dieses Skript als letztes abgearbeitet wird. | #!/bin/sh
if [ "$IFACE" = wlan0 ]; then
autossh -N -R 2000:localhost:22 remotesupport@mittelserver -i /etc/remotesupport/id_rsa &
fi
exit 0
|
Nun ist am mittelserver ein Tunnel auf Port 2000 vorhanden, mit dem man sich per SSH einlogen kann. Damit das nun von deinen PC aus auch geht, einfach einen Tunnel zum mittelserver aufbauen. D.h. dein Key muss natürlich auch beim remotesupport@mittelserver in die authorized_keys . Aber er braucht nicht passwortlos sein, wenn du diese Verbindung nur manuell herstellst.
autossh -N -L 2000:localhost:2000 remotesupport@mittelserver & Somit hast du jetzt zwei Tunnels und kannst über diese beiden eine SSH-Verbindung zu den supportenden Rechner aufbauen.
ssh localhost -p 2000 -l support Damit das ganze natürlich eleganter einzugeben ist, kannst ja einen entsprechenden Alias in deiner ~/.ssh/config angeben, damit z.b. ein ssh max-musermann genügt.
| Host max-mustermann
HostName localhost
Port 2000
User support
|
Um Schlussendlich nun eine VNC-Verbindung herzustellen, geht das ähnlich wie im Wiki. Bei dir startest du den VNC-Server:
vncviewer -listen Aber anstatt das der Hilfesuchende einen Tunnel aufbaut, baust du einen Remotetunnel auf
ssh -N -R 5500:localhost:5500 max-mustermann & Nun per SSH auf den Client verbinden und den VNC-Server starten:
x11vnc -connect_or_exit localhost:5500
|
gonzo.d
Anmeldungsdatum: 8. Januar 2008
Beiträge: 201
Wohnort: Berlin
|
Hej darkrose, TheDarkRose schrieb: Also ich hab mir den SSH port getunnelt, worüber ich noch einen VNC Tunnel bei Bedarf aufbauen kann. Du brauchst halt einen Server im Netz (oder z.b. nen 24/7 RaspberryPi mit Portforwarding bei dir Zuhause), dort richtest du einen Benutzer z.b. remotesupport ein. Diesen mittels Config so beschränken, dass er nur Tunnels aufbauen darf.
Mit nem Raspberry Pi is ja auch ne feine Idee! Aber es muß doch noch irgendwas geben, was so einfach (bis auf den Mittelserver) wie teamviewer geht. cheers g
|
TheDarkRose
Anmeldungsdatum: 28. Juli 2010
Beiträge: 3459
|
Teamviewer ist nicht einfach. Also zumindestens im Technischen Hintergrund. Teamviewer verwendet IMHO auch Mittelserver, nämlich die von Teamviewer. Hab mir zwar nie den Traffic analysiert, aber zumindestens zum Verbindungsaufbau sind die Teamviewerserver involviert. Wie sollte man sonst eine Teamviewer-ID zu einen Rechner auflösen. Danach wird IMO Löcher in die Firewalls gebohrt, damit eine P2P-Kommunikation möglich ist. Alles nur Vermutungen. Ansonsten, die von mir gepostete Vorgehensweiße lässt sich mittels Skripte oder sogar grafischen Progrämmchen natürlich automatisieren ^^
|
gonzo.d
Anmeldungsdatum: 8. Januar 2008
Beiträge: 201
Wohnort: Berlin
|
TheDarkRose schrieb: Teamviewer ist nicht einfach.
Nee, in der Tat. Aber wenn man nun nicht beliebigen Leuten mit beliebiger Konfiguration Fernwartung ermöglichen will, könnte der VNC-Repeater reichen. Wenn mans aufbohren will, ok. Ein Raspberry verbindet beliebige frontends miteinander Win/Ux/Mac, der Ultravnc (sc) ging auch einfach durch Nats. K.A. welche Ports das waren, ob die möglicherweise irgendwo gesperrt waren. Findest Du es nachdenkenswert? cheers g
|
TheDarkRose
Anmeldungsdatum: 28. Juli 2010
Beiträge: 3459
|
Es gibt viele Wege. hab dir meinen Part präsentiert, für mich läuft das gut, da ich ja meist mehr mit SSH supporte, was oft ausreicht. Nur selten brauche ich VNC. Man kann das ja auch nur VNC tunneln, sodas man nicht einen dritten Tunnel über zwei existierende aufbaut. Nur VNC alleine würde ich nicht betreiben, da keine Verschlüsselung vorhanden.
|
spawn
(Themenstarter)
Anmeldungsdatum: 22. September 2012
Beiträge: 108
|
Da ich nach wie vor über keinen Mittelserver verfüge, habe ich nochmal weiter recherchiert und folgendes gefunden: 1. Udp hole punching: http://www.cyberciti.biz/tips/howto-linux-iptables-bypass-firewall-restriction.html Diese Anleitung existiert an verschiedenen Stellen im Netz, sie funktioniert allerdings, so wie ich das verstehe, nur, wenn eine Seite eingehende Anfragen akzeptiert (wobei ich bei einer dieser Anleitungen gelesen habe, dass es auch für Nat-zu-Nat-Verbindungen gehen soll, es wurde nur leider nicht erklärt, wie). Ich verstehe dabei nur nicht: wenn ich doch ständig mit hping3 nen Server anpinge, sage ich damit nicht meiner Nat, dass Anfragen von diesem Server dann bitte über den entsprechenden Port an meine interne IP weitergeleitet werden sollen? 2. pwnat: http://samy.pl/pwnat/ Wenn das Prorgamm hält, was die Seite verspricht, kann man damit wohl Ports "öffnen" -und hoffentlich auch ne ssh- Verbindung herstellen. Was haltet ihr davon? 3. Doch mit Mittelserver: http://www.gogo6.com/freenet6/registration Wenn ich das richtig verstehe, kann man sich hier einen Account auf dem MIttelserver einrichten- aber braucht man dafür eine IPv6-Adresse (ich hab nämlich keine...). Kennt jemand einen anderen, möglichst kostenlosen Server, der das kann?
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7658
|
wenn ich doch ständig mit hping3 nen Server anpinge,
Server anpingen = den Rechner mit dem du kommunizieren willst anpingen. Fremder Server bringt dir nichts... und das von beiden Seiten aus, also Rechner A muss IP+Port von Rechner B kennen und umgekehrt. Wenn von beiden Seiten ein Ping kommt ist die Verbindung irgendwann offen, weil jede Seite dann die Antwort auf das Ping-Paket von der jeweils anderen IP/Port aus erlaubt. Somit ein Hole gepuncht. Die Alternative ist direkt am Router ne Portweiterleitung einzurichten, damit dann ständig ein Port offen ist...
|