Zum Hauptinhalt springen

Kürzlich tauchte bei der Behebung eines Verbindungsproblems diese Frage auf. Das OpenVOS-System stellte eine Verbindung zu einem öffentlichen Server im Internet her. Der Administrator des Servers stellte eine einfache Frage: "Wie lautet Ihre IP-Adresse?" Das OpenVOS-System hat eine IP-Adresse aus einem der privaten Internet-Bereiche, die durch RFC 1918 definiert sind, zum Beispiel 192.168.0.1. Diese private Adresse wird von einem NAT-Gerät in eine öffentliche Adresse übersetzt, wenn es das private Internet verlässt und ins Internet geht. Der Administrator musste die öffentliche Adresse kennen. Der OpenVOS-Systemadministrator hatte keine Ahnung, und wir suchten händeringend nach einem Netzwerkadministrator, der uns das sagen konnte.

Es gibt eine ganze Reihe von Internet-Seiten, auf denen Sie Ihre IP-Adresse erfahren können, ABER sie verwenden alle HTTP, und OpenVOS verfügt nicht über einen Webbrowser, mit dem Sie sich mit diesen Seiten verbinden können.

Um sicherzustellen, dass ich nicht wieder in dieselbe Situation gerate, habe ich das folgende Befehlsmakro mit stcp_calls geschrieben. Es kann verwendet werden, um eine Verbindung zu einer Website herzustellen und den Text der Stammwebseite der Website anzuzeigen. Die Anzeige ist ein Hex-Ascii-Dump der zurückgegebenen Daten, sie ist nicht schön, aber lesbar. Es gibt auch einige andere Einschränkungen. Erstens funktionieren nicht alle Websites. Bei vielen Sites muss der Browser einem Link auf der Hauptseite folgen, um die IP-Adresse zu ermitteln, was der Browser automatisch tut, mein Skript aber nicht. Dennoch habe ich einige Websites gefunden, die mit dem Skript funktionieren, siehe die Kommentare im Skript. Ich schlage vor, dass Sie das Makro in einem gestarteten Prozess ausführen.

Die zweite Einschränkung ergibt sich daraus, wie das NAT-Gerät die IP-Adressen übersetzt. Einige Geräte ändern den gesamten ausgehenden Datenverkehr so, dass er dieselbe Quelladresse hat, andere Geräte haben eine Reihe von IP-Adressen, die sie für die Quell-IP-Adresse verwenden, wobei sie eine bestimmte Adresse auf der Grundlage eines internen Algorithmus auswählen. Ich kann Ihnen nur raten, das Makro mehrmals auszuführen und zu sehen, was Sie erhalten. Alle Adressen sollten sich in demselben Teilnetz befinden, aber ich kann nicht vorhersagen, welches Teilnetz das sein wird.

& find_my_ip_address beginnt hier
&
& Version 1.00 10-12-06
& Version 1.01 10-12-08 fügte der Liste eine weitere Website hinzu
& [email protected]
&
& Dieses Skript stellt eine Verbindung zu einer Website her und ruft die Hauptseite ab. Viele Websites
& die Ihre IP-Adresse anzeigen, verlangen, dass der Browser einem Link auf der
& Stammseite folgen, um Ihre IP-Adresse anzuzeigen. Diese Websites funktionieren nicht mit diesem
& Skript. Ich habe die folgenden Seiten getestet und sie funktionieren derzeit (obwohl
& ich keine Versprechungen für die Zukunft mache).
&
& Die Ausgabe wird in einem Hex-Dump/Ascii-Format angezeigt. Nicht einfach zu lesen, aber
& Sie sollten in der Lage sein, die IP-Adresse zu erkennen. Ich schlage vor, dass Sie das
& Skript als gestarteten Prozess ausführen und dann die Ausgabe durchsuchen.
&
& SERVER-HINWEISE
&       ------               -----
& findmyip.com Suche nach "is:"
& whatismyipaddress.com letzter Satz von Nicht-Null-Bytes im letzten Puffer
& www.ip-adress.com Suche nach "is:" und ja, es ist ein d in adress
& checkip.dyndns.org letzter Satz von Nicht-Null-Bytes im letzten Puffer
&     
& Diese Software wird auf einer "AS IS"-Basis bereitgestellt, OHNE JEGLICHE GARANTIE ODER JEGLICHEN
& UNTERSTÜTZUNG JEGLICHER ART. Der AUTOR SCHLIESST AUSDRÜCKLICH JEDE STILLSCHWEIGENDE GARANTIE
& DER MARKTGÄNGIGKEIT ODER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.  Dieser Ausschluss
& gilt trotz aller mündlichen Zusicherungen jeglicher Art durch den
& Autor oder einer anderen Person.
&
&begin_parameters
SERVER server:string,req
&end_parameters
&
&if (process_type) = 'batch' &dann &do
&echo no_input_lines no_command_lines no_macro_lines
&Ende
&
&attach_input
stcp_Aufrufe
Steckdose
buf_edit
0 47 45 54 20 2F 20 48 54 54 50 2F 31 2E 30 0a 0a

verbinden -name &SERVER& -port 80
senden -len 16
&Label AGAIN
..start_logging (process_dir)>recv
recv -len 1000
..stop_logging
&set_string LINE (Inhalt (process_dir)>recv 1)
..display_line &LINE&
&if (index (contents (process_dir)>recv 1) ' 0 bytes') > 0 &dann &goto QUIT
&wenn (index (contents (process_dir)>recv 1) 'bytes') = 0 &dann &goto QUIT
buf_dump
&goto AGAIN
&label QUIT
quit
&
& find_my_ip_address endet hier

 

© 2024 Stratus Technologies.