Hallo.
Ich bin auf der Suche nach Beispielen, Tipps oder Vorgehensweisen zu folgendem Problem, finde aber mit meinen Stichwörtern bei Google und Co einfach nix. Daher hier mal die Frage was ich vor habe:
Ein PC ist mit einem Server verbunden, welcher DHCP eingestellt hat.
Der PC erhält die Adresse 192.168.10.28 (Gateway 192.168.10.1, Subnet 255.255.255.0).
Auf dem Schreibtisch steht ein Controller, welcher von Haus aus 10.0.0.11 eingestellt hat.
Nun möchte ich an diesen Controller Daten übertragen ohne immer die IP-Adresse zu ändern, bzw. es auch sein kann, dass die IT einem dies verbietet.
Wie kann ich das unter C# umsetzen, dass ich auf eine IP-Adresse zugreifen kann, welche nicht im eigenen IP-Adressbereich liegt?
Oder gibt es Steuerungsmöglichkeiten in C#, mit denen ich das über Windows steuern kann?
Danke für ein paar Tipps.
Das weiter zu elaborieren macht wenig Sinn, aber du kannst dir mal Wikipedia: IP-Adresse zu dem Thema durchlesen.
TL;DR: Geht nicht (zumindest nicht als reine Softwarelösung via C#)
Wenn du über verschiedene Netze miteinander kommunizieren willst, musst du den Verkehr routen und dafür empfiehlt sich, oh Wunder, am ehesten ein Router. Ist bei den meisten (nicht vom ISP geboxten) Routern eine Standardfunktion.
Beste Grüße
emuuu
2+2=5( (für extrem große Werte von 2)
Meine Idee war, dass ich für die Übertragung auf den Controller die IP-Adresse von Windows für die Zeit automatisch in C# umstelle, übertrage und danach wieder auf die letzte Adresse zurückstelle.
Oder das ich eine 2. Adresse auf die Netzwerkkarte setze, und die Übertragung darüber abwickle.
Ich verbinde mich ja nicht über das Internet oder so, sondern Hard mit Netzwerkkabel.
Dient hier nur als Komfort. Eine Verbindung über einen Router oder das Firmennetzwerk ist ausgeschlossen (könnte man ja auch überprüfen, bevor man die IP-Adresse im Programm umstellt).
Nur so als Idee, was meinst du?
Dann würde ich mir gar nicht erst du Mühe machen etwas in C# umzusetzen sondern eine simple CMD-Datei anlegen:
netsh interface ipv4 set address name="Controller-Net" static 10.10.10.12 255.255.255.0 10.10.10.1
Und das ganze dann wieder umgekehrt, wenn du ins alte Netz zurückwillst. Es gibt bestimmt noch einen Fancy "if"-Befehl für cmd mit dem du prüfen kannst in welchem Netz du gerade bist und dann entsprechend ins andere wechselst (kA ob es das gibt, dafür arbeite ich zu wenig damit). Dann hast du eine CMD-Datei mit der du jeweils zwischen den Netzen wechseln kannst.
2+2=5( (für extrem große Werte von 2)
Evtl. versteh ich das nicht 100%, aber suchst Du nicht einfach ne Network-Bridge (zB ne vEthernat NAT wie es Hyper-V und Docker machen)?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
In der Art:
Umgekehrt:
Für den ersten Schritt ok. Aber nicht sexy 😃
Ich les mich mal in Multihoming rein. Ggf. gibt es da was steuerbar in C#.
@Abt: Der Rechner wird von der IT für das Firmennetzwerk mit DHCP versorgt. Wenn ich auf den Controller möchte, um dort was zu machen, baue ich die Verbindung über TCP Ethernet auf.
Die Controller kommen vom Lieferanten mit der Voreinstellung 10.0.0.11.
Wenn ich nun das Netzwerkkabel abstecke und mich mit einem anderen auf den Controller verbinde, habe ich meist noch die vorher zugewiesene Adresse eingestellt, welche 192.168.10.xxx ist.
Damit komme ich nicht auf den Controller. Daher stelle ich diese immer von Hand auf 10.0.0.10 um.
Da ich die Übertragung zum Controller in C# realisiert habe, wollte ich das mit der IP-Adresse auch noch komfortable integrieren, da später das Programm weiterbenutzt werden soll.
Daher die Idee. Mit den Batches funktioniert das aktuell ganz gut, aber ist keine sichere Lösung. Die Batches liegen in Klartext vor, können also beschädigt werden, wenn jemand was darum rumspielt.
Direkt in C# wäre besser. Ggf. überlege ich den Befehl in C# aufzubauen und ihn dann zu starten. Sollte auch möglich sein, brauche ich keine Batches mehr.
Wäre es nicht einfacher einfach eine weitere Netzwerkkarte einzubauen, als dieses hin und her stöpsle der Netzwerkkabel.
Es gibt auch Netzwerkadapter die man per USB anschließen kann.
Ziemlich hartes gebastel Krumnix.
Wenn der Lieferant ein mal die IP Adresse am Controller ändert, wirst organisatorisch an die Grenzen kommen, oder?
Wie die Vorredner: USB Adapter.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo,
es ist definitiv Softwaretechnisch möglich,
zu einem auf DHCP eingestellten Netzwerkadapter eine feste IP in einem anderen Adressbereich hinzuzufügen.
Ich weiß zwar nicht genau wie, benutze aber eine Software welche genau so etwas kann...
Nennt sich Siemens TIA Portal und ist zur Programmierung von Siemens S7-Steuerungen.
Im Screenshot im Anhang sieht man dass mein Netzwerkadapter via DHCP die Adresse 192.168.202.63 erhalten hat, wenn ich mich versuche mit der Steuerung mit der IP 192.168.200.3 zu verbinden, fragt mich die Software ob eine zus. feste IP zum Netzwerkadapter hinzugefügt werden soll.
Im Anschluss kann ich mich mit der Steuerung verbinden und kann auch andere Geräte im Bereich 192.168.200.xx erreichen. Des weiteren kann ich auf alles im Bereich 192.168.202.xx zugreifen.
Welche Funktionen Siemens dabei genutzt? Keine Ahnung!
Ich wollte mit diesem Posting nur klarstellen, dass die Aufgabenstellung aus dem ersten Posting definitiv umsetzbar ist.
PS: In Unternehmens-Netzwerken hat der einfache User meist kein Recht IP-Adressen zu ändern. Damit er dieses bekommt muss der jeweilige User in den Benutzerkonten zu den "Netzwerkkonfigurations-Operatoren" hinzugefügt werden.
Sollte das nicht mit Windows Board-Mitteln gehen?
Siehe Anhang:
http://dotnet-paderborn.azurewebsites.net/
Können die Geräte kein IPv6?
Da könntest du dir zusätzlich eine passende Adresse vergeben oder direkt die Link-Local-Adresse nehmen.
Nennt sich Siemens TIA Portal und ist zur Programmierung von Siemens S7-Steuerungen.
Wir kommen aus der gleichen Welt. Daher ja meine Idee. Im TIA geht das definitiv. Habs schon 100 Mal selbst verwendet.
Jetzt habe ich einen Controller von Heidenhain (falls dir das was sagt) und möchte darauf zugreifen (kann KEIN IPv6).
Es ist mühsam das immer wieder umzustellen. Der Controller hat halt von Werk seit Jahrzehnten die gleiche IP.
In TIA kann ich eine IP-Adresse zuweisen, selbst wenn ich keine Netzwerkrechte habe. Habs selbst schon gemacht.
Nur WIE macht das Siemens?
PS: Ein USB-Adapter ist ausgeschlossen!
Nur WIE macht das Siemens?
Das würde ich auch gerne wissen, hab auch ständig den Fall auf differierende Netzwerk-Bereiche zugreifen zu müssen, da könnte man sich mal ein schönes Tool schreiben 😉
Hab gerade nochmal nachgesehen.
Man kann einem Adapter mehrere IPv4-Adressen zuweisen (über den "Erweitert"-Button).
wenn die IT einem verbietet, die IP zu ändern, wird sie einem aus demselben Grund (versehentlich doppelt vergebene Adressen im internen Netz) auch verbieten, eine IP-Adresse per Kommandozeile zu vergeben.
Wenn die IP-Range, die man zusätzlich braucht, sich nie ändert, kann man die IT einfach bitten, einem ein Routing in diesen Adressbereich einzurichten. Dann klemmt man einfach den Controller ans interne Netz an und richtet ihn ein. Routing können auch schon Switche mit Management, dafür braucht man keinen expliziten Router. Am besten am Default-Gateway einrichten, dann muss man an den Clients gar nichts mehr machen.
Und jetzt darf das gerne noch C# durchführen, bzw. mein Programm später.
Wie TIA bei Siemens 😃
Code snippets / Beispiele dazu wären traumhaft 😃
@GarlandGreene und andere Hochsprachler:
Es geht hier im Grunde um ein Programm, welches später beim Einrichten einer SPS helfen soll. Die Maschinen werden nie ins Firmennetz integriert oder sonstiges. Es werden keine USB-Adapter gekauft oder was auch immer.
Die IBNler an der Maschine erhalten eine EXE, verbinden sich mit der Steuerung, dem Controller, und laden das Programm hoch.
Aktuell müssen Alle immer ihre Adressen anpassen.
Da bei der IBN mehrere Controller zum Einsatz kommen (Siemens, Heidenhain, SEW, Balluff, Beckhoff, sagt euch jetzt wohl wenig), muss jedes Mal die IP-Adresse umgestellt werden.
Mein Programm soll das so effizient umsetzen, wie es Siemens beim TIA Portal kann. Dem sind die Rechte sowas von egal. Es wird eine Adresse eingetragen und es funktioniert.
Das will ich auch 😉
Ich bin seit weit über 10 Jahren (ich weiß, Du weit mehr - ändert aber nichts) im Maschinenbau/Branche tätig....und mir sagen auch alle Deine genannten (Steuerungs)Hersteller was oder hab damit auch (heute) aktiv zutun. Und ich weiß auch, dass einige Helfer hier im Maschinenbau tätig sind - und sicherlich die Hersteller kennen werden.
Es ist daher evtl. ratsam nicht ganz so "herablassend" (jedenfalls liest sich das so) zu reden, dass die Leute hier Dein Umfeld nicht kennen könnten - oder gar ähnliches bereits (evtl. besser?) umgesetzt haben 😉
Wenn ein Helfer Dir Vorschläge macht zur Problemlösung, die aber zu Deinem Umfeld nicht passen, dann ist das kein Problem oder böse gemeiner Hinweis eines Helfers: dann hast Du einfach die Requirements nicht klar beschrieben.
Und wenn ich TIA richtig kenne, dann sind hier die Rechte (zumindest bei der Installation) nicht egal, weil im Hintergrund Anpassungen an Windows in Form von Connectoren, Adaptern und Systemsettings durchgeführt werden.
IIRC werden auch Services registriert.
Das hat zur Folge, dass ein Benutzer ohne Rechte trotzdem Systemsettings setzen kann, weil der TIA Service, mit dem die Anwenderapplikation kommuniziert, dazu bei der Installation die Rechte bekommen hat.
TIA wird mit Sicherheit auch nicht die gesamte, systemweite Netzwerkkarte kapern.
Ich würde tippen, dass TIA eine virtuelle Netzwerkkarte (Virtual TAP Adapter) anlegt. Zumindest macht das auch SIMATIC.
Evtl. kann man auf diese TAP Adapter auch ohne Admin-Rechte zugreifen, dann braucht man keinen Service dazwischen - aber das weiß ich nicht.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Wir haben auch mit diversen Terminals zu tun und haben für die Einrichtung und zum Testen einen extra Netzwerkadapter installiert. Diese dauernde Umstecken ist doch blöd und man hatte dann auch keinen Zugriff zum Firmennetzwerk was auch blöd ist.
Aber die ganze Tools machen es meine ich per Address Resolution Protocol.
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/arp
Im Anhang habe ich mal ein Screenshot des Netzwerkadapters gemacht,
nachdem Siemens TIA die IP-Adresse hinzugefügt hat...
TIA wird mit Sicherheit auch nicht die gesamte, systemweite Netzwerkkarte kapern.
Ich würde tippen, dass TIA eine virtuelle Netzwerkkarte (Virtual TAP Adapter) anlegt. Zumindest macht das auch SIMATIC.
Müsste dieser zusätzliche Adapter dann in den Netzwerkverbindungen sichtbar sein?
Bei mir ist kein zusätzlicher Adapter sichtbar...
Hab ich mal gefunden.
Wäre ein kleiner Anfang.
Teste es mal und geb euch bescheid!