frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

必须材料:需要被穿透的内网机器,有公网IP的服务器一台,操作系统均为Centos7

服务端配置

下载软件压缩包

1
wget https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.gz

解压压缩包

1
tar -xvf frp_0.48.0_linux_amd64.tar.gz

将FRP核心文件移至/usr/local

1
2
mkdir /usr/local/frp
mv frp_0.48.0_linux_amd64/* /usr/local/frp/

FRP核心文件说明

xxxxxxxxxx systemctl enable glances.service  # 开机自动启动glances​systemctl start glances.service  # 启动glances​systemctl status glances.service  # 查看glances状态​systemctl restart glances.service  # 重启glances​bash

注意:配置服务端时,可将frpc.ini和frpc删除,配置客户端时,可将frps.ini和frps删除。

注意:Frps是指 server,在服务端上配置,Frpc是在客户端配置的。

服务端配置systemd

1
vim /usr/lib/systemd/system/frp.service

写入以下内容,此处配置的为服务端,和客户端配置有所不同,请注意。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini #这里要注意
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit

[Install]
WantedBy=multi-user.target

重载systemd的配置文件

1
systemctl daemon-reload

systemd Frp指令说明

1
2
3
4
5
6
systemctl start frp #启动服务
systemctl stop frp #停止服务
systemctl restart frp #重启服务
systemctl status frp #查看服务状态
systemctl enable frp #服务开启自启动
systemctl disable frp #服务关闭自启动

服务端ini文件配置和使用

frps.ini
1
2
3
4
5
6
7
8
9
10
[common] #必须设置
bind_port = 7000 #表示用于客户端和服务端连接的端口,保持默认
dashboard_port = 7001 #服务端仪表盘的端口,可通过浏览器访问 公网地址:7001 来访问
dashboard_user = admin #仪表盘用户名
dashboard_pwd = 12345 #仪表盘密码
token = 123 #核实身份用,加了更安全

[ssh]
listen_port = 6000
#以上只是最简单的内网穿透服务端配置,配置了ssh

启动frp服务端

1
2
systemctl start frp
systemctl status frp #检查一下

客户端配置

下载软件压缩包

1
wget https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.gz
1
tar -xvf frp_0.48.0_linux_amd64.tar.gz 

将FRP核心文件移动至/usr/local

1
2
mkdir /usr/local/frp
mv frp_0.48.0_linux_amd64/* /usr/local/frp/

配置systemd

1
vim /usr/lib/systemd/system/frp.service

写入以下内容,注意,以下内容和服务端是不一样的,请不要混淆

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini #这里变成了frpc
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit

[Install]
WantedBy=multi-user.target

重载systemd的配置文件

1
systemctl daemon-reload

客户端的配置和使用

frpc.ini
1
2
3
4
5
6
7
8
9
10
[common]
server_addr = 远程frp服务器ip
server_port = 远程frp服务器端口
token = 远程frp服务器token

[ssh]
type = tcp #连接协议
local_ip = 127.0.0.1
local_port = 22 #是本地应用的端口号,按照实际应用工作在本机的端口号填写即可。
remote_port = 6000 #是该条规则在服务端开放的端口号,自己填写并记录即可。

启动frp客户端

1
systemctl start frp