一、FRP简介
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
FRP好处是利用内网或防火墙后的机器(例如家用路由器后的192.168段的IP),对外网环境提供http或https服务。对于http和https服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。利用处于内网或防火墙后的机器,对外网环境提供tcp和udp服务,例如在家里通过ssh或者web访问公司内网环境内的主机或者业务进行办公!!
二、服务端
2.1 下载解压
$ wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz | |
# 下载软件 | |
$ mv frp_0.34.3_linux_amd64.tar.gz /opt | |
$ cd /opt | |
$ tar -zxvf frp_0.34.3_linux_amd64.tar.gz | |
$ cd frp_0.34.3_linux_amd64/ | |
# 解压 |
2.2 配置
服务端配置文件:frps.ini
客户端配置文件:frpc.ini
[common] | |
bind_port = 7000 # 客户端通信端口 | |
vhost_http_port = 54321 # HTTP端口 | |
vhost_https_port = 54322 # HTTPS端口 | |
token = 123456 # 自定义秘钥 |
2.3 启动
$ ./frps -c ./frps.ini # 临时 | |
$ nohup ./frps -c ./frps.ini & # 后台 |
2.4 配置为系统服务
$ vim /usr/lib/systemd/system/frps.service #修改配置(这里没有该文件就添加个) | |
[Unit] | |
Description=fraps service | |
After=network.target syslog.target | |
Wants=network.target | |
[Service] | |
Type=simple | |
#启动服务的命令(此处写你的 frps 的实际安装目录) | |
ExecStart=/opt/frp/frps -c /opt/frp/frps.ini | |
[Install] | |
WantedBy=multi-user.target |
三、客户端
3.1 windows/Linux/Mac
3.1.1 配置
[common] | |
server_addr = 152.136.170.74 # 公网IP | |
server_port = 7000 # 服务器绑定端口 | |
token = 123456 # 与服务端秘钥一致 | |
[web] | |
type = http | |
local_ip = 127.0.0.1 | |
local_port = 80 | |
remote_port = 54321 | |
custom_domains = 152.136.170.74 # 建议使用域名进行区分 | |
[mysql] | |
type = tcp | |
local_ip = 127.0.0.1 | |
local_port = 3306 | |
remote_port = 54328 | |
[ssh] | |
type = tcp | |
local_ip = 127.0.0.1 | |
local_port = 22 | |
remote_port = 54329 |
3.1.2 启动
$ ./frpc -c ./frpc.ini # 临时 | |
$ nohup ./frpc -c ./frpc.ini & # 后台 |
3.1.3 配置为系统服务
$ vim /usr/lib/systemd/system/frpc.service #修改配置(这里没有该文件就添加个) | |
[Unit] | |
Description=fraps service | |
After=network.target syslog.target | |
Wants=network.target | |
[Service] | |
Type=simple | |
#启动服务的命令(此处写你的 frps 的实际安装目录) | |
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.ini | |
[Install] | |
WantedBy=multi-user.target |
客户端启动一个web 服务, 使用http://公网IP:54321 进行访问测试!
客户端启动一个mysql服务, 使用 IP:公网IP Port:54328 进行访问测试!
客户端 使用 IP:公网IP Port :54329 进行访问测试!
确认公网IP 远程端口 已放通!
3.2 Dashboard & AdminUI
# Dashboard (服务端配置) | |
[common] | |
dashboard_port = 7002 | |
dashboard_user = admin | |
dashboard_pwd = admin | |
# AdminUI (客户端配置) | |
[common] | |
admin_addr = 127.0.0.1 # 使用内网真实地址 即可访问测试 | |
admin_port = 7400 | |
admin_user = admin | |
admin_pwd = admin |
四、总结
使用frp工具有以下优势:
- 利用处于内网或防火墙后的机器,对外网环境提供 HTTP 或 HTTPS 服务。
- 对于 HTTP, HTTPS 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个 80 端口。
- 利用处于内网或防火墙后的机器,对外网环境提供 TCP 和 UDP 服务,例如在家里通过 SSH 访问处于公司内网环境内的主机。
具体环境具体利用!!
加油!,隧道篇就到此结束…