Как «общаться» с «родительским» IP в подсети?

Как «общаться» с «родительским» IP в подсети?

У меня есть доступ только к *nix системам. Либо NetBSD и/или голая ОС на базе Linux.

Поэтому мой вопрос возникает из-за того, что ADBон не доступен на всех платформах, а если и доступен, то его очень сложно установить или получить (иметь доступ к Интернету, получить права суперпользователя и т. д.).

В любом случае, RNDISфункциональность уже предлагается почти всеми устройствами Android. Позволяя телефону стать «маршрутизатором», я получу возможность использовать netcat, поскольку я могу просто настроить «сервер» и получать/получать файлы в двух направлениях, без необходимости вмешиваться ADB.

Так:

NetBSD
dhcpcd -n urndis0

Linux
udhcpd -i usb0

Это даст мне IP в подсети, настроенной Android. Что-то вроде:192.168.32.225/24

Итак, по сути, телефон действует как маршрутизатор, давая моему компьютеру *nix IP, принадлежащий подсети, настроенной самим телефоном. Я хотел бы просто открыть порт на моем локальном хосте 127.0.0.1и netcatпросто передавать файлы.

Что-то вроде этого:

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

И иметь возможность доступа к «более высокому» сетевому/петлевому устройству, уже существующему в локальной сети Android.

Предположим, что телефон Android — это еще один хост, который использует свое подключение и назначает IP-адрес подсети моему компьютеру, чтобы мой компьютер *nix мог получить доступ к Интернету:

Тогда мой вопрос: могу ли я использовать IP-адрес (находящийся в подсети), предоставленный интерфейсом RNDIS телефона Android, для доступа к локальной сети самого телефона с помощью стандартных инструментов *nix?

Решение @Frédéric Loyer Большое спасибо!

Замечательно, с этим методом мне не нужно заходить adbна каждый компьютер, за которым я работаю, в большинстве случаев у меня есть busybox ncи или ssh. Это идеально, с этим я могу даже подключиться по ssh к своему Android, даже не нуждаясь в активном подключении на самом телефоне, разве не удивительно!?

Вот что я сделал.

# 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.

После этого остается только подключиться по ssh к моему телефону или открыть порты с помощью Termux. Удивительно! :)

решение1

На телефоне Android вы ввели:

busybox nc -v -w3 -l -p 3838

Кажется, все в порядке.

В Linux введите ip route. У вас должно получиться что-то вроде этого:

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 

Строка с defaultмаршрутом указывает адрес маршрутизатора. (Здесь 37.59.40.254). Вам следует попробовать ввести ncиз Linux этот адрес маршрутизатора, поскольку это адрес Android в подсети RNDIS. Вам следует ввести только один IP-адрес: не 127.0.0.24. (127 адресов зарезервированы для внутреннего обмена в вашей системе Linux).

Здесь нет такого понятия, как нарезка: Android создает сеть, которая может быть 192.168.32.0/24. В этой сети определены два адреса (по одному для обоих концов), другие адреса могут не работать.

Связанный контент