frp实现内网穿透

一、frp是什么?
1、frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
二、使用步骤
1.需要两台服务器
云上服务器 1.15.180.135
本地服务器 192.168.1.48

2、下载frp 和go语言 (基于)
go语言地址:https://golang.org/doc/install#requirements
在这里插入图片描述
frp地址 https://github.com/fatedier/frp/releases
默认下载最新的
在这里插入图片描述
(1)通过自定义域名访问内网的 Web 服务
这个示例通过简单配置 HTTP 类型的代理让用户访问到内网的 Web 服务。
HTTP 类型的代理相比于 TCP 类型,不仅在服务端只需要监听一个额外的端口 vhost_http_port 用于接收 HTTP 请求,还额外提供了基于 HTTP 协议的诸多功能。

修改 frps.ini 文件,设置监听 HTTP 请求端口为 8081:

代码如下(示例):

云上服务器代码 1.15.180.135

[common]
bind_port = 7000
vhost_http_port = 8081

本地服务器代码

修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 1.15.180.135,local_port 为本地机器上 Web 服务监听的端口, 绑定自定义域名为 custom_domains。
local_port 因为我本地服务的端口是7070

[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 7070
custom_domains = www.yourdomain.com

启动
编写配置文件,先通过 ./frps -c ./frps.ini 启动服务端,再通过 ./frpc -c ./frpc.ini 启动客户端。如果需要在后台长期运行,建议结合其他工具使用,例如 systemd 和 supervisor。

如需后台启动可以这样
本地服务器
nohup /usr/local/frp/frp_0.38.0_linux_amd64/frpc -c /usr/local/frp/frp_0.38.0_linux_amd64/frpc.ini &
云上服务器
nohup /usr/local/frp/frp_0.38.0_linux_amd64/frps -c /usr/local/frp/frp_0.38.0_linux_amd64/frps.ini &

注意:/usr/local/frp/frp_0.38.0_linux_amd64 这个路径是你解压frp后的路径,我是放在/usr/local/frp_0.38.0_linux_amd64放这个路径,如果你不是这个路径,这里要换成你存放的对应路径
在这里插入图片描述
windows下安装frpc.ini
1、服务端frps还是在原先的云上服务器
在这里插入图片描述
2、删除frps有关文件 剩下在这里插入图片描述
3、编辑frpc.ini在这里插入图片描述
4、在Windows PowerShell启动
要进入到当前目录,不会自行百度
执行命令 ./frpc.exe -c ./frpc.ini
(2) 配置token才能访问
服务端frps.ini配置

[common]
bind_port = 10002
vhost_http_port = 11002
vhost_https_port = 12002

authentication_method = token
authenticate_new_work_conns = true
token = 123456

客户端配置frpc.ini配置

[common]
server_addr = x.x.x.x
server_port = 7000
authentication_method = token
authenticate_new_work_conns = true
token = 123456

[web]
type = http
local_port = 7070
custom_domains = www.yourdomain.com

(3) 配置udp

[common]
server_addr = x.x.x.x
server_port = 7000
authentication_method = token
authenticate_new_work_conns = true
token = 123456

[udp]
type = udp # 设置协议类型为UDP
local_ip = 127.0.0.1 # 设置本机IP
local_port = 24642 # 设置需要进行转发的端口,可根据需求进行修改
remote_port = 8888 # 设置转发到服务器的端口,可根据需求进行修改

(4) 通过 SSH 访问内网机器
这个示例通过简单配置 TCP 类型的代理让用户访问到内网的服务器。

在具有公网 IP 的机器上部署 frps,修改 frps.ini 文件,这里使用了最简化的配置,设置了 frp 服务器用户接收客户端连接的端口:

[common]
bind_port = 7000

在需要被访问的内网机器上(SSH 服务通常监听在 22 端口)部署 frpc,修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 1.15.180.135。修改你本地的frpc.ini文件

[common]
server_addr = 1.15.180.135
server_port = 7000

[ssh]
type = tcp
local_ip = 192.168.0.120
local_port = 22
remote_port = 6000

local_ip 和 local_port 配置为本地需要暴露到公网的服务地址和端口。remote_port 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。

分别启动 frps 和 frpc。

通过 SSH 访问内网机器,假设用户名为 test:

ssh -oPort=6000 test@x.x.x.x

frp 会将请求 1.15.180.135:6000 的流量转发到内网机器的 22 端口。

启动后
在这里插入图片描述在这里插入图片描述
注意,要在你公网把对应的端口放行。

(5)提供简单的文件访问服务
服务端参考上面不变即可

客户端frpc.ini 内容如下:

[common]
server_addr = x.x.x.x
server_port = 7000

[test_static_file]
type = tcp
remote_port = 18001
plugin = static_file
# 要对外暴露的文件目录 liunx和windows都可以
plugin_local_path = D:/test
# 用户访问 URL 中会被去除的前缀,保留的内容即为要访问的文件路径
plugin_strip_prefix = static
plugin_http_user = abc
plugin_http_passwd = abc

分别启动 frps 和 frpc。

通过浏览器访问 http://x.x.x.x:18001/static/ 来查看位于 D:/test 目录下的文件,会要求输入已设置好的用户名和密码。
第一次访问的时候要输入账号密码,是刚才我们配置的abc
在这里插入图片描述
(6)为本地 HTTP 服务启用 HTTPS
6.1 首先先在frps.ini增加端口
在这里插入图片描述
注意:要在公网把4430的端口开放,后面要用到。

6.2.下载https证书
这里证书有两种方式选择
(1)阿里云的https证书下载
(2)自签https证书。(没钱买https证书可以选择自签的方式)
第一种在这里插入图片描述
点下载在这里插入图片描述
第二种自签方式可以看我这篇文章
自签https证书

6.3启动frpc客户端
把对应的证书放到frpc目录上在这里插入图片描述

[common]
server_addr = 1.15.180.135
server_port = 7000

[test_htts2http]
type = https
custom_domains = frps.zhananclub.com

plugin = https2http
plugin_local_addr = 127.0.0.1:4401

#http证书相关的配置
plugin_crt_path = ./8373507_frps.zhananclub.com.pem
plugin_key_path = ./8373507_frps.zhananclub.com.key
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp

分别启动frps和frpc客户端(怎么启动可以看我上面的教程)
在这里插入图片描述在这里插入图片描述
启动完演示下在这里插入图片描述
如果是自签的配置如下:在这里插入图片描述

这三个是你自签完会自动生成的文件,把对应的文件移到这个目录即可,然后修改下对应frpc.ini配置的路径

[common]
server_addr = 1.15.180.135
server_port = 7000

[test_htts2http]
type = https
custom_domains = frps.zhananclub.com

plugin = https2http
plugin_local_addr = 127.0.0.1:4401

#http证书相关的配置
plugin_crt_path = ./server.crt
plugin_key_path = ./server.key
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp
————————————————

分别启动frps和frpc后(怎么启动可以看我上面的教程)在这里插入图片描述在这里插入图片描述
在这里插入图片描述

(7) 使用 systemd更加便捷的启动frps客户端
7.1 linux安装systemd
如Linux服务端上没有安装 systemd,可以使用 yum 或 apt 等命令安装 systemd。

# yum
yum install systemd
# apt
apt install systemd

7.2使用文本编辑器
如 vim 创建并编辑 frps.service 文件。
vim /etc/systemd/system/frps.service
写入内容

[Unit]
#服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/frp/frp_0.38.0_linux_amd64/frps -c /usr/local/frp/frp_0.38.0_linux_amd64/frps.ini

[Install]
WantedBy = multi-user.target

注意:这里要把ExecStart 改为你frp对应的安装路径,我的是安装在/usr/local/frp/frp_0.38.0_linux_amd64

7.3运行启动
#启动frp
systemctl start frps
#停止frp
systemctl stop frps
#重启frp
systemctl restart frps
#查看frp状态
执行systemctl status frps
出现下面界面表示设置成功在这里插入图片描述
置 frps 开机自启。
ystemctl enable frps在这里插入图片描述
以后要启动frps就简单了。

个人搭建项目代码地址:
https://github.com/hongjiatao/spring-boot-anyDemo

欢迎收藏点赞三连。谢谢!有问题可以留言博主会24小时内无偿回复。

总结
后期再更新frp其他实现内网穿透的教程

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

net1193379199

您的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值