FRP(Fast Reverse Proxy)是一个高性能的反向代理应用,由 Go 语言编写。
可以让你在内网部署的服务能够在公网能访问,或者你想在公网上直接连接你的内网服务器使用。它的特点就一句话:简单易用!
要实现内网穿透,首先你得有一台公网的服务器,或者云服务器。
FRP 由两部分组成,frps和frpc,下面分别进行这两部分的配置。
1.frps(FRP Server)
这是服务端程序,需要在具有公网 IP 的服务器上运行。它负责监听来自客户端(frpc)的连接,并将请求转发到指定的内网服务上。
(1)服务端配置frps.ini ,内容如下:
[common] # common 是这个节的名称
bind_port = 7099 # FRP 服务绑定的端口号,表示FRP服务将在服务器的7099端口上监听进来的连接
token = ****** # token 是用于认证的密钥,客户端在连接到服务器时需要提供相同的 token 值以验证身份
dashboard_port = 7500 # FRP服务的Dashboard绑定的端口号,你可以通过http://服务端公网ip:7500来监控和管理FRP服务
dashboard_user = ****** # 访问Dashboard时的用户名
dashboard_pwd = ****** # 访问Dashboard时的密码
(2)启动服务端:
chmod +x frps
nohup ./frps -c frps.ini &
2.frpc(FRP Client)
这是客户端程序,需要在需要被穿透的内网机器上运行。它负责与服务端(frps)建立连接,并将内网服务的端口映射到公网。
(1)客户端配置frpc.ini ,内容如下:
[common]
server_addr = ****** # 服务端的公网ip
server_port = 7099 # 对应服务端的bind_port
authentication_method = token
token = ****** # 对应服务端的token
[node1] # node1是这个节的名称,随便设置
type = tcp # 代理类型为 tcp
local_ip = 127.0.0.1 # 内网服务的IP地址。这里设置为127.0.0.1表示该代理将转发到本机(localhost)上的服务
local_port = **** # 你内网服务的端口号。表示FRP客户端将监听本机的该端口并将流量转发到该端口上的服务。
remote_port = **** # 在外网服务器上开放的端口号。表示FRP服务端将在公网IP上的该端口接收来自外部的连接,并将这些连接转发到客户端的 local_ip 和 local_port 指定的服务上。
# 下面是额外定义了一个ssh配置,端口一般默认为22,这样你就能在任何地方用ssh连接这台内网机器了
# ssh -p remote_port username@server_addr
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = ****
(2)启动客户端:
chmod +x frpc
nohup ./frpc -c frpc.ini &
如何显示连接拒绝,在你的服务端开放一下端口
firewall-cmd --permanent --zone=public --add-port=<your_bind_port >/tcp
systemctl reload firewalld