Linux

如何與子網中的“父”IP“對話”?

  • October 29, 2021

我只能訪問 *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 打開埠即可。驚人!:)

在 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 地址:沒有 127.0.0.24。(127 個地址被保留用於您的 Linux 系統內的內部交換)。

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

引用自:https://unix.stackexchange.com/questions/675069