サブネット内の「親」IP と「通信」するにはどうすればよいでしょうか?

サブネット内の「親」IP と「通信」するにはどうすればよいでしょうか?

私がアクセスできるのは *nix システムだけです。NetBSD または Linux ベースの OS のいずれかです。

したがって、私の質問は、すべてのプラットフォームで広く利用できるわけではないという事実から来ておりADB、もし利用できるとしても、インストールまたは入手が非常に困難です (インターネットにアクセスしたり、スーパーユーザー アクセスを取得したりする必要があるなど)。

いずれにせよ、RNDISほぼすべての Android デバイスで既に機能が提供されています。電話を「ルーター」にできるようにすると、netcat を使用するオプションが提供されます。なぜなら、「サーバー」をセットアップするだけで、介入することなく双方向でファイルを取得/受信できるからですADB

このような:

NetBSD
dhcpcd -n urndis0

Linux
udhcpd -i usb0

これにより、Android によって設定されたサブネット内の IP が提供されます。次のようになります。192.168.32.225/24

つまり、本質的には電話がルーターとして機能し、電話自体によって設定されたサブネットに属する IP を *nix コンピューターに提供します。ローカルホストでポートを開いて、ファイルを転送するだけ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 ボックスがインターネットにアクセスできると仮定します。

私の質問は、Android フォンの RNDIS インターフェースによって提供される IP (サブネット内) を使用して、*nix の標準ツールだけでフォン自体のローカル ネットワークにアクセスできるかということです。

解決 @Frédéric Loyer どうもありがとうございます!

素晴らしいですね。この方法を使えば、使用している各コンピューターにアクセスする必要がなくadb、ほとんどの場合、busybox ncおよびまたはをssh取得できます。これは完璧です。これを使用すると、電話自体でアクティブな接続を必要とせずに Android に SSH 接続することもできます。素晴らしいと思いませんか?

私がやったことは次のとおりです。

# 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これは RNDIS サブネット上の Android アドレスなので、Linux からこのルーター アドレスを入力するようにしてください。IP アドレスは 1 つだけ入力してください。127.0.0.24 は入力しないでください。(127 個のアドレスは Linux システム内の内部交換用に予約されています)。

ここではスライスのようなものは存在しません。Android はおそらくネットワークを作成します192.168.32.0/24。このネットワークでは 2 つのアドレスが定義されており (両端に 1 つずつ)、他のアドレスは機能しない可能性があります。

関連情報