如何与子网中的“父”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。在此网络上定义了两个地址(两端各一个),其他地址可能不起作用。

相关内容