当前位置:   article > 正文

【实战经验】使用FRP搭建内网穿透教程_frp内网穿透

frp内网穿透
测试环境为:
ubutubu 22.04

一、特别说明

frp 是一个快速反向代理,通过具有公网IP的节点上部署frp服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,包括:

  • 客户端服务端支持TCP、QUIC、KCP以及Websocket等多种协议。

  • 采用TCP连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。

  • 代理组间的负载均衡。

  • 端口复用,多个服务通过同一个服务端端口暴露。

  • 支持P2P通信,流量不经过服务器中转,充分利用带宽资源。

  • 多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP协议转换,HTTP、SOCK5代理等),便于独立使用frp客户端完成某些工作。

  • 高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。

  • 服务端和客户端UI界面。

二、安装frp

1.准备

一台公网服务器(配置要求不高,带宽大,网络稳定即可),作为服务端,如公网IP:47.23.42.13。

内网客户端(准备穿透出去的服务),如内网IP:192.168.1.11。

2.下载解压安装包

GitHub地址为:GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.,最新版本的客户端和服务端二进制文件在Release页面中。

找到自己合适的版本,下载。

  1. #下载
  2. wget https://github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_linux_amd64.tar.gz
  3. #解压
  4. tar -zxvf frp_0.58.1_linux_amd64.tar.gz
  5. #进入目录
  6. cd frp_0.58.1_linux_amd64

进入文件夹后,可以看到有5个文件,其中frpc为客户端程序,frpc.toml为客户端配置文件。frps为服务端程序,frps.toml为服务端配置文件。

  1. root@ubuntu:~/frp_0.58.1_linux_amd64$ ls
  2. frpc frpc.toml frps frps.toml LICENSE

需要将frpc拷贝至客户端,即内网服务器,或者在客户端直接下载也可以,客户端只需要使用frpcfrpc.toml文件即可。

3.服务端配置

配置文件修改

服务端配置时修改frps.toml文件,官方给出了完整的配置文件说明。

  1. # IPv6的字面地址或主机名必须括起来。
  2. # 在方括号中,如“[::1]:80”、“[ipv6-host]:http”或“[ipv6-host%zone]:80
  3. # 对于单个 "bindAddr" 字段,不需要方括号,例如 `bindAddr = "::"`。
  4. bindAddr = "0.0.0.0"
  5. # 隧道端口,服务端通过此端口与客户端通信
  6. bindPort = 7000
  7. # 用于KCP协议的UDP端口,可以与“bindPort”相同。
  8. # 如果未设置,frps 中的 kcp 将被禁用。
  9. kcpBindPort = 7000
  10. # 每个代理中最大池数量。
  11. transport.maxPoolCount = 5
  12. # 如果你想支持虚拟主机,你必须设置用于监听的http端口(可选)
  13. # 注意:http端口和https端口可以与bindPort相同。
  14. # 由于备案原因,一般不使用80443端口,可以自定义
  15. vhostHTTPPort = 7001
  16. vhostHTTPSPort = 7002
  17. # frps后台
  18. # dashboard is available only if webServer.port is set.
  19. webServer.addr = "127.0.0.1"
  20. webServer.port = 7500
  21. webServer.user = "admin"
  22. webServer.password = "admin"
  23. # console or real logFile path like ./frps.log
  24. log.to = "./frps.log"
  25. # trace, debug, info, warn, error
  26. log.level = "info"
  27. log.maxDays = 3
  28. # disable log colors when log.to is console, default is false
  29. log.disablePrintColor = false
  30. # 服务端和客户端使用token鉴权
  31. auth.method = "token"
  32. # 设置token值
  33. auth.token = "12345678"
  34. # 每个客户端可以使用的最大端口数,默认值为0表示没有限制。
  35. maxPortsPerClient = 0
  36. # 如果服务端主机进行了域名绑定,则填入对应域名,否则填入服务器的公网IP地址
  37. subDomainHost = "47.23.42.13"

其他配置看官网的完整配置文件frp/conf/frps_full_example.toml at dev · fatedier/frp · GitHub

启动服务端
./frps -c frps.toml
配置开机自启动

使用vim编辑器创建并编辑frps.service文件。

$ vim /etc/systemd/system/frps.service

写入内容

Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径以及配置文件存储路径
ExecStart = /path/to/frps -c /path/to/frps.toml
[Install]
WantedBy = multi-user.target
  1. 使用
  2. systemd
  3. 命令,管理
  4. frps
  5. # 启动frp
  6. systemctl start frps
  7. # 停止frp
  8. systemctl stop frps
  9. # 重启frp
  10. systemctl restart frps
  11. # 查看frp状态
  12. systemctl status frps​
  13. 配置开机启动
 

 
systemctl enable frps

4.客户端配置

修改frpc.toml

 

 
# 您的代理名称将更改为 {user}.{proxy}
user = "your_name"
# 服务端IP
serverAddr = "47.23.42.13"
# 服务端端口
serverPort = 7000
# 控制台或真实日志文件路径,如 ./frpc.log
log.to = "./frpc.log"
# trace, debug, info, warn, error
log.level = "info"
log.maxDays = 3
# disable log colors when log.to is console, default is false
log.disablePrintColor = false
# 鉴权方式为token
auth.method = "token"
# 服务端设置的token
auth.token = "12345678"
# 服务端后台
webServer.addr = "127.0.0.1"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"
webServer.pprofEnable = false
# 配置本地服务
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
# 本机需要映射的端口
localPort = 22
# 远程服务器映射的端口为6000
remotePort = 6001
# 映射web服务
[[proxies]]
name = "web01"
type = "http"
localIP = "127.0.0.1"
# 本地web服务端口
localPort = 80

启动客户端

 

 
./frpc -c frpc.toml

注意,服务端需要开启7000、6001、7001、7002等端口。

5.测试连接

这里测试ssh连接

 

 
root@ubuntu:~$ ssh root@47.23.42.13 -p 6001

连接登陆,即可登陆内网IP为192.168.1.12的主机。

6.p2p配置

做p2p配置时,需要公网服务器找到两个通信方的位置,然后使用UDP进行端到端通信。

服务端需要开启UDP端口,在frps.toml中添加一个配置。

 

 
quicBindPort = 7002

客户端1添加如下配置

  1. [[proxies]]
  2. name = "p2p_tcp"
  3. type = "xtcp"
  4. secretKey = "abcdefg"
  5. localIP = "127.0.0.1"
  6. localPort = 22
# 如果不为空,则只有指定用户的访问者可以连接。 # 否则,同一用户的访问者可以连接。'*' 表示允许所有用户。
allowUsers = ["user1", "user2"]

客户端2添加如下配置

 

 
[[visitors]]
name = "p2p_tcp_visitor"
type = "xtcp"
# 如果未设置服务器用户,则默认为当前用户。
serverUser = "user1"
serverName = "p2p_tcp"
secretKey = "abcdefg"
bindAddr = "127.0.0.1"
bindPort = 9001

这样,客户端2在远程连接的使用使用localhost:9001就能点对点访问服务了。

本教程鸣谢 zlf同学,撰写

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/993698
推荐阅读
相关标签
  

闽ICP备14008679号