# 連接埠轉發

本機連接埠轉發讓你能從自己的裝置連到伺服器背後的服務 —— 資料庫、notebook、
開發伺服器 —— 就像它們在本機一樣。

## 加入規則

在編輯器中打開一台主機，切換到**轉發**標籤。每條規則包含：

- **本機連接埠** —— 你裝置上的連接埠（必須為 1024 或以上；iOS 沙箱無法綁定更
  低的連接埠），
- **遠端主機** —— 從 SSH 伺服器看到的位址（預設為 `localhost`），
- **遠端連接埠**，
- 選用的**標籤**，
- **連線時自動啟動**。

預設組合涵蓋了常見的那幾個：jupyter 8888、postgres 5432、mysql 3306、
redis 6379、web 3000、web 8080。

同一台主機內的本機連接埠不能重複。對規則的修改會即時套用到已經連線的主機上。

![主機編輯器的轉發標籤，其中有一條規則：本機連接埠 8080 對應到 localhost:18080，標籤為 dev server，並附有啟用開關。](https://bambouville.com/docs/assets/img/forwarding-rule.png)

*主機編輯器轉發標籤中已儲存的一條規則，附帶啟用開關和目前狀態。*


## 通道頁面

側邊欄的**通道**頁面會匯集你所有主機上的每一條轉發規則，依主機分組，並顯示
已連線／已中斷狀態。每條規則都會顯示它的狀態（例如「監聽中 · 0 個作用中
連線」）、即時的 ↑/↓ 位元組計數、一個啟用開關，以及一個在 Safari 中打開類 HTTP
連接埠的按鈕。

在工作階段內，頂部列的 **⇄ N** 按鈕會顯示該主機的相同狀態。

在 [iPhone](https://bambouville.com/docs/zh-hant/iphone/) 上，可以從工作階段的頂部列查看通道，但規則的製作和編輯
要在 iPad 上進行。

![通道頁面列出一條轉發規則：8080 對應到 localhost:18080，標籤為 dev server，歸在一台已連線的主機底下，顯示其監聽狀態並附有啟用開關。](https://bambouville.com/docs/assets/img/tunnels-page.png)

*所有主機上的每一條規則，依主機分組，各自附有即時狀態和一個開關。*


## 使用通道

當一條規則開始監聽後，把裝置上的任何 App 指向 `localhost:<local port>` ——
開發伺服器用瀏覽器，資料庫用 Postgres 用戶端。流量會在 SSH 連線內部傳到你的
伺服器，再由它連往遠端的 host:port。

## Mosh 與轉發

轉發規則搭載在 SSH 連線上。使用 **mosh** 傳輸方式時：

- **自動 tmux** 和**具名 tmux**啟動模式會為 tmux 保留一條 SSH 側通道，轉發就
  在它上面運作。
- **自訂**啟動模式沒有可承載轉發的 SSH 連線，因此無法加入規則 —— 請把啟動模式
  改為自動 tmux 或具名 tmux。

## 限制

- 本機連接埠必須 **≥ 1024**（iOS 沙箱）。
- 同一台主機不可有重複的本機連接埠。
- 轉發只支援本機到遠端；沒有遠端（-R）轉發。
