서브넷의 "상위" IP와 "대화"하는 방법은 무엇입니까?

서브넷의 "상위" IP와 "대화"하는 방법은 무엇입니까?

*nix 시스템에만 액세스할 수 있습니다. NetBSD 및/또는 베어 Linux 기반 OS.

그래서 내 질문은 모든 플랫폼에서 널리 사용할 수 없다는 사실에서 비롯됩니다 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 휴대폰이 연결을 공유하고 내 *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). ncRNDIS 서브넷의 Android 주소이므로 이 라우터 주소로 Linux에서 입력을 시도해야 합니다 . IP 주소는 하나만 입력해야 합니다(127.0.0.24 없음). (127개의 주소는 Linux 시스템 내 내부 교환을 위해 예약되어 있습니다.)

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

관련 정보