서브넷의 "상위" 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를 제공합니다. localhost에서 포트를 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 휴대폰이 연결을 공유하는 또 다른 호스트라고 가정하고 내 *nix 상자가 인터넷에 액세스할 수 있도록 내 컴퓨터에 서브넷 IP를 할당합니다.

그래서 내 질문은: 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 주소는 하나만 입력해야 합니다(127.0.0.24 아님). (127개의 주소는 Linux 시스템 내에서 내부 전환을 위해 예약되어 있습니다.)

여기에는 슬라이싱 같은 것이 없습니다. Android는 아마도 네트워크를 생성합니다 192.168.32.0/24. 이 네트워크에는 두 개의 주소가 정의되어 있습니다(양쪽에 하나씩). 다른 주소는 작동하지 않을 수 있습니다.

관련 정보