Reenvío de puertos a USB Tether

Tengo RaspberryPi que se conectó al teléfono Android a través de USB y la conexión USB está activada. El teléfono Android está conectado al enrutador doméstico (Wi-Fi). Con esta configuración, mi Raspberry Pi puede acceder a Internet con la ruta USB-Android Phone-Home Router-Internet. Y puedo acceder a mi Raspberry con la aplicación VX ConnectBot en un teléfono Android. Lo que quiero hacer es hacer una conexión ssh a Raspberry Pi con mi computadora portátil (que también está conectada al enrutador doméstico). ¿ES posible redirigir los paquetes wi-fi entrantes a usb en un teléfono Android?

Para ser claro, aquí está el camino que quiero;

Computadora portátil (conexión ssh) -> Enrutador doméstico -> Teléfono Android -> USB -> Raspberry Pi

Intente ejecutar un proxy en el teléfono y luego ssh al Pi a través del proxy del teléfono usando la dirección IP de Raspberry Pi

Respuestas (2)

Eso debería ser posible y requiere un reenvío de puerto inverso, que se puede configurar con adb :

Ejecute este comando en su Raspberry Pi: ¿ adb reverse tcp:<remote> tcp:<local>dónde <remote>está el puerto TCP en su teléfono Android y <local>el puerto TCP en su Raspberry Pi?

Ejemplo:

adb reverse tcp:2222 tcp:22

Digamos que su teléfono Android tiene la IP WiFi 192.168.1.5. Ahora debería poder conectarse desde su computadora portátil (o cualquier dispositivo en el WiFi) a 192.168.1.5: 2222 y terminar reenviado al puerto ssh de su Raspberry Pi en el puerto 22.

Es posible que deba compilar adb para Raspbian usted mismo, lo cual se explica aquí . Pero las versiones recientes de Raspbian deberían incluir un cliente adb reciente.

2da opción: puede reenviar (retransmitir) los puertos en la subred de anclaje USB, generalmente 192.168.42.x, donde 192.168.42.129 es su teléfono Android y la Raspberry Pi tendrá una interfaz usb0con la dirección IP asignada por el DHCP de Android. Comprenda que una vez que se habilita la conexión USB, su teléfono tendrá dos interfaces de red activas: wlan0(que es su WiFi 192.168.1.x como de costumbre) y usb0(que es 192.168.42.x). Debe conocer la IP usb0 en su Raspberry Pi, una vez que esté conectado a la conexión USB. Ahora, para que todo funcione, necesitará usar una herramienta como tcpxd en su teléfono Android:

tcpxd 192.168.1.5:2222 192.168.42.55:22

Donde 192.168.42.55 es tu usb0IP de tu Raspberry Pi. Igual que la opción 1: debería poder conectarse desde su computadora portátil (o cualquier dispositivo en el WiFi) a 192.168.1.5:2222 y terminar reenviado por puerto (retransmitido) al ssh de su Raspberry Pi en el puerto 22.

Ambas soluciones deberían funcionar sin root.

¿Esto también funciona con UDP, o es solo TCP?

Fwd: la aplicación de reenvío de puertos puede reenviar puertos TCP y UDP.

El uso es sencillo:

  1. Haga clic en el signo más para agregar una nueva regla
  2. ponle un titulo
  3. Seleccionar protocolo (TCP o UDP o ambos)
  4. Seleccione la interfaz y el puerto de origen
  5. Proporcione la IP y el puerto de destino

Sin embargo, hay dos limitaciones:

  • Debe conocer la dirección IP local de la PC/RaspberryPi, que probablemente cambie cada vez que habilite la conexión USB.
  • La aplicación no crea un reenvío de puerto real en la capa IP (esto requeriría privilegios de root). En su lugar, los datos entrantes se reenvían a un nuevo flujo a la PC conectada, similar a socat . Esto cambia la dirección IP de envío que no es aceptable para todos los casos de uso.