centos7.6上FRP搭建

FRP搭建

一、什么是FRP

FRP是一个内网穿透工具
FRP让本地局域网的机器可以暴露到公网,简单的说就是在世界的任何地方,你可以访问家里开着的那台电脑!
FRP 支持 TCP、UDP、HTTP、HTTPS, 就是说不仅仅限于本地web服务器可以暴露,整台机器都可以暴露,windows的远程控制,mac和linux的ssh都可以被暴露。

二、frp穿透的用途

1. 在办公室访问家里的电脑,反之亦然
2. 自己电脑上的项目,方便发给客户朋友演示。比如我做了个小网站,发给朋友看看未上线版本,发个url给他就好了。
3. 调试一些需要远程调用的程序,远程调用比如微信的API 回调接口。 因为我有了外网地址就不需要部署在公网服务器,直接进行本地调试,听起来都棒。

三、server的FRP搭建

3.1、服务端(云服务器上)

# 下载FRP
[root@server app]# wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz

# 安装
[root@server app]# tar -zxvf frp_0.33.0_linux_amd64.tar.gz 
[root@server app]# mv frp_0.33.0_linux_amd64 frp
[root@server app]# cd frp

# 服务端(云服务器上)的配置文件是frps.ini,默认绑定80端口,如果购置了云服务器,注意打开80端口。
[root@server frp]# cat frps.ini 
[common]
bind_port = 7000  起云服务器上的FRP使用的端口,可自定义,但是得放行

#logs
log_file = ./frps.log
log_level = info
log_max_days = 3

# auth token
token = 12345

max_pool_count = 5
max_ports_per_client = 0
authentication_timeout = 900
tcp_mux = true

3.2、启动FRP

[root@server frp]# ./frps -c ./frps.ini 

四、client的FRP搭建

3.1、客户端(自己的电脑)

# 下载FRP
[root@client app]# wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz

# 安装
[root@client app]# tar -zxvf frp_0.33.0_linux_amd64.tar.gz 
[root@client app]# mv frp_0.33.0_linux_amd64 frp
[root@server app]# cd frp

#客户端的配置文件是(自己破电脑) frpc.ini
[root@slave1 frp]# cat frpc.ini 
[common]
server_addr = 49.232.223.127
server_port = 7000
token = 12345
log_file = ./frpc.log           
log_level = info           
log_max_days = 3
[ssh]
type = tcp
local_ip = 192.168.1.112
local_port = 22
remote_port = 6000
[web]
type = tcp
local_ip = 192.168.1.112 
local_port = 88
remote_port = 8079

common 为通用配置

  • server_addr 为公网服务器 IP 地址(云服务器IP)
  • server_port 为公网服务器配置的 8080 端口

ssh 用于终端命令行访问

  • type 连接类型,默认为 tcp
  • local_ip 本地 IP #破电脑的ip
  • local_port 用于 ssh 的端口号,默认 22
  • remote_port 映射的服务端端口,访问该端口时默认转发到客户端的 22 端口

3.2、启动客户端的FRP

[root@slave1 frp]# ./frpc -c ./frpc.ini 
2020/11/19 23:33:58 [I] [service.go:282] [8e34875a9c860441] login to server success, get run id [8e34875a9c860441], server udp port [0]
2020/11/19 23:33:58 [I] [proxy_manager.go:144] [8e34875a9c860441] proxy added: [ssh]
2020/11/19 23:33:59 [I] [control.go:179] [8e34875a9c860441] [ssh] start proxy success

3.3、测试

[root@slave1 frp]# curl http://49.232.223.127:8079/

五、参数介绍

文件介绍:

frpc                    # 客户端二进制文件
frpc_full.ini           # 客户端配置文件完整示例
frpc.ini                # 客户端配置文件
frps                    # 服务端二进制文件
frps_full.ini           # 服务端配置文件完整示例
frps.in1                # 服务端配置文件

5.1、sever端的文件详解:

[common]                        # 通用配置段
bind_addr = 0.0.0.0             # 绑定的IP地址,支持IPv6,不指定默认0.0.0.0;
bind_port = 7000                # 服务端口;
bind_udp_port = 7001            # 是否使用udp端口,不使用删除或注释本行;
kcp_bind_port = 7000            # 是否使用kcp协议,不使用删除或注释本行;
# proxy_bind_addr = 127.0.0.1   # 代理监听地址,默认和bind_addr相同;

# 虚拟主机
vhost_http_port = 80            # 是否启用虚拟主机,端口可以和bind_port相同;
vhost_https_port = 443
vhost_http_timeout = 60         # 后端虚拟主机响应超时时间,默认为60s;

# 开启frps仪表盘可以检查frp的状态和代理的统计信息。
dashboard_addr = 0.0.0.0        # frps仪表盘绑定的地址;
dashboard_port = 7500           # frps仪表盘绑定的端口;
dashboard_user = admin          # 访问frps仪表盘的用户;     
dashboard_pwd = admin           # 密码;
assets_dir = ./static           # 仪表盘页面文件目录,只适用于调试;

# 日志配置文件
log_file = ./frps.log           # 日志文件,不指定日志信息默认输出到控制台;
log_level = info                # 日志等级,可用等级“trace, debug, info, warn, error”;
log_max_days = 3                # 日志保存最大保存时间;

token = 12345678                # 客户端与服务端通信的身份验证令牌

heartbeat_timeout = 90          # 心跳检测超时时间,不建议修改默认配置,默认值为90;?

# 指定允许客户端使用的端口范围,未指定则没有限制;
allow_ports = 2000-3000,3001,3003,4000-50000

max_pool_count = 5              # 每个客户端连接服务端的最大连接数;
max_ports_per_client = 0        # 每个客户端最大可以使用的端口,0表示无限制

authentication_timeout = 900    # 客户端连接超时时间(秒),默认为900s;

subdomain_host = frps.com       # 自定义子域名,需要在dns中将域名解析为泛域名;

tcp_mux = true                  # 是否使用tcp复用,默认为true;
                                # frp只对同意客户端的连接进行复用;

5.2、client端文件详情:

[common]                        # 通用配置段

server_addr = 0.0.0.0           # server的IP地址;支持IPv6
server_port = 7000              # server的端口;

# 如果要通过http或socks5代理连接frps,可以在此处或在全局环境变量中设置代理,只支持tcp协议;
# http_proxy = http://user:passwd@192.168.1.128:8080
# http_proxy = socks5://user:passwd@192.168.1.128:1080

# 客户端日志
log_file = ./frpc.log       # 指定日志文件;
log_level = info            # 指定日志等级;
log_max_days = 3


token = 12345678            # 客户端与服务端通信的身份验证令牌

# 设置管理地址,用于通过http api控制frpc的动作,如重新加载;
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_passwd = admin

pool_count = 5              # 初始连接池的数量,默认为0;

tcp_mux = true              # 是否启用tcp复用,默认为true;

user = your_name            # frpc的用户名,用于区别不用frpc的代理;

login_fail_exit = true      # 首次登录失败时退出程序,否则连续重新登录到frps;

protocol = tcp              # 用于连接服务器的协议,支持tcp、kcp、websocket;

dns_server = 8.8.8.8        # 为frp 客户端指定一个单独的DNS服务器;

# start = ssh,dns           # 要启用的代理的名字,默认为空表示所有代理;

# 心跳检查
# heartbeat_interval = 30   # 失败重试次数
# heartbeat_timeout = 90    # 超时时间

六、将frps注册为系统服务

[root@server ~]# vim /usr/lib/systemd/system/frps.service
[Unit]
Description=frp server
After=network.target

[Service]
Type=simple

ExecStart=/usr/local/frp_server/frps -c /usr/local/frp_server/frps.ini
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID

[Install]
WantedBy=multi-user.target
[root@server ~]# systemctl enable frps
[root@server ~]# systemctl start  frps.service
[root@server ~]# systemctl status frps
posted @ 2020-11-20 21:36  taotaozh  阅读(555)  评论(0编辑  收藏  举报