1213 字
6 分钟
手把手教你搭建Frp穿透:内网服务轻松暴露!
2023-12-01

首先需要一个域名
一台有公网ip的服务器
和前面介绍的frp+openwrt基本上在服务端配置差不多的
https://misslin.cf/127.html

去github下载frp
https://github.com/fatedier/frp/releases

解压后得到
frps
frps.ini
frpc
frpc.ini

frps是服务端 frpc是客户端
域名例如frp.misslin.cf解析到有公网ip的服务器 这里举例公网ip:223.223.223.223

服务端配置#

ssh登陆有公网的ip服务器
root下新建目录frp后,将frps,frps.ini上传
配置frps.ini (端口自由分配没有被占用的)

[common]
bind_port = 5443 (frps和frpc通讯的端口)
vhost_http_port = 808 (假设服务器的80端口需要用于web服务所以将http改成808)
vhost_https_port = 909 (假设服务器的443端口需要用于web服务所以将http改成900)
dashboard_port = 3333 (fprs的webui管理查看frps工作状态的端口)
dashboard_user = admin (fprs的webui登陆帐号)
dashboard_pwd = admin (fprs的webui登陆密码)
token = 123456 (frps和frpc通讯密码)

配置完成后 服务器上给frp目录晨的frps和frps.ini设置777权限
服务器上运行frps

cd /root/frp/
./frps -c frps.ini

frps在服务器上已启动

可以用解析的域名
frp.misslin.cf:3333访问frps服务端的webui
也可以直接用服务端的ip
223.223.223.223:3333访问frps服务端的webui

客户端配置#

在需要穿透的内网主机

ssh登陆内网的ip
root下新建目录frp后,将frpc,frpc.ini上传
配置frpc.ini (部份端口需要和frps一置)

[common]
server_addr = 223.223.223.223 (frps服务端的公网ip,也可以直接填写前面解析的域名frp.misslin.cf)
server_port = 5443 (frps和frpc通讯的端口)
tls_enable = true
token = 123456 (frps和frpc通讯密码)
[casaos] (可以自己填写内网主机运行的服务)
type = http (http服务)
local_ip = 192.168.1.123 (运行服务的内网主机ip)
local_port = 8123 (运行服务的内网主机端口)
remote_port = 808 (这是对应服务端里配置web的http端口)
custom_domains = frpcasaos.misslin.cf (解析一个新的域名到有公网的服务器ip这个域名分配给casaos服务器)
[chatgpt]
type = http
local_ip = 192.168.5.123 (运行服务的内网主机ip)
local_port = 7999 (运行服务的内网主机端口)
remote_port = 808 (这是对应服务端里配置web的http端口)
custom_domains = frpgpt.misslin.cf (解析一个新的域名到有公网的服务器ip这个域名分配给chatgpt服务器)
可以继续填加内网需要穿透的服务参考上面

配置完成后给frp目录晨的frpc和frpc.ini设置777权限
内网主机上运行frpc

cd /root/frp/
./frpc -c frpc.ini

内网frpc启动完成后
可通过域名
frpcasaos.misslin.cf:808访问casaos
frpgpt.misslin.cf:808访问chatgpt

到此完成!

在有公网ip的服务器安装BT
新建网站
域名
frpcasaos.misslin.cf 添加反代 127.0.0.1:808
新建网站
域名
frpgpt.misslin.cf 添加反代 127.0.0.1:808

这就可以直接用域名访问不需要加端口号了

frps加入服务列表并设置自启动

#重新加载服务列表
systemctl daemon-reload
#将frps加入开机自启动
systemctl enable frps.service
#启动服务
systemctl start frps.service
#以下是其他常用命令
#关闭服务
systemctl stop frps.service
#重启服务
systemctl restart frps.service
#显示服务的状态
systemctl status frps.service
#禁用服务开机启动
systemctl disable frps.service
#查看服务是否开机启动
systemctl is-enabled frps.service
#查看已经启动的服务列表
systemctl list-unit-files|grep enable
#查看启动失败的服务列表
systemctl --failed配置和自启动设置

frpc加入服务列表并设置自启动

#重新加载服务列表
systemctl daemon-reload
#将frpc加入开机自启动
systemctl enable frpc.service
#启动服务
systemctl start frpc.service
#以下是其他常用命令
#关闭服务
systemctl stop frpc.service
#重启服务
systemctl restart frpc.service
#显示服务的状态
systemctl status frpc.service
#禁用服务开机启动
systemctl disable frpc.service
#查看服务是否开机启动
systemctl is-enabled frpc.service
#查看已经启动的服务列表
systemctl list-unit-files|grep enable
#查看启动失败的服务列表
systemctl --failed

常见报错原因#

错误1(frps):Create vhost http listener error, listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
解决方法:端口被其他应用程序占用,关闭其他应用程序或改用其他端口。

错误2(frpc):[rdp] start error: port already used
解决方法:远程端口已被使用,改用其他端口。

错误3(frpc):[web01] start error: proxy name [web01] is already in use
解决方法:代理名称[web01]已被使用,检查并更换一个代理名称。

错误4(frpc):[web01] start error: router config conflict
解决方法:[web01]指定的域名(custom_domains)已被使用,检查并更换其他域名。

错误5(frpc):work connection closed, EOF
解决方法:连不上服务器端,检查服务器端运行是否正常,服务器端恢复后客户端会自动恢复连接。

手把手教你搭建Frp穿透:内网服务轻松暴露!
https://blog.wlens.top/posts/手挫frp穿透/
作者
Lao Wang
发布于
2023-12-01
许可协议
CC BY-NC-SA 4.0