# 【port forwarding】rinetd

[https://github.com/samhocevar/rinetd](https://github.com/samhocevar/rinetd)

`rinetd` 是一個簡單的 TCP 端口轉發工具，它可以將進入的 TCP 連接重定向到指定的目標 IP 地址和端口。以下是 `rinetd` 的基本使用方式：

1. **安裝 `rinetd`：**
    
    在大多數 Linux 系統上，你可以使用包管理器進行安裝。例如，在基於 Debian/Ubuntu 的系統上，可以運行：
    
    ```
    sudo apt-<span class="hljs-keyword">get</span> install rinetd
    
    ```
    
    在基於 Red Hat/CentOS 的系統上，可以使用 `yum`：
    
    ```
    sudo yum <span class="hljs-keyword">install</span> rinetd
    
    ```
2. **配置 `rinetd`：**
    
    配置文件通常位於 `/etc/rinetd.conf`，你可以使用文本編輯器（如 `nano` 或 `vim`）來編輯它：
    
    ```
    sudo nano <span class="hljs-regexp">/etc/</span>rinetd.conf
    
    ```
    
    在配置文件中，每行包含一條規則，指定了本地和遠程端口。格式如下：
    
    ```
    <span class="hljs-keyword">bindaddress </span><span class="hljs-keyword">bindport </span>connectaddress connectport
    
    ```
    
    
    - `bindaddress`：本地 IP 地址，可以是 0.0.0.0 表示所有網卡。
    - `bindport`：本地監聽端口。
    - `connectaddress`：目標伺服器的 IP 地址。
    - `connectport`：目標伺服器的端口。
    
    例如：
    
    ```
    <span class="hljs-number">0.0</span><span class="hljs-number">.0</span><span class="hljs-number">.0</span> <span class="hljs-number">8080</span> <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.100</span> <span class="hljs-number">80</span>
    
    ```
    
    這條規則將本地機器的 8080 端口的請求重定向到 IP 地址為 192.168.1.100，端口為 80 的伺服器。
3. **啟動 `rinetd` 服務：**
    
    保存配置文件並啟動 `rinetd` 服務：
    
    ```
    <span class="hljs-attribute">sudo service rinetd restart</span>
    
    ```
    
    或者，使用 `systemctl`：
    
    ```
    <span class="hljs-attribute">sudo systemctl restart rinetd</span>
    
    ```
    
    這將讓 `rinetd` 讀取配置文件並應用轉發規則。
4. **確認 `rinetd` 是否運作：**
    
    你可以使用以下命令檢查 `rinetd` 是否正在運行：
    
    ```
    <span class="hljs-attribute">sudo service rinetd status</span>
    
    ```
    
    或者，使用 `systemctl`：
    
    ```
    <span class="hljs-attribute">sudo systemctl status rinetd</span>
    
    ```
    
    如果服務正在運行，而且配置文件沒有錯誤，則 `rinetd` 將開始將來自本地端口的請求轉發到指定的目標伺服器。

請注意，`rinetd` 主要用於簡單的 TCP 端口轉發，並不支持高級功能。對於更複雜的需求，可能需要考慮使用其他工具或設置伺服器上的防火牆規則。