Forum: PC-Programmierung Netzwerk Programmierung Tun/Tap


von Martin (Gast)


Lesenswert?

Hallo zusammen

Ich benötige Hilfe bei folgender Situation. (Windows XP)
Auf PC-A läuft eine Programmiersoftware welche über zwei Ports 
kommuniziert.
Das zu programmierende Gerät ist in einem entfernten Netzwerk.
Um es nun zu warten oder zu programmieren wäre eine Lösung eine VPN 
Verbindung. Ich suche nun eine Alternative. Ein erster Versuch mit einer 
einfachen Portforwarding Software durch einen Teamviewer VPN Tunnel war 
nicht zufriedenstellend.
Meine Idee war nun mit einer Virutellen Schnittstelle (tun/tap von 
openvpn) auf Rechner A zu installieren dann auf dem PC-B (welcher im 
selben Netzwerk ist wie das zu programmierende Gerät) ein Socket 
Server/Client Programm welches die Daten in empfang nimmt und 
weiterleitet. So das es aussieht als ob die Programmiersoftware auf PC-B 
arbeitet.
Idea wäre wenn diese Kommunikation über nur einen Port läuft 
vorzugsweise Port 80.

Kennt jeman so eine Software?
Ist es überhaupt möglich? Was sagt ihr zu meiner Idee?
Andere Lösungen/Ansatze/Gedanken?

Vielen Dank

von Johannes K. (anamollo)


Lesenswert?

Theoretisch sollten 3 einfache Sachen dafür reichen:

 - Dateifreigabe (um das Kompilat von PC-A für den Programmier-PC 
freizugeben)
 - Die Programmiersoftware, mit der der Programmier-PC den Controller 
(?) flasht
 - "Polling-Software", die ständig den Inhalt der Dateifreigabe 
überprüft, ob eine Änderung des Datums vorliegt.

Sähe dann so aus:

 - Programm wird kompiliert. Kompilat kommt in die Freigabe. Die 
Freigabeverzeichnisse werden vom  "Polling-Programm" 
sekündlich/minütlich/... überwacht, welches bei einer Datumsdifferenz 
oder jedwelcher Änderung über einen DOS-Befehl (meist lässt sich über 
einen Übergabeparameter ein jedes graphische Tool überlisten) den 
Programmierprozess der Hardware anstößt.

Fertig.

von Robert L. (lrlr)


Lesenswert?

@ Johannes

scheitert ja schon am 1. Punkt (die 2 Rechner sind nicht im selben Netz)


@TO: was spricht gegen ein VPN Verbindung? (ich meine jetzt nicht 
teamviewer, sondern selber gemacht...) OpenVPN usw. ?


sonst eben SSH (das scheint es auch für windows zu geben) da kann man 
einzelne ports forwarden

http://sshwindows.sourceforge.net/information/


interessant wäre jetzt noch, ob es SICHER (also verschlüsselt) sein 
muss?

von Johannes K. (anamollo)


Lesenswert?

Ist der Programmier-PC  ein Windows- oder Linux-System?

Dann gäbe es noch die Möglichkeit, über ein Skript fürs eMail-Programm 
die Inhalte der Mail abzufragen.
Sollte sich mit einem Outlookmakro oder einem Thunderbird-Skript 
bewerkstelligen lassen.
1
if (IncomingMail.Header == *Program*) { execute(flash.exe)  }

Ansonsten: Warum kein FTP?

Im Linuxfall: ein kleines Shellskript schreiben, welches alle Minuten 
die Aktualität der Daten auf einem Server abruft. Liegt eine neue Datei 
drauf, holt sich das Skript die zu "flashende" Datei (z.b. *.Hex) vom 
Server und macht dann das Gleiche wie oben beschrieben.

Nach der Methode habe ich mal einen Gießroboter übers Internet 
gesteuert.


µC  <---  PC (mit Pollprogramm) <->  INTERNET <--- Anwender (Webseite)

... und es hat prächtig funktioniert! ;o)

von Rohe (Gast)


Lesenswert?

Martin schrieb:

> Das zu programmierende Gerät ist in einem entfernten Netzwerk.
> Um es nun zu warten oder zu programmieren wäre eine Lösung eine VPN
> Verbindung. Ich suche nun eine Alternative. Ein erster Versuch mit einer
> einfachen Portforwarding Software durch einen Teamviewer VPN Tunnel war
> nicht zufriedenstellend.
> Meine Idee war nun mit einer Virutellen Schnittstelle (tun/tap von
> openvpn) auf Rechner A zu installieren dann auf dem PC-B (welcher im
> selben Netzwerk ist wie das zu programmierende Gerät) ein Socket
> Server/Client Programm welches die Daten in empfang nimmt und
> weiterleitet. So das es aussieht als ob die Programmiersoftware auf PC-B
> arbeitet.
> Idea wäre wenn diese Kommunikation über nur einen Port läuft
> vorzugsweise Port 80.


Warum soll ein VPN funktionieren wenn die Systeme nicht miteinander 
reden können weil die in unterschiedlichen Netzen stehen ?

von Juergen R. (stumpjumper)


Lesenswert?

Mir stellt sich erst mal die Frage wie das Netz auf der "Zielseite" 
aussieht.
Das Netz wird ja nicht offen sein sondern durch irgendeine Firewall 
abgesichert sein. Kann diese Firewall z.B. IPSec, SSL, L2TP.
Kann diese z.B. IPSec könntest Du mit einem passenden Client wie von 
Shrewsoft einen Tunnel aufbauen. Der Vorteil die FW als Gegenstelle zu 
benutzen ist daß man keinen PC am Remote-Standort benötigt sondern ein 
Gerät verwendet das "sowieso" immen eingeschaltet ist.

von Juergen R. (stumpjumper)


Lesenswert?

Nachtrag:Die Sache mit dem FTP von Johannes Knöller (anamollo) ist auch 
nicht schlecht, heutzutage würde ich aber eher SCP oder sFTP verwenden.

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Danke erstmal für die vielen Vorschläge.

Die Lösungen mit FTP oder Datei Freigabe funktionieren nach meiner 
Meinung nicht oder nur schlecht da auch Live auf das System geschaut 
werden möglich sein soll. Das gäbe extrem viele Schreib/Lese Zyklen.

VPN ist absolut möglich. Nur leider ist es nicht nur eine Anlage und 
nicht immer ein Router vor Ort der das kann.

Deshalb wäre eine andere Lösung toll.

SSH werde ich mir anschauen Danke.

Hab schon mal angefangen meine Idee umzusetzten.
Kenne mich leider nicht aus mit C# und der asynchronen Programmierung.
Bekomme immer den Fehler :"Eine bestehende Verbindung wurde 
softwaregesteuert.....abgebrochen"
Denke es liegt an dem asynchron Ding.

Für weiter Ideen mit ich hoffen.
Vielen Dank

von Frank K. (fchk)


Lesenswert?

Martin schrieb:

> Andere Lösungen/Ansatze/Gedanken?

Programmiersoftware auf PC B laufen lassen und per Remote Desktop 
(vorzugsweise) oder VNC (wenn es anders nicht geht) darauf zugreifen. 
Das erfordert einfach nur eine Portweiterleitung auf Port 3389 (RDP) 
oder 5900 (VNC), und die Software kostet nix.

fchk

von Robert L. (lrlr)


Lesenswert?

>VPN ist absolut möglich. Nur leider ist es nicht nur eine Anlage und
>nicht immer ein Router vor Ort der das kann.

und überall ein anderer Systemadmin, der dir das alles nicht erlauben 
wird ;-)

nachtrag: am einfachsten wäre, wenn sich der PC vom Kunden automatisch 
zu DIR verbindet .. (z.b. indem ein mitarbeiter dort, openVPN startet 
usw. )

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.