如何與子網路中的「父」IP「對話」?

如何與子網路中的「父」IP「對話」?

我只能存取 *nix 系統。 NetBSD 和/或基於 Linux 的裸作業系統。

所以我的問題來自於這樣一個事實:它ADB並非在所有平台上都廣泛可用,如果是這樣,則很難安裝或獲取(訪問互聯網、獲得超級用戶訪問權限等)。

無論如何,RNDIS幾乎所有 Android 設備都已經提供了該功能。允許手機成為“路由器”將使我可以選擇使用 netcat,因為我可以設置一個“伺服器”並雙向獲取/接收文件,而無需參與ADB

像這樣:

NetBSD
dhcpcd -n urndis0

Linux
udhcpd -i usb0

這將為我提供 Android 設定的子網路內的 IP。就像是:192.168.32.225/24

因此,本質上,電話充當路由器,為我的 *nix 電腦提供屬於電話本身設定的子網路的 IP。我想在本地主機上打開一個連接埠127.0.0.1netcat傳輸文件。

像這樣的東西:

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 ncand or 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 中輸入此路由器位址,因為它是 RNDIS 子網路上的 Android 位址。您應該只輸入一個 IP 位址:no 127.0.0.24。 (127 個位址保留用於 Linux 系統內的內部交換)。

這裡不存在切片之類的東西:Android 創建了一個網絡,這可能是192.168.32.0/24。在此網路上定義了兩個位址(兩端各一個),其他位址可能不起作用。

相關內容