购买完vps之后,我决定使用vps对我没有外网ip的本地服务器进行内网穿透
首先我们明确客户端和服务端,vps充当服务端,即安装frps端,当然也可以是任何有公网ip的服务器,而本地则充当客户端,安装frpc端
frps安装与配置
安装
首选需要了解vps的系统架构,通过uname命令查看
1
2
3
| uname -a # all
Linux cetacean 4.18.0-80.7.1.el8_0.x86_64 #1 SMP Sat Aug 3 15:14:00 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
|
从结果可知架构为x86_64,因此选择amd64版本的下载包,具体选择因人而异,然后通过以下链接选择对应版本右键复制下载链接
frp版本下载

接着来到vps命令行中
1
| wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz # wget 版本链接
|
没有wget的可通过yum下载
之后解压安装包,解压后在同路径会出现一个同名文件夹,并将其重命名为frp,进入frp文件夹中
1
2
3
4
5
6
| tar -zxvf frp_0.38.0_linux_amd64.tar.gz # 对应包名
rm -y frp_0.38.0_linux_amd64.tar.gz # 删除安装包
mv frp_0.38.0_linux_amd64 frp # 重命名
cd frp
ls # 查看目录
$ frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE systemd
|
由于我们只使用frps端,所以可以把没必要的frpc部分删除掉
配置
然后就是frps的相关配置任务了,vim编辑frps.ini文件
此处给出常用配置信息,详细使用说明可以到官方文档查看frp docs
1
2
3
4
5
6
7
8
9
10
11
12
| vim frps.ini
# 插入如下内容
[common]
bind_port = 7070
dashboard_port = 7778
dashboard_user = xxxx
dashboard_pwd = xxxxxxxxxx
token = xxxxxxxxxx
subdomain_host = example.com
vhost_http_port = 8080
vhost_https_port = 8443
|
配置详解
option | description |
---|
bind_port | frp连接端口,与frpc配置应一致 |
dashboard_port | 可视化面板端口,通过服务端访问 |
dashboard_user | 面板登录账号 |
dashboard_pwd | 面板登录密码 |
token | 设置token,保证通讯安全性 |
subdomain_host | 主域名,随后将在客户端配置相应二级域名部分 |
vhost_http_port | http穿透端口 |
vhost_https_port | https穿透端口 |
配置完毕,通过screen运行frps端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| yum install -y screen # 安装screen
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm # 若出现找不到screen包,可先安装配置yum源
screen -S frps # 创建名为frps的session任务
./frps -c frps.ini
# 出现如下结果说明运行成功,可见运行在7000端口
[root.go:200] frps uses config file: frps.ini
[service.go:192] frps tcp listen on 0.0.0.0:7000
[root.go:209] frps started successfully
# ctrl + a + d 可退出当前screen窗口
# 后续如需重新运行frps
screen -r frps
# 若想终止screen,直接查看pid并kill杀死任务
screen -ls
kill [pid]
|
frpc安装与配置
安装
frpc的安装与frps一样,参照上面在本地服务器下载解压即可
配置
安装完毕之后,对frpc进行配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| vim frpc.ini
# 这里给出ssh和http(s)的示例
[common]
server_addr = x.x.x.x # 服务端ip
server_port = 7070 # 对应服务端连接端口
token = xxxxxxxxxx
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = xxxx
[web]
type = http
subdomain = xxx
local_port = xxxx
|
配置详解
option | description |
---|
server_addr | 服务端ip |
server_port | 对应服务端连接端口 |
token | 对应服务端token |
[name] | 创建一个名为name的frp连接 |
type | 连接类型,支持tcp|udp|http|https|stcp|sudp|xtcp|tcpmux |
local_ip | 本地连接ip |
local_port | 本地连接端口 |
remote_port | frps转发端口,http(s)的穿透端口已在frps端配置,此处不适用 |
subdomain | http(s)配置二级域名部分 |
注意
域名解析需在所属域名服务商那里解析为服务端ip,记录类型选择 ‘A’
接着运行frpc端,方法与frps端一样,这里不再赘述
1
2
| screen -S frpc
./frpc -c frpc.ini
|
测试
就此frpc和frps端均已运行,接下来测试一下是否连接成功,浏览器输入配置的域名,如无法正常访问,留意几点:
1.两部机器的防火墙是否开放了对应端口,注意如果是类似阿里云的服务器商还需在其控制台开放端口
2.映射端口是否正确,具体可看运行frpc(s)的时候命令行输出了什么内容