Virtuelle IPs unter Windows und Port-Forwarding?



  • zu meinem Programmierpost: https://www.c-plusplus.net/forum/p2491487#2491487

    Ich habe Simulation für ein TCP/IP-Gerät geschrieben - und kann davon viele auf einem Rechner auf verschiedenen Ports simulieren

    Jetzt habe ich das Problem das die dazu passende Testsoftware leider nur auf verschiedene IPs aber nicht Ports (steht fest auf 1234) konfiguriert werden kann

    im Internet habe ich folgendens gefunden:

    http://www.howtogeek.com/51741/how-to-quickly-add-multiple-ip-addresses-to-windows-servers/

    http://woshub.com/port-forwarding-in-windows/

    mit

    netsh interface ipv4 show interface

    bekomme ich folgendes

    Idx     Met         MTU          State                Name
    ---  ----------  ----------  ------------  ---------------------------
      1          50  4294967295  connected     Loopback Pseudo-Interface 1
     10          20        1500  connected     LAN-Verbindung
     19          20        1500  connected     VMware Network Adapter VMnet1
     20          20        1500  connected     VMware Network Adapter VMnet8
     16          20        1500  connected     LAN-Verbindung 2
    

    ipconfig liefert mir zu "LAN-Verbindung" folgendes

    [code]
    Ethernet-Adapter LAN-Verbindung:

    Verbindungsspezifisches DNS-Suffix: fritz.box
    Verbindungslokale IPv6-Adresse . : fe80::45aa:8e5b:381f:6737%10
    IPv4-Adresse . . . . . . . . . . : 192.168.178.27
    Subnetzmaske . . . . . . . . . . : 255.255.255.0
    Standardgateway . . . . . . . . . : 192.168.178.1
    {/code]

    bei mir ist DHCP aktiv - ich glaube das muss ich deaktivieren und die IP als feste IP eintragen

    jetzt wäre meine Frage - weil ich absolut null Ahnnug von Netzwerk-Konfiguration haben was ich noch beachten muss damit das funktionieren kann

    ich dachte mir eine virtuelle IP (wie muss die Subnetzmaske aussehen?, kann die eine voellig andere IP haben als meine feste?)

    und dann ein Port-Forwarding (oder sowas) von der virtuellen IP(Port 1234) (für die Testsoftware) auf meinen lokale Simulation (irgendeinen Port) umleiten

    Ideen?



  • Was meinst du mit virtuelle IP? Du kannst einem Netzwerkadapter eine oder mehrere IPs zuweisen. Das sind dann ganz normale IPs die sich nicht von der "Haupt-IP" deines Geräts unterscheiden. Darauf kann man dann auch ganz normal Ports binden.

    Zu jeder IP gehört dann auch eine Subnetzmaske. So kannst du entweder IPs im selben Subnet vergeben wie die "Haupt-IP", oder aber auch komplett andere.

    Eine Möglichkeit dazu wäre das alles von Hand über den IP-Settings Dialog einzustellen. Eine andere Möglichkeit wäre dein Programm so anzupassen dass es per API eine temporäre IP anlegt (und bei Programmende wieder entfernt).
    Das geht über die Funktionen AddIPAddress und DeleteIPAddress.



  • zu meinem Netzwerkwissen: ausser den DHCP mal auszuschalten und statische IPs zu vergeben habe ich bisher nichts gemacht

    Was meinst du mit virtuelle IP?

    vielleicht meine ich auch nicht virtuelle IPs
    ich mir nicht sicher was ich brauche um meine Problem zu lösen
    - ich beschreibe einfach nochmal meinen Aufbau

    1. die Testsoftware kann sich nur mit Geräten verbinden die auf Port 1234 erreichbar sind (es gibt keine Möglichkeit dieses Defaultverhalten zu ändern) und ich moechte mich mit lokalen Simulations-Prozessen verbinden sind nicht alle gemeisam den Port 1234 nutzen können(und sollen)

    2. meine GerätesimulationeN laufen auf localhost mit Port 105,106,107
    jetzt moechte ich 3x die Testsoftware lokal starten und mit meinen 3 lokalen Simulationen verbinden.
    Dafür brauche ich (weil die Testsoftware eben so schlecht ist) 3 verschiedenen IP-Adressen die auf localhost führen und welche die Kommunikation auf Port 1234 auf 105,106,107 umleiten

    alles lokal auf dem Rechner:
    Testsoftware(1) "Eindeutige_IP_1":1234 <---> localhost:105
    Testsoftware(2) "Eindeutige_IP_2":1234 <---> localhost:106
    Testsoftware(3) "Eindeutige_IP_3":1234 <---> localhost:107

    die "Eindeutige_IP_xyz" könnte soweit ich das verstanden habe eine sog. virtuelle IP sein und damit die Kommunikation von dem festen Port 1234 auf meinen lokalen Simulations-Port kommt bräuchte ich dann glaube ich noch Portforwarding (oder?)

    Eine Möglichkeit dazu wäre das alles von Hand über den IP-Settings Dialog einzustellen. Eine andere Möglichkeit wäre dein Programm so anzupassen dass es per API eine temporäre IP anlegt (und bei Programmende wieder entfernt).
    Das geht über die Funktionen AddIPAddress und DeleteIPAddress.

    oder über das netsh Kommando auf der Kommandozeile/Batchdatei - oder ist das von was du sprichst etwas anderes?

    und ich habe weitere Fragen:
    -muss DHCP dafür wirklich deaktiviert sein? (bisschen Problematisch in der Domäne)
    -brauche ich Portforwarding?



  • meine bisherigen Erkenntnisse:

    1. DHCP muss deaktiviert sein - sonst ersetzt das "netsh add" Kommando einfach nur die IP welche vom DHCP gekommen ist

    2. ich kann eine zusätzlich IP mit netsh anlegen
    (in einer Admin-Konsole)

    add

    netsh interface ipv4 add address "LAN-Verbindung" 192.168.178.103
    

    delete

    netsh interface ipv4 delete address "LAN-Verbindung" 192.168.178.103
    

    3. ich kann dann mit dem Freeware Tool Herclues(http://www.hw-group.com/products/hercules/index_en.html) (TCP,UDP,RS232 Client/Server) eine Verbindung von TCP-Client auf 192.168.178.103:103 zu Server Listen(Port: 103) aufbauen und kann auch Daten senden/empfangen - d.h. die zusätzliche IP funktioniert schon mal

    4. jetzt fehlt mir noch die 192.168.178.103:1234 auf localhost:103 Umleitung
    (in einer Admin-Konsole)

    add portproxy

    netsh interface portproxy add v4tov4 listenaddress=192.168.178.103 listenport=1234 connectaddress=localhost connectport=103
    

    show portproxy

    netsh interface portproxy show all
    
    Abfragen auf ipv4:             Verbinden mit ipv4:
    
    Adresse         Anschluss   Adresse         Anschluss
    --------------- ----------  --------------- ----------
    192.168.178.103 1234        localhost       103
    

    delete portproxy

    netsh interface portproxy delete v4tov4 listenaddress=192.168.178.103 listenport=1234
    

    wenn ich jetzt meinen Server auf localhost:103 starte und dann auf
    192.168.178.103:103 verbinden will kommt ein Fehler, auf Port 103 funktioniert es

    http://postimg.org/image/ge1c6hs07/

    eine Idee?



  • hatte mich im Post verschrieben:

    wenn ich jetzt meinen Server auf localhost:103 starte und dann auf
    192.168.178.103:1234 verbinden will kommt ein Fehler, auf Port 103 funktioniert es

    http://postimg.org/image/ge1c6hs07/



  • Gast3 schrieb:

    2. meine GerätesimulationeN laufen auf localhost mit Port 105,106,107
    jetzt moechte ich 3x die Testsoftware lokal starten und mit meinen 3 lokalen Simulationen verbinden.
    Dafür brauche ich (weil die Testsoftware eben so schlecht ist) 3 verschiedenen IP-Adressen die auf localhost führen und welche die Kommunikation auf Port 1234 auf 105,106,107 umleiten

    Schreib deine Gerätesimulation doch einfach so um dass sie auf Port 1234 einer angegebenen IP bindet. Wozu da sinnlos Proxies dazwischenschalten?



  • Schreib deine Gerätesimulation doch einfach so um dass sie auf Port 1234 einer angegebenen IP bindet. Wozu da sinnlos Proxies dazwischenschalten?

    hab ich mir dann auch gedacht und gerade umgesetzt - funktioniert wunderbar

    Danke



  • Bitte 🙂


Log in to reply