# Redirection de ports

La redirection de ports locale vous permet d'atteindre les services situés
derrière votre serveur — une base de données, un notebook, un serveur de
développement — depuis votre appareil, comme s'ils étaient locaux.

## Ajouter une règle

Ouvrez un hôte dans l'éditeur et allez dans l'onglet **redirection**. Chaque
règle comprend :

- **port local** — le port sur votre appareil (au moins 1024 ; le bac à
  sable iOS ne peut pas se lier en dessous),
- **hôte distant** — tel que le voit le serveur SSH (par défaut `localhost`),
- **port distant**,
- un **libellé** facultatif,
- **démarrer automatiquement à la connexion**.

Les préréglages couvrent les habitués : jupyter 8888, postgres 5432, mysql 3306,
redis 6379, web 3000, web 8080.

Les ports locaux ne peuvent pas se répéter au sein d'un même hôte. Les
modifications de règles s'appliquent en direct à un hôte déjà connecté.

![L'onglet redirection de l'éditeur d'hôtes avec une règle : port local 8080 vers localhost:18080, libellée dev server, avec son interrupteur d'activation.](https://bambouville.com/docs/assets/img/forwarding-rule.png)

*Une règle enregistrée dans l'onglet redirection de l'éditeur d'hôtes, avec son interrupteur d'activation et son état actuel.*


## La page des tunnels

La page **tunnels** de la barre latérale rassemble toutes les règles de
redirection de tous vos hôtes, groupées par hôte avec leur état
connecté/déconnecté. Chaque règle affiche son état (par exemple
« à l'écoute · 0 active »), des compteurs d'octets ↑/↓ en direct, un
interrupteur d'activation et un bouton pour ouvrir les ports de type HTTP dans
Safari.

Dans une session, une pastille **⇄ N** dans la barre supérieure affiche le
même état pour cet hôte.

Sur [iPhone](https://bambouville.com/docs/fr/iphone/), les tunnels sont visibles depuis la barre supérieure
de la session, mais les règles se créent et se modifient sur iPad.

![La page des tunnels listant une règle de redirection, 8080 vers localhost:18080 libellée dev server, groupée sous un hôte connecté, avec son état à l'écoute et un interrupteur d'activation.](https://bambouville.com/docs/assets/img/tunnels-page.png)

*Toutes les règles de tous les hôtes, groupées par hôte, chacune avec son état en direct et son interrupteur.*


## Utiliser un tunnel

Dès qu'une règle est à l'écoute, pointez n'importe quelle app de l'appareil
vers `localhost:<local port>` — un
navigateur pour un serveur de développement, un client Postgres pour une base
de données. Le trafic circule à l'intérieur de la connexion SSH jusqu'à votre
serveur, qui se connecte ensuite à l'hôte:port distant.

## Mosh et redirection

Les règles de redirection empruntent la connexion SSH. Avec le transport
**mosh** :

- les modes de lancement **tmux automatique** et **tmux nommé** conservent un
  canal SSH secondaire pour tmux, et la redirection fonctionne par ce canal.
- le mode de lancement **personnalisé** n'a aucune connexion SSH pour
  transporter les redirections, l'ajout de règles est donc désactivé — passez
  le mode de lancement à tmux automatique ou tmux nommé.

## Limites

- Le port local doit être **≥ 1024** (bac à sable iOS).
- Pas de ports locaux en double par hôte.
- La redirection est uniquement locale vers distante ; il n'y a pas de
  redirection distante (-R).
