使用frp进行内网穿透(内网代理)

使用frp进行内网穿透(内网代理)

frp 是什么?

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

如何使用

一、准备工作

要使用frp进行内网穿透,需要准备以下几个条件:

  • 一台有公网IP的服务器,作为frp的服务端,负责转发内网设备的请求和响应。本文以Linux系统为例,其他系统请参考官方文档。
  • 一个或多个需要进行内网穿透的设备,作为frp的客户端,可以是Windows、Linux、macOS、ARM等平台。
  • frp的安装包,可以从官方网站下载对应平台的版本。
  • 补充资料中提供的相关链接和配置文件,用于参考和修改。

二、服务端配置和启动

  1. 在公网服务器上下载并解压frp的安装包,进入解压后的文件夹,只需要关注frps相关文件。
  2. 编辑frps.ini文件,设置服务端的基本参数,如下:
[common]
# 服务器端端口
bind_port = 10000
kcp_bind_port = 10000
bind_udp_port = 10000
# 服务器看板的访问端口
dashboard_port = 65535
# 监听 HTTP 请求端口为
vhost_http_port = 10080
# 监听 HTTPS 请求端口为
# vhost_https_port = 10443
# 最大连接数
max_pool_count = 30
# 开启toke认证
authentication_method = token
# 开启tcp穿透端口范围
allow_ports = 3389,10000-65535
# 客户端连接凭证
token = 123456
# 服务器看板账户
dashboard_user = lldwb
dashboard_pwd = @LLdwb15979809462
# 是否启用 TLS 模式
dashboard_tls_mode = true
dashboard_tls_cert_file = /www/server/panel/vhost/ssl/lldwb.top/fullchain.pem
dashboard_tls_key_file = /www/server/panel/vhost/ssl/lldwb.top/privkey.pem
  1. 启动frps服务端,执行命令:
./frps -c frps.ini
  1. 放行TCPUDP协议的端口

  2. 可以通过访问服务器IP:仪表盘页面的端口,输入用户名和密码登录后查看frp服务端的运行状态。

三、客户端配置和启动

  1. 在需要进行内网穿透的设备上下载并解压frp的安装包,进入解压后的文件夹,只需要关注frpc相关文件。
  2. 编辑frpc.ini文件,设置客户端的基本参数和需要穿透的服务,如下:
[common]
# frp服务端的IP地址
server_addr = 公网服务器IP
# frp服务端监听的端口
server_port = 7000
# 开启toke认证
authentication_method = token
# frp服务端和客户端之间的验证密钥,必须保持一致
token = 123456

# 代理名称
[mysql]
# 代理协议
type = tcp
# 代理本地端口
local_port = 3306
# 代理远程端口(frps开放的端口 10000-65535 )
remote_port = 33366
# 加密
use_encryption = false
# 压缩
use_compression = true
# 如果是http或者https代理协议,就需要添加
# 需要穿透的域名,如果没有域名可以使用subdomain参数设置子域名
custom_domains = example.com
  1. 启动frpc客户端,执行命令:
./frpc -c frpc.ini

四、补充说明

配置的补充说明在官方文档查看

启动相关

启动frp,(/root/frps)安装frp位置

cd /root/frps
screen -S frps ./frps -c frps.ini

同时按住Ctrl+A+D挂起screen
screen -r
执行 screen -r 命令来恢复会话
使用 Ctrl+C 退出

当80和443端口被Nginx占用的解决方法(只限http内网穿透)

宝塔的证书夹:
/www/server/panel/vhost/ssl/lldwb.top
只有bt.lldwb.top tom.lldwb.top可以使用80访问
其他http只能用10000访问,如果需要添加新的域名在nginx配置文件中添加

Nginx配置文件

server {
  listen 80;
  listen 443 ssl;
  ssl_certificate /www/server/panel/vhost/ssl/lldwb.top/fullchain.pem;     #在域名服务商申请的证书,不同的域名证书不一样 
  ssl_certificate_key /www/server/panel/vhost/ssl/lldwb.top/privkey.pem; #在域名服务商申请的证书,不同的域名证书不一样

  server_name bt.lldwb.top tom.lldwb.top; #如有多个域名,用空格隔开
  client_max_body_size 10M;
  location / {
      proxy_pass http://127.0.0.1:10080;     #访问xxx.leachchen.com时默认是80端口,此时将请求转发到81端口上,frp服务端和客户端保持了连接,此时会访问到客户端配置了相同域名的端口上
      proxy_redirect http://$host/ http://$http_host/;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;

  }

}

五、参考资料