Wie „spricht“ man mit einer „übergeordneten“ IP in einem Subnetz?

Wie „spricht“ man mit einer „übergeordneten“ IP in einem Subnetz?

Ich habe nur Zugriff auf *nix-Systeme. Entweder NetBSD und/oder ein einfaches Linux-basiertes Betriebssystem.

Meine Frage ergibt sich aus der Tatsache, dass ADBes nicht auf allen Plattformen allgemein verfügbar ist. Wenn doch, ist es sehr schwer, es zu installieren oder zu erhalten (Internetzugang benötigen, Superuser-Zugriff bekommen usw.).

Die Funktionalität wird jedoch RNDISbereits von fast allen Android-Geräten angeboten. Wenn ich das Telefon zu einem „Router“ mache, habe ich die Möglichkeit, Netcat zu verwenden, da ich einfach einen „Server“ einrichten und bidirektional Dateien abrufen/empfangen kann, ohne mich selbst darum kümmern zu müssen ADB.

So was:

NetBSD
dhcpcd -n urndis0

Linux
udhcpd -i usb0

Dadurch erhalte ich eine IP innerhalb eines von Android eingerichteten Subnetzes. So etwas wie:192.168.32.225/24

Im Wesentlichen fungiert das Telefon also als Router und gibt meinem *nix-Computer eine IP, die zu einem vom Telefon selbst eingerichteten Subnetz gehört. Ich möchte einfach einen Port auf meinem lokalen Host öffnen 127.0.0.1und netcatDateien übertragen.

Etwas wie das:

On Android device:
busybox nc -v -w3 -l -p 3838

On *nix system (Linux in the example below):
nc -v -w3 **(upper higher loopdevice outside subnetted network) 127.0.0.24** 3838

Und Sie können auf das „höhere“ Netzwerk/Loop-Gerät zugreifen, das bereits im lokalen Netzwerk von Android vorhanden ist.

Nehmen wir an, das Android-Telefon ist ein anderer Host, der seine Verbindung teilt und meinem Computer eine Subnetz-IP zuweist, damit meine *nix-Box auf das Internet zugreifen kann:

Meine Frage ist dann: Kann ich die von der RNDIS-Schnittstelle des Android-Telefons bereitgestellte IP (die sich innerhalb eines Subnetzes befindet) verwenden, um mit nur Standardtools in *nix auf das lokale Netzwerk des Telefons selbst zuzugreifen?

Lösung @Frédéric Loyer Vielen Dank!

Wunderbar, mit dieser Methode muss ich mich nicht adbbei jedem Computer anmelden, an dem ich arbeite. Meistens bekomme ich nur busybox ncund oder ssh. Das ist perfekt, damit kann ich sogar per SSH auf mein Android zugreifen, ohne dass ich eine aktive Verbindung auf dem Telefon selbst benötige, ist das nicht toll!?

Folgendes habe ich getan.

# This makes my computer to request an IP to my phone.
$sudo udhcpc -i usb0

# Since I got access to busybox-only most of the time, this gives me the IP from the "router" which is the phone.

$route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.42.129  0.0.0.0         UG    0      0        0 usb0
127.0.0.1       *               255.255.255.255 UH    0      0        0 lo
192.168.42.0    *               255.255.255.0   U     0      0        0 usb0

# ifconfig output shows me the new IP assigned to usb0 on my computer.

Danach muss ich mich nur noch per SSH mit meinem Telefon verbinden oder die Ports mit Termux öffnen. Großartig! :)

Antwort1

Auf dem Android-Telefon haben Sie Folgendes eingegeben:

busybox nc -v -w3 -l -p 3838

Das scheint in Ordnung zu sein.

Unter Linux geben Sie ein ip route. Das Ergebnis sollte etwa so aussehen:

default via 37.59.40.254 dev enp1s0 onlink 
37.59.40.0/24 dev enp1s0 proto kernel scope link src 37.59.40.118 

Die Zeile mit der defaultRoute gibt die Routeradresse an. (Hier 37.59.40.254). Sie sollten versuchen, von Linux aus diese Routeradresse einzugeben, ncda es sich um die Android-Adresse im RNDIS-Subnetz handelt. Sie sollten nur eine IP-Adresse eingeben: Nr. 127.0.0.24. (127-Adressen sind für den internen Austausch innerhalb Ihres Linux-Systems reserviert).

So etwas wie Slicing gibt es hier nicht: Android erstellt ein Netzwerk, das möglicherweise 192.168.32.0/24… In diesem Netzwerk sind zwei Adressen definiert (eine für beide Enden), andere Adressen funktionieren möglicherweise nicht.

verwandte Informationen