Frp 内网穿透

cc
cc
2022-12-10 / 0 评论 / 285 阅读 / 正在检测是否收录...

背景

由于Ngrok开源版本已停止维护,经过调研后Frp比较合适:

  • 服务端/客户端无需编译
  • 支持多种客户端
  • ...

引用:

// github
https://github.com/fatedier/frp

// doc
https://gofrp.org/docs/

环境

服务端:Centos 7
客户端:Linux、Mac...
Frp: 0.45
其他:supervisord
要求:服务器有公网ip+自有域名

域名解析

可以使用子域名,如: frp.xx.com; 可工作的地址: xx.frp.xx.com
这里需要配置两个域名解析

frp.xx.com    ip
*.frp.xx.com  ip (泛域名解析)

安装 - 服务端

下载

目前在最新版本为0.45,下载对应的Linux版本

frp_0.45.0_linux_amd64.tar.gz

zip包解压后有对应的服务端、客户端及对应的配置

.
├── LICENSE
├── frpc            # 客户端
├── frpc.ini        # 客户端简化配置
├── frpc_full.ini   # 客户端完整配置
├── frps            # 服务端
├── frps.ini        # 服务端简化配置
└── frps_full.ini   # 服务完整化配置

0 directories, 7 files

准备

这里我使用的目录:

/usr/local/frp

将frpc、frpc.ini拷贝到此目录中

  • 配置文件

frps.ini

bind_port = 9443  # 客户端链接的端口

# if you want to support virtual host, you must set the http port for listening (optional)
# Note: http port and https port can be same with bind_port
# vhost_https_port = 443
vhost_http_port = 9443 

subdomain_host = frp.xx.com # 配置子域名

# authentication_method specifies what authentication method to use authenticate frpc with frps.
# If "token" is specified - token will be read into login message.
# If "oidc" is specified - OIDC (Open ID Connect) token will be issued using OIDC settings. By default, this value is "token".
authentication_method = token # 这里选择token进行验证,可参考文档进行调整

# auth token
token = changeit # 这里是配置的token,客户端需要保持一致

# enable_prometheus will export prometheus metrics on {dashboard_addr}:{dashboard_port} in /metrics api.
enable_prometheus = true

启动

防止经进程挂掉,这里使用supervisor对frps进行管理

supervisor 配置


[program:frserver]
directory=/usr/local/frp
command=/usr/local/frp/frps -c /usr/local/frp/frps.ini
autostart=true
autorestart=true
startsecs=10
user=root
stderr_logfile=/usr/local/frp/log/frp_stderr.log
stdout_logfile=/usr/local/frp/log/frp_stdout.log
redirect_stderr=true
  • 注意,supervisor使用的目录要预先创建好,比如这里的log目录

配置好后,执行

supervisord reload
supervisord status

# 结果
[root@cc etc]# supervisorctl status
frserver                         RUNNING   pid 12464, uptime 1 days, 22:47:02

安装 - 客户端

以Mac环境进行演示

下载

与服务端版本一致,下载对应的Mac版本

frp_0.45.0_darwin_amd64.tar.gz

zip包解压后有对应的服务端、客户端及对应的配置

.
├── LICENSE
├── frpc            # 客户端
├── frpc.ini        # 客户端简化配置
├── frpc_full.ini   # 客户端完整配置
├── frps            # 服务端
├── frps.ini        # 服务端简化配置
└── frps_full.ini   # 服务完整化配置

0 directories, 7 files

准备

进入解压后的目录,修改客户端配置

  • 配置文件

frpc.ini

[common]
authentication_method = token # 与服务端一致
server_port = 9443            # 与服务端一致
server_addr = frp.xx.com      # 与服务端 subdomain_host 配置一致
token = changeit              # 与服务端一致
[cc]                          # 子域名, 这里可自定义
local_port = 80               # 需要转发的本地端口,可自定义
subdomain = cc                # 子域名, 这里可自定义
type = http

启动

执行

./frpc -c frpc.ini

2022/12/10 13:25:23 [I] [service.go:349] [4773c37ef35b5761] login to server success, get run id [4773c37ef35b5761], server udp port [0]
2022/12/10 13:25:23 [I] [proxy_manager.go:144] [4773c37ef35b5761] proxy added: [cc]
2022/12/10 13:25:23 [I] [control.go:181] [4773c37ef35b5761] [cc] start proxy success

结束

此时可通过客户端配置域名进行访问:

 http://cc.frp.xx.com:9443
0

评论 (0)

取消