> For the complete documentation index, see [llms.txt](https://mangos-organization-2.gitbook.io/sui-xiang-bi-ji/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mangos-organization-2.gitbook.io/sui-xiang-bi-ji/frp-zui-xin-ban-ben-toml.md).

# frp（最新版本toml）

\## 介绍

frp是一个简单高效的内网穿透工具。但是我在安装使用frp来内穿透我自己的家用服务器的时候，出现了大量的问题，比如格式不对，连接拒绝等等错误，导致我连续弄了好几天才搞明白。所以我出一集我自己理解的最新版本的（相对于.ini的文件）.toml的内穿透教程。

### 前期准备

* 一台在可以联网的**内网主机**（由于安全问题，你可以访问网络，但是外界是无法访问你的局域网的主机的，而且大量的主机ip都是动态分配的）。
* 一台**拥有公网IP的云服务**。（用于暴露你的主机到公网中）
* **远程连接软件**：用来进行ssh软件。（当然只是用来进行网页穿透就不需要，直接使用浏览器访问就好。）
* 我的配置
  * 公网ip：使用阿里云的轻量云服务器。系统为Ubuntu最新长期支持版本。
  * 内穿透服务器：使用系统为Ubuntu最新长期支持版本的linux。
  * 远程连接软件：我使用的是[Termius](https://termius.com/)(一款非常好用的免费的ssh软件，可以命令窗口，也支持拖拉式传输文件)。

### 下载安装

* 我是用的是最新版本的.toml的[frp\_0.61.0](https://github.com/fatedier/frp/releases)，进入这个网页以后选择自己对应的电脑的版本的下载，如果，服务器是linux，内网主机是windows，则下载两个版本的就好。
* linux解压压缩包

```
 tar -zxvf frp_X.XX.X_linux_amd64.tar.gz
```

**注意：**&#x5C06;里面的版本替换成你下载的版本号。

* 解压以后出现的文件有：
  * **frps：**&#x8FD9;是一个frp服务器执行文件。
  * **frps.toml：**&#x8FD9;是frp服务器的配置文件，用来绑定你内网主机和云服务的访问端口和设置用户口令的文件。
  * **frpc：**&#x8FD9;是一个客户端执行文件。
  * **frpc.toml：**&#x8FD9;是客户端配置文件，用来设置你的服务，ssh，log，http，https等等的服务。
  * 一般还有一个github的认证的文件，与frp无关，无需关心。
* 服务器将frps和frps.toml复制到/etc/frp/下面，客户端复制到对应的/etc/frp/下面（如果没有就自己创建这个文件夹）。

### 配置文件

* **`frps.toml`**

```
 bindPort = 7000
```

* 用来内网主机和云服务器建立连接的端口。
  * 需要注释云服务器是否开了这个端口，没有打开需要允许这个端口访问。
  * 我使用的是阿里云服务器，先到云服务器页面，找到网络安全->安全组->找到你的内穿透的服务器->入方向->添加
    * 协议类型：TCP
    * 端口范围：7000和6000（后面用户访问外网访问内网的端口，这里是开俩个端口分开俩次添加）
    * 源：所有IPv4(0.0.0.0/0)
    * 描述：自己选择写。
  * 保存就好。
* **`frpc.toml`**

```
 # 客户端配置
 serverAddr = "云服务器公网ip地址"
 serverPort = 7000 # 与frps.toml的bindPort一致
 ​
 # 配置ssh服务
 [[proxies]]
 name = "ssh"
 type = "tcp"
 localIp = "127.0.0.1"
 localPort = 22
 remotePort = 6000  # 这个自定义，之后再ssh连接的时候要用 
```

* **注意：.ini和.toml区别**
  * 前者使用server\_addr命名，后者使用serverAddr，其他的名字一样。
  * 前者端口外其他的ip号等等不需要双引号，而后者需要双引号。
  * 前者直接使用\[name]设置你配置的文件是ssh还是http等等，而后者使用\[\[proxies]]，然后在使用name=“ssh”进行配置。
* 这里的除了serverAddr其他的可以默认。
  * serverPort需要与frps.toml的bindPort一致。
  * remotePort这个自定义，之后再ssh连接的时候要用，可以按照自己需要更改。

### 启动文件

* **`frps`**

```
 ./frps -c ./frps.toml
```

* **`frpc`**

```
 ./frps -c ./frps.toml
```

### 设置系统服务器自启动

* **`frps`**

  * 对于`systemd`，您可以创建一个服务文件（例如`/etc/systemd/system/frps.service`）：

  ```
   [Unit]
   Description=frp server
   After=network.target
   ​
   [Service]
   ExecStart=/etc/frp/frps -c /etc/frp/frps.toml
   ​
   [Install]
   WantedBy=multi-user.target
  ```

  * **注意：**&#x4FEE;改你的frps文件位置。
  * **重新加载 systemd**：让 `systemd` 读取新的服务文件：

  ```
   sudo systemctl daemon-reload
  ```

  * **启动服务**：启动 `frps` 服务：

  ```
   sudo systemctl start frps
  ```

  * **设置服务开机自启**：使 `frps` 服务在系统启动时自动运行：

  ```
   sudo systemctl enable frps
  ```

  * **检查服务状态**：检查 `frps` 服务的状态：

  ```
   sudo systemctl status frps
  ```
* `frpc`

  * 对于`systemd`，您可以创建一个服务文件（例如`/etc/systemd/system/frpc.service`）：

  ```
   [Unit]
   Description=Frp Client Service
   After=network.target
   ​
   [Service]
   Type=simple
   ExecStart=/etc/frp/frpc -c /etc/frp/frpc.toml
   Restart=on-failure
   RestartSec=5s
   ​
   [Install]
   WantedBy=multi-user.target
   ​
  ```

  * **注意：**&#x4FEE;改你的frpc文件位置。
  * **重新加载 systemd**：让 `systemd` 读取新的服务文件：

  ```
   sudo systemctl daemon-reload
  ```

  * **启动服务**：启动 `frpc` 服务：

  ```
   sudo systemctl start frpc
  ```

  * **设置服务开机自启**：使 `frpc` 服务在系统启动时自动运行：

  ```
   sudo systemctl enable frpc
  ```

  * **检查服务状态**：检查 `frpc` 服务的状态：

  ```
   sudo systemctl status frpc
  ```

### 连接

* 可以使用windows的命令窗口进行连接：

```
 ssh -p 6000 mango@"云服务器公网ip地址"
```

注意：这里的6000就是前面设置的remotePort。用户名使用你内网主机的用户名，IP地址使用阿里云云服务器的公网IP。

* 也可以使用Termius连接
  * 添加HOST
    * IP：阿里云云服务器的公网IP
    * label：你需要记录的名字
    * 端口：6000
    * username： mango（你内网主机的名字）
    * password：xxxxx（你内网主机的登录密码）
* 结&#x675F;*★,°*:.☆(￣▽￣)/$:*.°★* 。
