前一段时间买了一个刷了armbian系统的电视盒子,但是一直没办法在外访问搭建好的项目,于是使用frp搭建了内网穿透服务器。
要求:需要有一台有外网ip的服务器
下载frp
我的是linux系统,使用uname -a
命令查看系统架构。
aarch64或arm64:https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_linux_arm64.tar.gz
amd64:https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_linux_amd64.tar.gz
其他版本下载地址:https://github.com/fatedier/frp/releases
服务器端配置
上传下载的压缩包
解压
1.解压安装包
tar -zxf frp_0.45.0_linux_amd64.tar.gz
2. 进入解压后的文件夹
cd frp_0.45.0_linux_amd64
配置
将frps.ini修改为以下内容
代码语言:javascript复制vi frps.ini
代码语言:javascript复制[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的,客户端连接使用
token = 1234
# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true
# 通过该端口访问客户端
vhost_http_port = 9200
# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3
启动
1.后台启动
代码语言:javascript复制./frps -c frps.ini &
2.防火墙放开7000,vhost_http_port的端口
例如,查看9200端口是否已放行,其他端口同理
firewall-cmd --query-port=9200/tcp --zone=public
显示no说明未放行
放行:firewall-cmd --zone=public --add-port=9200/tcp --permanent
显示success即为成功
3.如果是云服务器厂商也有端口限制,则需要登录云服务器厂商控制台,放行端口
测试
ip:7500可访问可视化界面,如能成功访问即可
客户端(本地机器)配置
解压
同服务端一致
配置
客户端是frpc.ini,注意服务端是frps.ini,要区分开
代码语言:javascript复制# 客户端配置
[common]
server_addr = 服务器公网ip
# 与frps.ini的bind_port一致
server_port = 7000
# 与frps.ini的token一致
token = 1234
# 配置ssh服务
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
# 配置http服务,如果没有可以不写下面的
[web]
type = http
# 本地项目服务
local_port = 8801
# 服务器公网ip或自定义域名
custom_domains = www.xxx.xx
# 服务器vhost_http_port端口,随后访问custom_domains:9200即可转发至本机器local_port服务
remote_port = 9200
启动
代码语言:javascript复制./frpc -c frpc.ini &
测试
访问custom_domains:9200测试是否正常
将frp安装为服务(可选操作)
服务端
创建frps.service文件
vim /etc/systemd/system/frps.service
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为刚才frp放置的地址
ExecStart = 安装路径/frps -c 安装路径/frps.ini
[Install]
WantedBy = multi-user.target
启动frps服务
代码语言:javascript复制# 启动frp
systemctl start frps
# 配置frps开机自启
systemctl enable frps
客户端
创建frpc.service文件
sudo vim /etc/systemd/system/frpc.service
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frpc的命令,需修改为刚才frp放置的地址
ExecStart = 安装路径/frpc -c 安装路径frpc.ini
[Install]
WantedBy = multi-user.target
启动frpc服务
代码语言:javascript复制# 启动frpc
systemctl start frpc
# 配置frpc开机自启
systemctl enable frpc
其他命令
代码语言:javascript复制# 停止frps
systemctl stop frps
# 重启frps
systemctl restart frps
# 查看frps状态
systemctl status frps
# 停止frpc
systemctl stop frpc
# 重启frpc
systemctl restart frpc
# 查看frpc状态
systemctl status frpc
安装时遇到的一些问题
使用自定义域名
- 在域名服务商配置A解析规则,记录值填写服务器ip
- 修改客户端配置文件frpc.ini,custom_domains=域名
-bash: ./frpc: cannot execute binary file: Exec format error
安装包下载错误,先查询系统架构,然后下载对应的安装包,具体请查看第一章节
do http proxy request [host:www.xxx.xxx] error: no root found: www.xxx.xxx
客户端配置域名访问和访问的域名不匹配,请访问custom_domains域名或修改custom_domains域名
The page you requested was not found
同do http proxy request [host:www.xxx.xxx] error: no root found: www.xxx.xxx