# Reenvío de puertos

El reenvío de puertos local te permite llegar a los servicios que hay detrás de
tu servidor — una base de datos, un notebook, un servidor de desarrollo — desde
tu dispositivo como si fueran locales.

## Añadir una regla

Abre un host en el editor y ve a la pestaña de **reenvío**. Cada regla consta de:

- **puerto local** — el puerto en tu dispositivo (debe ser 1024 como mínimo; el
  sandbox de iOS no puede enlazar por debajo),
- **host remoto** — tal como lo ve el servidor SSH (por omisión `localhost`),
- **puerto remoto**,
- una **etiqueta** opcional,
- **iniciar automáticamente al conectar**.

Los ajustes predefinidos cubren los sospechosos habituales: jupyter 8888,
postgres 5432, mysql 3306, redis 6379, web 3000, web 8080.

Los puertos locales no pueden repetirse dentro de un mismo host. Los cambios en
las reglas se aplican en vivo a un host ya conectado.

![La pestaña de reenvío del editor de hosts con una regla: puerto local 8080 hacia localhost:18080, etiquetada dev server, con su conmutador de activación.](https://bambouville.com/docs/assets/img/forwarding-rule.png)

*Una regla guardada en la pestaña de reenvío del editor de hosts, con su conmutador de activación y su estado actual.*


## La página de túneles

La página de **túneles** de la barra lateral reúne todas las reglas de reenvío
de todos tus hosts, agrupadas por host con su estado conectado/desconectado.
Cada regla muestra su estado (p. ej. «escuchando · 0 activas»), contadores de
bytes ↑/↓ en vivo, un conmutador de activación y un botón para abrir los
puertos de tipo HTTP en Safari.

Dentro de una sesión, una ficha **⇄ N** en la barra superior muestra el mismo
estado para ese host.

En el [iPhone](https://bambouville.com/docs/es/iphone/), los túneles son visibles desde la barra superior de
la sesión, pero las reglas se crean y se editan en el iPad.

![La página de túneles con una regla de reenvío, 8080 hacia localhost:18080 etiquetada dev server, agrupada bajo un host conectado y mostrando su estado de escucha con un conmutador de activación.](https://bambouville.com/docs/assets/img/tunnels-page.png)

*Todas las reglas de todos los hosts, agrupadas por host, cada una con su estado en vivo y su conmutador.*


## Usar un túnel

Cuando una regla está escuchando, apunta cualquier app del dispositivo a
`localhost:<local port>` — un
navegador para un servidor de desarrollo, un cliente de Postgres para una base
de datos. El tráfico viaja dentro de la conexión SSH hasta tu servidor, que a
su vez se conecta al host:puerto remoto.

## Mosh y el reenvío

Las reglas de reenvío viajan sobre la conexión SSH. Con el transporte **mosh**:

- los modos de inicio **tmux automático** y **tmux con nombre** mantienen un
  canal lateral SSH para tmux, y el reenvío funciona a través de él.
- el modo de inicio **personalizado** no tiene ninguna conexión SSH por la que
  llevar los reenvíos, así que añadir reglas está desactivado — cambia el modo
  de inicio a tmux automático o tmux con nombre.

## Límites

- El puerto local debe ser **≥ 1024** (sandbox de iOS).
- No puede haber puertos locales duplicados por host.
- El reenvío es solo de local a remoto; no hay reenvío remoto (-R).
