# 为什么要使用内网穿透
对于我个人而言,是增加了一种远程办公的途径,平时使用比较多的是向日葵,但是自从有了远程成功后手动把远程端的向日葵关闭事件之后,就非常想要搭建一个自己的远程途径,就有朋友推荐了frp,成功的解决了这个问题,下面就介绍下frp的搭建和使用过程。
# 准备工作
想要搭建frp服务,首先要满足一下几个条件:
1、有公网IP的机器,可以是阿里云或者腾讯云的云服务器,或者自己有公网IP也可;阿里云服务器时不时会有优惠,需要的可以[点击链接](https://www.aliyun.com/daily-act/ecs/fy22-12-yure?userCode=4n7hxcic)购买;
2、需要远程的客户机;
3、Linux系统知识,frp也可以在Windows平台搭建,这里先不做描述。
# 服务搭建
## frp下载
frp目前最新的版本为:v0.39.1,大家可以点击[这里](https://github.com/fatedier/frp/releases)前往官网,根据自己的服务器系统进行下载,这里使用的是:frp_0.39.1_linux_amd64.tar.gz
![image.png](http://www.zlinks.top/upload/2022/02/image-a2dfd99ebc1c47cf831b5eb3db54104f.png)
## 服务端配置
### frp库上传、解压
下载完成后将该压缩包上传到服务器指定目录,例如/frp。
使用命令进行解压缩,会生成一个新的文件夹。进行该文件夹
```bash
tar zxvf frp_0.39.1_linux_amd64.tar.gz
cd frp_0.39.1_linux_amd64
```

![image.png](http://www.zlinks.top/upload/2022/02/image-09c37afec4f1489ebf923b13e445659a.png)

其中相关frpc的文件都是客户端配置,可以删除。
### 配置文件
接下来需要编辑frps.ini文件
```bash
vim frps.ini
```
将配置文件修改问一下内容

```ini
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,连接frp服务时验证使用,自定义
authentication_method = token
token = 123456
# 这个token之后在客户端会用到,注意这行注释不要跟token放到一块

# frp管理后台端口,自定义,登录管理后台时使用
dashboard_port = 8000
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3
```
到这frps.ini文件就配置好了
### 设置frp服务
设置frp后台运行及开机启动
```bash
sudo mkdir -p /etc/frp
sudo cp frps.ini /etc/frp
sudo cp frps /usr/bin
sudo cp systemd/frps.service /usr/lib/systemd/system/
sudo systemctl enable frps
sudo systemctl start frps
```
以上命令执行成功,没有报错就说明frp已经配置完成,并且启动了
需要主要的是,执行完以上命令后,如果要修改frps.ini文件内容,需要去/etc/frp/frps.ini路径进行修改,修改原文件是不生效的,修改完需要重启frp服务
```bash
systemctl restart frps
```

### 防火墙开放端口
启动防火墙
```bash
systemctl start firewalld
```
开放对应的端口
```bash
sudo firewall-cmd --permanent --add-port=7000/tcp
sudo firewall-cmd --permanent --add-port=8000/tcp
sudo firewall-cmd --reload
```
如果使用的阿里云的云服务器,还需要到控制台中添加安全组,端口开通后,可以使用telnet测试下端口是否开放。
### 验证服务
使用ip:8000,设置的用户密码登录管理后台,出现以下界面就是服务端部署成功。
![image.png](http://www.zlinks.top/upload/2022/02/image-3486652ffe58497c908ee2af62f2406a.png)

## 客户端配置
客户端配置相对来讲就比较简单了,这里使用Windows系统
### 客户端frp库下载
去[frp官网](https://github.com/fatedier/frp/releases)下载对应版本的frp库,如图:
![image.png](http://www.zlinks.top/upload/2022/02/image-c48d0b761e874996b3fd14bb645c08bc.png)
下载之后进行解压,进入解压后的文件夹,有关**frpc**的文件就是客户端需要用到的
![image.png](http://www.zlinks.top/upload/2022/02/image-83941427f30b475da8235c034023cdfc.png)
### 配置文件
将一下内容拷贝到frpc.ini配置文件中
```ini
[common]
server_addr = 公网服务器IP  #frp服务端所在的机器IP
server_port = 7000   #服务端设置的监听端口,需要跟服务端的配置保持一致
authentication_method = token
token = 123456      # 服务端设置的token,需要保持一致

[rdp]
type = tcp    #通讯协议,远程用就是tcp,不用做更改
local_ip = 127.0.0.1       
local_port = 3389   #远程客户机的本机端口,可自定义
remote_port = 8088   #服务器转发使用端口,需要在服务端开放该端口
```
### 开放服务器端口
```bash
sudo firewall-cmd --permanent --add-port=8088/tcp
sudo firewall-cmd --reload
```
如果是阿里云服务器,还需要再阿里云控制台中添加安全组,开放该端口。
### 客户端验证
使用cmd,进入frp库,使用一下命令
```dos
frpc -c frpc.ini
```
如果显示一下内容,则表示客户端部署成功
![image.png](http://www.zlinks.top/upload/2022/02/image-2466d97c4dee41e89f607012a74b3b14.png)
或者可以登录管理后台查看,有这行数据就表示成功。
![image.png](http://www.zlinks.top/upload/2022/02/image-6841f9f6107f401b95f81e63a42eadce.png)
### 设置后台运行及自启动
使用cmd运行后,在前台会有运行框,而且每次开机后需要手动进行启动,这里就需要设置后台运行和开机自启。
创建start.txt,将一下内容复制到里面
```bat
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
:home
frpc -c frpc.ini
goto home
```
创建后将文件格式改为start.bat,运行后会弹出cmd运行框,过1s会自动隐藏,打开任务管理器可以找到该任务。

![image.png](http://www.zlinks.top/upload/2022/02/image-7430d8eb27734f5a9163d694721fdde0.png)

最后就是设置开机自启动,将该bat文件创建快捷方式,复制到系统启动项,或者添加任务计划程序,如何添加请自行搜索。
到此为止,使用frp进行内网穿透从而实现远程控制电脑介绍完毕!!!
# frp使用
使用就很简单了,首先在需要远程的客户端电脑开启远程访问功能
![image.png](http://www.zlinks.top/upload/2022/02/image-16e3f0bb711540bfb2fe021ec009a9d9.png)
在远程用的电脑,使用mstsc,输入服务器IP:local_port就可以访问。
# 常见问题
这里介绍下我自己部署时遇到的几个问题:
1、服务端和客户端都部署完成后,运行客户端frp,报错token in login doesn't match token from configuration,如图:
![image.png](http://www.zlinks.top/upload/2022/02/image-a4a779b7f3444d5bb4f14bc34fe4442a.png)
这个报错就是客户端frpc.ini中的token配置和客户端不一致,修改一致后就可以了
2、客户端无法启动,报一下错误:
![image.png](http://www.zlinks.top/upload/2022/02/image-12c6ba5005e44baa985baf0633602ff1.png)
报错原因:首先查看客户端配置文件中server_port是否跟服务端保持一致,确认一致后再排查设置的端口是否开放,可以用一下语句:
```bat
telnet 服务器IP 端口号
```
如果连接不了,则说明该端口没有开放,需要在服务端开放端口。
文章作者: zlinks
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZFS的成长之路
工具 服务类
喜欢就支持一下吧