如何與子網中的“父”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.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
and orssh
。這太完美了,有了這個我什至可以 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
。在這個網路上定義了兩個地址(一個用於兩端),其他地址可能不起作用。